Skip to content

Latest commit

 

History

History
48 lines (38 loc) · 2.88 KB

8_4_porting.md

File metadata and controls

48 lines (38 loc) · 2.88 KB

移植

ライブラリについて理解を深める方法の1つは、ライブラリを移植してみることです。  そして、こういうインタフェースだったら使いやすいのにと思うように書き換えてみることです。  移植先のボード(CPU、GPU, OS,言語、ライブラリのバージョンなど)で動作するようにすることです。  移植先の特有のデータ形式に変換しdeployすることです。 pytorch のモデルから、TensorRTのモデルに変換する事で、どれくらい速くなるのかを試します。  画像サイズによって処理の時間がどう変化するのかを確かめます。  手元にある3Dカメラとの組合せで動作するを確認することは、arXivの論文では見つけられないことを見つけることになります。 

ボードの変更

NVIDIAのGPUのあるPCから、NVIDIAのJetson AGX Orinに移植するのも立派な移植です。 Dockerfileを書きながら、移植を行いましょう。 Dockerfile の記述、pyproject.toml の記述で、依存性が明確にできます。 自動化テストも書いておきましょう。

例:Nvidia のJetPackのバージョン変更

Jetsonのhost環境のjetpack の変更(インストール作業)を行なったのちに、動作を確認します。 Docker環境で開発しているのであれば、

FROM nvcr.io/nvidia/l4t-pytorch:r35.2.1-pth2.0-py3

の行を書き換えればOKなはずです。

TensorRTへの移植

Cuda デバイスへの移植の際に実行速度を早めるためには、オリジナルのモデルをTensorRTのモデルに変換する。 このことによって、実行速度が改善する。

https://github.com/NVIDIA-AI-IOT/torch2trt

OpenVinoへの移植

Intelの提供しているOpenVinoの枠組みは、複数の種類のIntelデバイスへのdeployが可能である。 対象: インテル製の CPU や GPU、VPU、FPGA OpenVinoのすばらしい点は、GPUなどをもっていないマルチコアのIntel CPUでも実行できるという点にある。

mediapipeのopenvinoへの実装例では、手のランドマークの検出が、ノートパソコンのCPUでも応答性よく動作する点にある。

https://docs.openvino.ai/2024/openvino-workflow/model-preparation/convert-model-to-ir.html

mediapipeのopenvinoへの実装例

https://docs.openvino.ai/2024/ovms_docs_mediapipe.htmlo

移植作業を行うことの効果

  • 既存のフレームワーク(例:Pytorch、TensorRT)の使い方に詳しくなります。
  • cuda関連も含めて、機械学習系のライブラリはだいぶ癖があります。
  • 例:いっけん使っていないように見えるimport 文だが、消すと動作しなくなるスクリプトとかがある。 import pycuda.autoinit
  • with torch.no_grad():