AI・機械学習
上級

Apache TVM(ティーブイエム)

Apache Software Foundation が管理する深層学習コンパイラスタック。モデルの計算グラフを入力として受け取り、CPU・GPU・NPU・FPGA 等の多様なハードウェア向けに自動最適化されたコードを生成する。AutoTVM と Meta Schedule による自動チューニングが特徴。

0 回閲覧
0 いいね

Apache TVM とは

Apache TVM は 2018 年にワシントン大学の陳天奇(Tianqi Chen)らが開発した、深層学習モデル向けのオープンソースコンパイラスタックである。TensorFlow・PyTorch・ONNX 等のフレームワークからエクスポートされたモデルを入力とし、ターゲットハードウェアに特化した最適化コード を自動生成する。

コンパイルフロー

TVM のコンパイルは以下のパイプラインで処理される。

ステージ処理
フロントエンドTensorFlow/PyTorch/ONNX モデルを Relay IR に変換
グラフ最適化演算融合・定数畳み込み・レイアウト変換・量子化
テンソル式生成各演算をテンソル式(Tensor Expression)に分解
スケジューリングループ分割・タイリング・ベクトル化・並列化のスケジュール決定
コード生成ターゲットデバイス向けのネイティブコード出力

対応ハードウェア

TVM は業界最多クラスのハードウェアバックエンドをサポートする。

  • CPU: x86(AVX-512)、ARM(NEON/SVE)、RISC-V
  • GPU: NVIDIA(CUDA/cuDNN)、AMD(ROCm)、Intel(oneAPI)、Mali、Adreno
  • NPU/アクセラレータ: ARM Ethos-N、VTA(TVM の独自アクセラレータ)
  • FPGA: Xilinx Vitis AI、Intel OpenVINO 経由
  • ブラウザ: WebAssembly(WASM)経由でブラウザ上推論

この広範なハードウェアサポートにより、「一度書いたモデルをどこでも高速に動かす」というポータビリティを実現する。

AutoTVM と Meta Schedule

TVM の最大の差別化要因は 自動チューニング 機能である。

AutoTVM(第 1 世代)

  • テンソル演算のスケジュールパラメータ(タイルサイズ・ループ順序・アンローリング係数)を探索空間として定義
  • 実機上で数千パターンを実測し、最速の組合せを学習(XGBoost ベースのコストモデル)
  • 演算ごとに独立にチューニング

Meta Schedule(第 2 世代)

  • スケジュールルールをモジュラーに定義し、組合せ爆発を制御
  • 演算間の相互作用(融合の有無がタイリング戦略に影響)を考慮した全体最適
  • AutoTVM 比で 10-30% の追加高速化と 5-10 倍のチューニング時間短縮を達成

MicroTVM(組込み向け)

MicroTVM は TVM のサブプロジェクトで、OS なしの組込みデバイス(マイコン:Cortex-M、ESP32 等)向けの推論コードを生成する。

  • メモリフットプリント数十 KB の推論ランタイム
  • CMSIS-NN との統合によるARM Cortex-M 向け高速化
  • Arduino、Zephyr RTOS、FreeRTOS 上での動作実績

FAQ

Q1: TVM と ONNX Runtime の違いは?

ONNX Runtime は推論エンジンとして既存のバックエンド(cuDNN、TensorRT 等)を選択的に呼び出す方式。TVM は計算グラフを独自にコンパイルし、ターゲットハードウェア向けに最適化されたカスタムカーネルを生成する。TVM の方が最適化の自由度が高いが、セットアップとチューニングの手間がかかる。

Q2: TVM のチューニングにはどのくらい時間がかかるか?

モデルサイズとターゲットハードウェアに依存するが、ResNet-50 の全演算チューニングで 2-8 時間(GPU)、1-4 時間(CPU)が目安。Meta Schedule 導入後はチューニング時間が大幅に短縮された。チューニング結果はキャッシュ可能。

Q3: TVM は商用利用可能か?

Apache License 2.0 で公開されており、商用利用に制限はない。OctoML(現 OctoAI)が TVM ベースの商用最適化サービスを提供していたほか、複数の半導体メーカーが自社チップ向けの TVM バックエンドを開発している。