315 Views
February 21, 25
スライド概要
LF AI & Data Japan Regional User Group (Japan RUG) のキックオフイベント(2025/02/18) 登壇資料
概要:三菱電機では、産業用ロボット、自動車、ビル設備、家電など幅広い分野の機器を手掛けています。これらの機器は必ずしも高い処理能力を有しているわけではないので、限られたリソースでもAIを実行できるコンパクト化技術の開発に取り組んでいます。独自技術は「Maisart」としてブランド化し事業展開する一方、ディープラーニングフレームワーク「PyTorch」や深層学習コンパイラ「Apache TVM」といったOSSを活用したAIのコンパクト化技術にも取り組んでいます。本セッションでは、OSSコミュニティへのコントリビューションを通じて得た知見や、OSSを活用したAIのコンパクト化の手法についてご紹介します。
https://community.linuxfoundation.org/events/details/lfhq-lf-ai-data-foundation-presents-lf-ai-amp-data-japan-rug-kick-off/
Deep learning compiler, PyTorch, Apache TVM.
三菱電機におけるAIのコンパクト化に 向けたOSS活用とOSSコミュニティ活動 三菱電機株式会社 IoTシステム基盤技術部 情報技術総合研究所 エッジソフトウエア基盤技術グループ 主任研究員 平森将裕 2025/02/18 ©Mitsubishi Electric Corporation 1
自己紹介 • 三菱電機の研究開発部門に2017年より所属 • エッジデバイスでAIを動作させるためのAI実装技術に関する研究開発を行う 【OSS(オープンソースソフトウェア)コミュニティ活動】 • コミッタ※ • Apache TVM (AIコンパイラ) • Hummingbird (AIコンパイラ) • コントリビュータ※ LinkedIn: @masahiro-hiramori GitHub: @mshr-h • PyTorch (ディープラーニングフレームワーク) • torch.compileのApache TVMバックエンドに関するコントリビュート →PyTorch Contributor Award 2024ノミネート(イノベータ部門) • 個人プロジェクト • mshr-h/vscode-verilog-hdl-support • Visual Studio Code向けハードウェア記述言語(ディジタル回路設計用の言語) の拡張機能でデファクトスタンダード(600万DL、100万インストール) ©Mitsubishi Electric Corporation ※ ・コミッタ コードの修正や新機能の追加権限を持つ人。 ・コントリビュータ コードの修正、ドキュメントの改善などの形で プロジェクトにコントリビュート(貢献)する人。 2
本日伝えたいこと • OSSコミュニティにどのように参加するか • OSSコミュニティ活動をどのように広げるか ©Mitsubishi Electric Corporation 3
アジェンダ • 三菱電機のAI技術 • 私のOSSコミュニティ活動の歴史 • 2020~2021年:Apache TVMと出会い、初めてコントリビュートする • 2022~2023年:Hummingbirdと出会い、コミッタになる • 2024年:Apache TVMでコミッタになる • 2024年:PyTorchへ活動を広げる • OSS活動のマインドセット ©Mitsubishi Electric Corporation 4
アジェンダ • 三菱電機のAI技術 • 私のOSSコミュニティ活動の歴史 • 2020~2021年:Apache TVMと出会い、初めてコントリビュートする • 2022~2023年:Hummingbirdと出会い、コミッタになる • 2024年:Apache TVMでコミッタになる • 2024年:PyTorchへ活動を広げる • OSS活動のマインドセット ©Mitsubishi Electric Corporation 5
三菱電機のAI技術 「Maisart(マイサート)」 機器・エッジをスマート化し、システムを進化させ続けるAI ∇ 機器の知見を活かしたコンパクト性 ∇ ユーザを支える高信頼性 ディープラーニング ビッグデータ分析 知識処理 ジェネレーティブ メタヒューリスティクス コンパクトかつ マルチタスクな推論 ドメイン知識を活用した オンラインエッジアナリ ティクス 信頼性・説明性を持つ AIを用いた 高度知識処理 幅広いユーザの高度な 機器作業を容易化する 対話型AI技術 機器の知見を活用した 探索効率化 認識・識別 原因推定 予兆検知 最適制御 自動化 2017年5月に機器・エッジをスマート化するAI技術として 技術ブランド「Maisart」を発表 Maisart: Mitsubishi Electric’s AI creates the State-of-the-ART in technology ©Mitsubishi Electric Corporation 6
三菱電機のAI技術 「Maisart(マイサート)」 事例紹介 コンパクトなAI 軽量かつ高精度な異常検知技術 生産現場等で要求されるシビアな検査精度と 処理負荷を両立する異常検知AI 軽量かつ高精度な異常検知AIの開発 ① 画像収集 ② 学習 工程 AI ③ 評価 生成AIコンパクト化手法 既存手法を包括する汎用モデルでパラメータ削減 従来、様々なコンパクト化手法 が提案されていた(LoRA*、 LoKr* 、LoNK*など) AI 汎用モデル 精度 ■% AIによる異常検査方式を導入・運用する上で発生する 人手作業の軽減 SuperLoRA*:既存のコンパク ト化手法を包括する汎用モデル を開発。モデル探索が容易になり、 Vision系モデルでパラメータ数 1/3~1/10に。 要求精度に達するまで試行錯誤が続く 導入・運用時に生じる人手作業を軽減する技術の開発 ©Mitsubishi Electric Corporation * LoRA、LoKr、LoNK、SuperLoRA 低コストで大規模モデルを最適化する手法 7
アジェンダ • 三菱電機のAI技術 • 私のOSSコミュニティ活動の歴史 • 2020~2021年:Apache TVMと出会い、初めてコントリビュートする • 2022~2023年:Hummingbirdと出会い、コミッタになる • 2024年:Apache TVMでコミッタになる • 2024年:PyTorchへ活動を広げる • OSS活動のマインドセット ©Mitsubishi Electric Corporation 8
Apache TVMとの出会い • 2018年4月 AI関連の研究開発プロジェクトに従事 • AIを組込み機器へ実装するための技術を開発 • AIの領域では、開発に必要なソフトウェア(e.g. ディープラーニングフレームワーク)はOSSコミュニティで 活発に開発されていることを知る • 2020年5月 Apache TVMと出会う • Apache TVM: TensorFlowやPyTorchなどのディープラーニングフレームワークで作成したAIモデ ルを、CPU、GPUなどのハードウェア上で効率的に実行できるようにコンパクト化(最適化・変換)するソフ トウェア。AIコンパイラと呼ばれる。 TensorFlowモデル PyTorchモデル Apache TVM 最適化 変換 デバイス向け 実行ファイル ハードウェア (CPU, GPU) 機器・エッジ ©Mitsubishi Electric Corporation 9
独自のAIコンパイラ基盤を開発 • 2020年7月 独自のAIコンパイラ基盤をApache TVMベースに開発 • Caffe-SSDモデルを変換可能とする拡張機能(Caffe-SSD変換部)をApache TVMに追加 • 従来比(ディープラーニングフレームワークCaffe)でメモリ使用量38%削減、処理時間57%短縮 AIコンパイラ基盤 Caffe-SSDモデル Apache TVM Caffe-SSD 変換部 デバイス向け 実行ファイル ハードウェア (CPU, GPU) 機器・エッジ ©Mitsubishi Electric Corporation 10
Apache TVMへコントリビュートを検討 • 2020年7月 独自のAIコンパイラ基盤をApache TVMベースに開発 • Caffe-SSDモデルを変換可能とする拡張機能(Caffe-SSD変換部)をApache TVMに追加 • 従来比(ディープラーニングフレームワークCaffe)でメモリ使用量38%削減、処理時間57%短縮 AIコンパイラ基盤 Caffe-SSDモデル Apache TVM Caffe-SSD デバイス向け 実行ファイル 変換部 ハードウェア (CPU, GPU) 機器・エッジ • せっかく作った拡張機能を、世界中で使ってもらいたい • コントリビュート(貢献)したら自分もコミュニティの一員になれるかも →Apache TVMへの拡張機能のコントリビュートを検討 ©Mitsubishi Electric Corporation 11
コントリビュートの社内承認を得る • 2021年8月 社内で承認を得る • コントリビュートに関する手続きは社内で整備されていなかった • 学会発表・論文投稿の承認を得る手続きを流用して、コントリビュートの承認を得る ©Mitsubishi Electric Corporation 12
Apache TVMへの初のpull requestを提出 • 2021年8月 社内で承認を得る • コントリビュートに関する手続きは社内で整備されていなかった • 学会発表・論文投稿の承認を得る手続きを流用して、コントリビュートの承認を得る • 2021年9月 初めてpull requestを出す • 10日後にレビューコメントが来た • コードを修正してコメントに返信したが、その後コミュニティからの反応が無い • なぜ? → 拡張機能の有用性をアピールできていなかった ©Mitsubishi Electric Corporation 13
カンファレンス発表にてアピール • 2021年12月 Apache TVMコミュニティ主催のカンファレンス「TVMCon 2021」で発表 • Caffe-SSD Inference on Edge Device Using TVM and Hybrid Script • 拡張機能の効果を定量的に示した↓ 左:処理時間の比較、右:メモリ使用量の比較 ©Mitsubishi Electric Corporation 14
Apache TVMへのpull requestがマージされる • 2021年12月 Apache TVMコミュニティ主催のカンファレンス「TVMCon 2021」で発表 • Caffe-SSD Inference on Edge Device Using TVM and Hybrid Script • 拡張機能の効果を定量的に示した↓ 左:処理時間の比較、右:メモリ使用量の比較 • 2週間後、pull requestがマージされた • 三菱電機からApache TVMに対する初のコントリビュート ©Mitsubishi Electric Corporation 15
次に何を目指すか • 目標:Apache TVMのコミッタになりたい • Apache TVMは規模が大きなコミュニティ • メンテナ15人、コミッタ32人(当時) • まずは小さなコミュニティで中心的なポジション(e.g. コミッタ)になり、経験を積んでから大きなコ ミュニティへチャレンジした方がよさそう • スモールステップを刻む • どのコミュニティがよいのだろうか? • Apache TVMとの親和性が高い • メンテナ・コミッタは2~3人程度 ©Mitsubishi Electric Corporation 16
アジェンダ • 三菱電機のAI技術 • 私のOSSコミュニティ活動の歴史 • 2020~2021年:Apache TVMと出会い、初めてコントリビュートする • 2022~2023年:Hummingbirdと出会い、コミッタになる • 2024年:Apache TVMでコミッタになる • 2024年:PyTorchへ活動を広げる • OSS活動のマインドセット ©Mitsubishi Electric Corporation 17
次に活動するコミュニティを探す • 当時のAIコンパイラ基盤は、ディープラーニング系モデルのみに対応 • 社内で使われている機械学習系モデル(Scikit-learnやXGBoost)には非対応 ディープラーニング系 Apache TVMは対応 モデル TensorFlowモデル PyTorchモデル AIコンパイラ基盤 Apache TVM Scikit-learnモデル ©Mitsubishi Electric Corporation 実行ファイル ハードウェア (CPU, GPU) XGBoostモデル 機械学習系モデル デバイス向け 機器・エッジ Apache TVMは非対応 18
Hummingbirdと出会う • Hummingbird: 機械学習系モデルを行列演算形式(PyTorch形式など)に変換するソフトウェア • 変換後のPyTorch形式はApache TVMの入力にできる →Apache TVMとの親和性〇 • Microsoftリサーチプロジェクトで、メンテナは2人 →小さなコミュニティ〇 ディープラーニング系 モデル TensorFlowモデル AIコンパイラ基盤 PyTorchモデル Scikit-learnモデル XGBoostモデル Apache TVM Hummingbird PyTorch形式 デバイス向け 実行ファイル ハードウェア (CPU, GPU) 機器・エッジ 機械学習系モデル ©Mitsubishi Electric Corporation 19
Hummingbirdへの初コントリビュート • HummingbirdのCIパイプライン※では、Apache TVMとの結合テストを実行 • →Apache TVMの知識が生かせそう • CIパイプラインを調査 • →テストで使用するApache TVMのバージョンが古いことに気付く • 2022年5月 Apache TVMのバージョンアップデートのpull requestを投稿、マージされた • 小さなコントリビューション ※CIパイプライン リポジトリのソースコードが変更されるたびに、ビルド、テスト、解析などを自動で実行する仕組み ©Mitsubishi Electric Corporation 20
Hummingbirdへのコントリビューションを継続 • 2022年6月~ CIパイプラインをひたすら改善 • CIパイプラインを見ると改善の余地があることに気づく • 実行環境(Windows, Linux, macOSのバージョン)が古い • 依存ライブラリのインストール手順やバージョンが古い • 修正のpull requestを20件出した • 小さなコントリビューションを積み重ねる • CIパイプライン関連のpull requestでレビュー依頼されるようになる • コミュニティから「この人はCIパイプラインに詳しい人」と認識される • 2023年1月 新機能追加のコントリビューション • ベイズ混合ガウスモデル(BGMM)に対応するための機能追加を実装し、pull requestを提出 • 大きなコントリビューション ©Mitsubishi Electric Corporation 21
Hummingbirdのコミッタに就任 • 2024年6月 突然コミッタになる • pull requestのマージには1人以上のメンテナ・コミッタからの承認が必須 • メンテナ2人のうち1人が長期休暇中に、pull requestが提出されたため、承認する人がいない • 「interesaat(もう1人のメンテナ)が休暇中なので代わりに承認してください」 • 「あなたをコミッタにしました。pull requestを承認してください。」 小さなコミュニティでコミッタ(中心的なポジション)になった ©Mitsubishi Electric Corporation 22
アジェンダ • 三菱電機のAI技術 • 私のOSSコミュニティ活動の歴史 • 2020~2021年:Apache TVMと出会い、初めてコントリビュートする • 2022~2023年:Hummingbirdと出会い、コミッタになる • 2024年:Apache TVMでコミッタになる • 2024年:PyTorchへ活動を広げる • OSS活動のマインドセット ©Mitsubishi Electric Corporation 23
Apache TVMのコミッタを目指す • 小さなコミュニティ(Hummingbird、メンテナ2人)で中心的なポジション(コミッタ)になった • Apache TVMには40件のpull requestを提出しマージされたが、中心的なポジションなれてい ない • どうしたものか ©Mitsubishi Electric Corporation 24
Apache TVMのコミッタを目指す • 小さなコミュニティ(Hummingbird、メンテナ2人)で中心的なポジション(コミッタ)になった • Apache TVMには40件のpull requestを提出しマージされたが、中心的なポジションなれてい ない • どうしたものか • 他のApache TVMコミッタのpull request履歴を眺める • 全員、特定の領域でコントリビュートしている • pull requestの件数を増やせば、コミッタになれるわけではないと気付く • 大きなコミュニティでは、その人がどのような専門性を発揮してくれるか、が重要 • Apache TVMで私がコントリビュートできる領域を探す ©Mitsubishi Electric Corporation 25
Apache TVMによるAIモデルの変換フロー Apache TVM AIモデル ONNXモデル PyTorchモデル フロント エンド 中間表現 最適化 出力 CPU向け実行 最適化後の バックエンド ファイル 中間表現 コンパイラ GPU向け実行 ファイル ランタイム ハードウェア (CPU, GPU) 機器・エッジ ©Mitsubishi Electric Corporation 26
私がコントリビュートできる領域を探す 多くのコミッタはこの領域へコントリビュートしている →ほとんどが半導体チップベンダ所属、自社の半導体 チップをTVMで使えるようにするためにコントリビュート →三菱電機は半導体チップベンダではないので、ここへ コントリビュートするのは難しい Apache TVM AIモデル ONNXモデル PyTorchモデル フロント エンド 中間表現 最適化 出力 CPU向け実行 最適化後の バックエンド ファイル 中間表現 コンパイラ GPU向け実行 ファイル ランタイム ハードウェア (CPU, GPU) 機器・エッジ ©Mitsubishi Electric Corporation 27
私がコントリビュートできる領域を探す 多くのコミッタはこの領域へコントリビュートしている →ほとんどが半導体チップベンダ所属、自社の半導体 チップをTVMで使えるようにするためにコントリビュート →三菱電機は半導体チップベンダではないので、ここへ コントリビュートするのは難しい いろんな所属の人がコントリビュートしている →ここならコントリビュートできそう Apache TVM AIモデル ONNXモデル PyTorchモデル フロント エンド 中間表現 最適化 出力 CPU向け実行 最適化後の バックエンド ファイル 中間表現 コンパイラ GPU向け実行 ファイル ランタイム ハードウェア (CPU, GPU) 機器・エッジ ©Mitsubishi Electric Corporation 28
Apache TVMのフロントエンドにコントリビュート • フロントエンドに何をコントリビュートするか? • PyTorch ExportedProgramフォーマット • PyTorch 2.3で追加された新フォーマット • 開発途上でexperimentalな(実験的)機能という位置づけ • 今後PyTorchのデファクトスタンダードになりそう • ExportedProgramフロントエンドをコントリビュート • 14 pull request、 5000 LoC AIモデル ©Mitsubishi Electric Corporation Apache TVM ONNXモデル フロントエンド PyTorchモデル ExportedProgram ExportedProgram 形式 フロントエンド 中間表現 29
Apache TVMのコミッタに就任 • フロントエンドに何をコントリビュートするか? • PyTorch ExportedProgramフォーマット • PyTorch 2.3で追加された新フォーマット • 開発途上でexperimentalな(実験的)機能という位置づけ • 今後PyTorchのデファクトスタンダードになりそう • ExportedProgramフロントエンドをコントリビュート • 14 pull request、 5000 LoC →コントリビュートが認められApache TVMのコミッタになる コミッタ招待メール ©Mitsubishi Electric Corporation 30
アジェンダ • 三菱電機のAI技術 • 私のOSSコミュニティ活動の歴史 • 2020~2021年:Apache TVMと出会い、初めてコントリビュートする • 2022~2023年:Hummingbirdと出会い、コミッタになる • 2024年:Apache TVMでコミッタになる • 2024年:PyTorchへ活動を広げる • OSS活動のマインドセット ©Mitsubishi Electric Corporation 31
Apache TVMを軸にPyTorchへ活動を広げる • PyTorch torch.compile • PyTorch 2.0(2023年3月リリース)で追加された機能 • PyTorchモデルを実行時に最適化して高速化する • 最適化バックエンドはユーザが選択できる • NVIDIA TensorRT • Apache TVM ©Mitsubishi Electric Corporation 32
Apache TVMを軸にPyTorchへ活動を広げる • PyTorch torch.compile • PyTorch 2.0(2023年3月リリース)で追加された機能 • PyTorchモデルを実行時に最適化して高速化する • 最適化バックエンドはユーザが選択できる • NVIDIA TensorRT • Apache TVM • Apache TVMバックエンドを改善するコントリビューション • 1) Apache TVMで開発されているAutotuning(自動最適化機能)を、torch.compileユーザも使え るようにする • 2) 実行環境としてAarch64 LinuxとmacOSへ拡大 (これまではx86_64 Linuxのみ対応) → 2024 PyTorch Contributor Award(イノベータ部門)にノミネートされる ©Mitsubishi Electric Corporation 33
アジェンダ • 三菱電機のAI技術 • 私のOSSコミュニティ活動の歴史 • 2020~2021年:Apache TVMと出会い、初めてコントリビュートする • 2022~2023年:Hummingbirdと出会い、コミッタになる • 2024年:Apache TVMでコミッタになる • 2024年:PyTorchへ活動を広げる • OSS活動のマインドセット ©Mitsubishi Electric Corporation 34
OSS活動のマインドセット • 1) 今持っている技術を起点に、活動を広げる • Apache TVMで初めてコントリビュート → Hummingbirdで活動しコミッタになる • Apache TVMでコミッタになる → PyTorchにコントリビュートしてContributor Awardにノミネート • 2) スモールステップを刻む • 小さなコントリビュート(不具合修正) → 大きなコントリビュート(機能追加) • 小さなコミュニティ(Hummingbird) → 大きなコミュニティ(Apache TVM) LF AI&Data Japan RUGを一緒に盛り上げましょう! ©Mitsubishi Electric Corporation 35