TURINGではEdgeplanT1(JetsonTX2)を用いた自動運転システムの実装を行いました。その過程で推論周りのボトルネックを解消した話をしました。 https://www.youtube.com/watch?v=nMcfN-JH048
車載エッジデバイスにおけるAI実装Section 00中村 優斗TURING 株式会社インターン東京大学工学部電子情報工学科 B3
View Slide
発表者- 中村優斗 (@yutyan_ut)- 東大電子情報工学科 B3- TURINGではCAN(車載ネットワーク)の解析・カメラ周りのプログラムなど- インターン中です- 低レイヤが好きSection 00 - 00COMPANY PROFILE
TURINGについて- 自動運転EVの完成車を製造・販売 することを目的として創業- 創業1年で公道実験- 自動運転車で日本初の北海道一周- 2022年度内に改造車を販売- スローガン「We Overtake Tesla」Section 00 - 00COMPANY PROFILE
製品に搭載するシステムのAIへの最適化について話しますSection 00 - 00作ったモデル、本番環境で使える?
Section 00 - 01現在の自動運転の概要JPEGが大量に送られてくる
Section 00 - 01推論部分を詳しく見る色ごとのデータにデコードmodel推論結果(経路等)画像をmodelの入力に適したアングルに変形 jpeg画像
Section 00 - 01実際に起こった問題- デコードが遅い- 画像変形が遅い- 推論速度が遅い要するに…全部ダメ。FPSが5しか出ない😨 実験しているときのホワイトボード ↑FPS5と出ている
Section 00 - 01何が原因か?- 使用しているデバイス (Jetson TX2を搭載した車載用デバイス Edgeplant T1)- そもそもTX2が古くて性能が低い (2017年発表)- GPUはGTX1080世代でコア数10分の1, CPUはラズパイ以下- もちろんメリットもあった- 入手性が良い(Amazonでポチればすぐ届く)- 車載グレードを満たしたデバイス- 消費電力が小さい(充電をほぼ気にしないで良い)
Section 00 - 01CPUから徹底的にタスクを奪った!- JPEGのデコード → NvJPEG (ハードウェアアクセラレータ)- 画像の変形 → NPP (GPU)- 推論 → TensorRT (GPU)
Section 00 - 01JPEGデコード- JPEGのデコードはめっちゃ計算が多い- ランレングス・ハフマンの解凍- DCT(離散コサイン変換)の逆変換- 並列化が出来る計算ではある- Jetson系にはNvJPEGという名の専用ハードウェアが搭載- Jetson multimedia APIを使用することで圧倒的高速化
Section 00 - 01画像の変換- 画像の座標の変換 = 行列の計算- 機械学習と同様にGPUで高速に計算が可能- NPP (NVIDIA 2D Image And Signal Performance Primitives) を使用して高速化
Section 00 - 01推論- TensorRTを使用することでモデルを最適化- onnx to TensorRT Engine- ハードウェアの使用も効率的になって嬉しい
Section 00 - 01結果
- 画像が絡む処理は基本めちゃくちゃ重い ! + 推論だけがボトルネックじゃないこともある- 家のデスクトップ(Ryzen7 + RTX3080など) で出来ても、実運用出来るか?は場合による- 特に入手性・耐久性などの観点から性能が低くなりがちなエッジデバイスへの適用には工夫が必要になる- TensorRTはもちろんnvjpegやNPPは通常のNVIDIA GPUでも使用可能- 開発段階からアクセラレートしてイテレーションを早く回せる!- ※移植性やCUDAのバージョン問題もあるので適用するかは要検討Section 00 - 01教訓
- 今日お話した内容は、 1月以降にTURING Tech Blogにて詳しく紹介される予定です!- https://zenn.dev/p/turing_motors- 走行データベース構築の話なども掲載予定Section 00 - 01Appendix