一. 概述
此篇文章為 eIQ 系列的延伸應用,相信各位已經對於 NXP 所開發的 eIQ 機器學習開發環境 有一定程度上的認識了!! 並於本系列的上兩篇文章介紹了 GStreamer 與 NNStreamer 的用法,若尚未理解的夥伴,請點選上述連結溫習一下 !! 本文章將要介紹的 NNShark ,與先前的 NNStreamer 或 GStreamer 大有不同, NNShark 是一套專門分析 i.MX8 硬體資源的工具 !! 這裡分享給讀者們作參考與應用 !!
如下圖所示,本系列是隸屬於 機器學習開發環境 eIQ 之 應用層(Application Layer) 中。而本篇將介紹 “eIQ NNShark介紹”。
若新讀者欲理解更多人工智慧、機器學習以及深度學習的資訊,可點選查閱下方博文
大大通精彩博文 【ATU Book-i.MX8系列】博文索引
eIQ NNStreamer 系列博文-文章架構示意圖
二. NNShark 介紹
NNShark 是一套分析工具(profiling tool),由 NNStreamer 改良 GstShark 工具而成。此工具能夠使用在 NXP i.MX8M Plus 平台中,並分析 CPU(A53) / 2D GPU(GC520L) / 3D GPU(GC7000UL) / NPU(VIP8000) 等各個硬體資源所耗費多寡。
◎ 如何安裝 NNShark ?
NNShark 提供作業系統 Ubuntu / Debian 的安裝說明,僅須要依照該網站指令即可安裝完成。至於 i.MX8 平台則是內建置入 NNShark 分析工具,故使用者直接使用即可。
◎ 如何使用 NNShark ?
在安裝完成 NNShark 後,直接開啟 終端機(Terminal) 並輸入指令即可完成 !!
(1) 修改 Uboot
在啟動系統時,於 log 顯示 “Hit any key to stop autoboot” 後,按下任意鍵,即可進入 uboot !
輸入 editenv mmcargs 指令後,即可添加下列 uboot變數。
$ galcore.gpuProfiler=1 galcore.powerManagement
輸入 saveenv 指令後,並輸入 boot 重啟系統
(2) 設定環境變數
進入系統後,即可設置環境變數(environment variables)
$ export GST_DEBUG="GST_TRACER:7"
$ export GST_TRACERS="live"
(3) 運行範例
成功運行範例後,即會顯示分析畫面,如同下圖所示 ; 依序可以看到 CPU 與 GPU 的使用量,以及各硬體所配置 DDR 的用量,以及所耗費的功耗。
$ export MODEL=$(pwd)/ssd_mobilenet_v2_coco_quant_postprocess.tflite
$ export LABELS=$(pwd)/coco_labels.txt
$ gst-launch-1.0 --no-position v4l2src device=/dev/video3 ! \
video/x-raw,width=640,height=480,framerate=30/1 ! \
tee name=t t. ! queue max-size-buffers=2 leaky=2 ! imxvideoconvert_g2d ! \
video/x-raw,width=300,height=300,format=RGBA ! videoconvert ! \
video/x-raw,format=RGB ! tensor_converter ! \
tensor_filter framework=tensorflow-lite model=${MODEL} custom=Delegate:External,ExtDelegateLib:libvx_delegate.so ! \
tensor_decoder mode=bounding_boxes option1=tf-ssd option2=${LABELS} \
option3=0:1:2:3,50 option4=640:480 option5=300:300 ! \
mix. t. ! queue max-size-buffers=2 ! \
imxcompositor_g2d name=mix sink_0::zorder=2 sink_1::zorder=1 ! waylandsink
三. 結語
由上述介紹的概念與實作方式,就可以透過 NNShark 來解析所花費的硬體資源,像是 CPU 與 GPU 佔多少使用資源,以及各硬體的記憶體傳輸速度等等。雖然本篇文章是搭配 NNStreamer 作應用,而讀者亦可搭配任何程式來查看資源,像是 C 或 Python 的應用程序。而系列已經講述完 NNStreamer 與 NNShark 的基本用法。若有不理解的地方,歡迎留言討論,謝謝 !! 若欲查詢 i.MX8M Plus 的功耗、電壓的狀態,可參考官方文件 i.MX Power Measurement Tool !! 而此工具需要配合 i.MX 8M Plus Evaluation Kit enabling Power Measurement 的開發板,未來有機會再向各位介紹 !!
四. 參考文件
[1] 官方文件 - i.MX8 GStreamer User Guide pdf
[2] 第三方資源 - GStreamer 維基百科
[3] 第三方資源 -什么是Gstreamer?
[4] 官方文件 - i.MX Machine Learning User's Guide pdf
[5] 官方文件 - NNStreamer Github
[6] 官方文件 - NNStreamer
如有任何相關 eIQ NNStreamer 技術問題,歡迎至博文底下留言提問 !!
接下來還會分享更多 eIQ NNStreamer 的技術文章 !!敬請期待 【ATU Book-i.MX8 系列 - eIQ NNStreamer】 !!
參考來源