こんにちは、
私は nnstreamer パイプラインを使用して、i.MX8MP (scarthgap 6.6.23) 上のビデオ ストリームで検出モデルを実行します。
問題なく動作します。しかし、ランダムな遅延(約 10 秒から数分)の後、推論の出力速度が突然大幅に低下します(通常、当社独自のモデルでは 15 FPS から 0.3 FPS に低下します)。
同時に、2 番目の GPU (GC8000) の負荷が 100% に上昇し、パイプラインが停止するまで 100% のままになることがわかります。
また、ウェストンのデスクトップ画面に奇妙な表示バグがあることにも気付きましたが、パイプラインが停止するとこれも消えます。
IP 上の理由からモデルを共有することはできませんが、Kaggle のhttps://www.kaggle.com/models/kaggle/yolo-v5?select=1.tfliteで公開されている Yolov5 tflite モデルを使用してバグを再現することができました。
問題を再現する方法:
# Download the model from the Kagle website (https://www.kaggle.com/models/kaggle/yolo-v5?select=1.tflite)
# this provides with the 1.tflite file
# Sorry, I did not find any way to get a direct download url on kaggle's website. You'll have to download it manually from you browser (no need to register on kaggle's website)
# Optionally: Enable VX Caching
export VIV_VX_CACHE_BINARY_GRAPH_DIR=/root/.cache/vxdelegate/
export VIV_VX_ENABLE_CACHE_GRAPH_BINARY=1
# Optionally: Enable nnshark
export GST_DEBUG="GST_TRACER:7"
export GST_TRACERS="live"
# Run the pipeline
gst-launch-1.0 videotestsrc \
! video/x-raw, format=YUY2, width=320, height=320, framerate=20/1 \
! queue max-size-buffers=1 max-size-bytes=0 max-size-time=0 leaky=downstream \
! videoconvert n-threads=4 \
! video/x-raw, format=RGB \
! tensor_converter set-timestamp=false \
! tensor_transform mode=dimchg option=0:2 \
! tensor_transform mode=arithmetic option=typecast:float32,div:255 \
! tensor_filter framework=tensorflow-lite model=1.tflite custom=Delegate:External,ExtDelegateLib:libvx_delegate.so \
! fakesinkこの設定では、最初はパイプラインが約 0.85 FPS の速度で推論し (nnshark で報告された推論時間は 1.195 秒)、GC8000 の負荷は 10 ~ 40% になります。
数分後 (私の設定では約 2 分 30 秒後)、バグが発生します。FPS が約 0.05FPS (推論時間 19.181 秒) に低下し、GC8000 の負荷が 100% で停止します。
これは次のようにCAN観察できます。
ご協力いただければ幸いです。よろしくお願いします!
私自身の質問に対する自己回答:
NPU に負荷が集中すると、プロセッサがかなり熱くなります。
何らかの理由で、私の開発ボードにはヒートシンクが装備されていませんでした。
プロセッサにヒートシンクを取り付けると、問題は解決したようです。実稼働環境で使用する場合はファンの追加も必要になる場合があります。確認が必要
SO、現時点では、私の問題は解決したと考えています。
願わくば、この投稿が同じ問題を抱えている誰かの助けにCAN幸いです。