アナログ・テック 技術コラム

NPUや産業用PC、エッジコンピューティング、エッジAI、生成AIに関する技術情報や実装の考え方、最新トピックをアナログ・テックの視点で発信します。

Voyager SDKで始めるMetis AIPU ─ 環境構築から最初の推論までの流れを整理する

— Axelera AI(Metis AIPU)入門 第2回 —

 

前回は、Axelera AIのMetis AIPUとは何か、D-IMC(メモリ内演算)アーキテクチャの考え方を整理しました。今回からは実装編です。

どれだけ高性能なAIプロセッサでも、学習済みモデルをその上で動かすための開発環境が整っていなければ、現場では使えません。Metis AIPU向けにその役割を担うのが、統合ソフトウェアスタック「Voyager SDK」です。本記事では、Voyager SDKの全体像、導入方法、そしてModel Zooのモデルで最初の推論を動かすまでの流れを整理します。

なお、インストールコマンドの細かな引数やシステム要件の正確な値は、SDKのバージョンによって変わります。本記事は「何を・どの順で行うか」という流れの理解を目的とし、具体的なコマンドや要件は必ず最新の公式ドキュメントを参照してください。

1. Voyager SDKの全体像 ── 「ビルド環境」と「ランタイム環境」

Voyager SDKは、大きく2つの環境で構成されています。1つは、学習済みモデルをMetis AIPU向けに変換・最適化するビルド環境。もう1つは、変換したモデルを実際のアプリケーションの中で実行するランタイム環境です。

開発の流れも、この2段階に沿って進みます。まずビルド環境でモデルをコンパイル(デプロイ)し、AIPU向けの形式に変換する。次にランタイム環境で、そのモデルを推論パイプラインに組み込んで動かす。この「デプロイ → 推論」という2ステップが、Voyager SDKを使ううえでの基本の型になります。

2. 導入の前に ── 必要なものと、ハードウェアなしで試せる選択肢

Voyager SDKは、Metis AIPUを搭載したデバイス(M.2モジュールやPCIeカード)と組み合わせて推論を動かすことを前提としています。ホスト側は、x86・ARMのいずれのアーキテクチャにも対応しており、幅広いホスト環境で利用できる設計です。

重要なのは、AIPUハードウェアが手元になくても、まず試せるという点です。Voyager SDKには、ONNXモデルをホストのCPUで推論する仕組みが用意されており、AIPUを必要としないCPU推論から動作を確認できます。ハードウェアの調達前にソフトウェア側の流れを掴んでおきたい、という段階でも着手できます。

3. 導入方法は複数用意されている

Voyager SDKの導入方法は一つに限定されておらず、環境や好みに応じて選べます。リポジトリには、それぞれの手段に対応するスクリプトが用意されています。

  • Dockerコンテナで動かす:コンテナ起動用のスクリプト(launch-docker.sh)が用意されています。ホスト環境を汚さずに、統一された環境で素早く始めたい場合に向きます。

  • ホストにネイティブインストールする:インストールスクリプト(install.sh)や依存関係の導入スクリプト(install-dependencies.sh)、Makefile が用意されています。Dockerを介さず、ホスト上で直接動かしたい場合の選択肢です。

  • スタンドアロンのPythonパッケージ(pip)で導入する:単体のPython wheelによるインストールも提供されています。既存のPythonプロジェクトに組み込みやすい形です。

このように、Dockerに加えてネイティブインストールやpipによる導入も選べるため、Dockerは必須ではありません。どの方法を採るにせよ、対応バージョンや事前に必要なパッケージは公式ドキュメントで確認してください。

4. 2つのコマンドラインツール ── deploy.py と inference.py

Voyager SDKには、先ほどの「デプロイ → 推論」の2ステップにそのまま対応する、2つのコマンドラインツールが用意されています。

  • deploy.py:コマンドラインのデプロイツールです。モデルをMetis AIPU向けに変換・準備する工程を担います。

  • inference.py:コマンドラインの推論ツールです。デプロイ済みのモデルを使って実際に推論を実行します。

このほか、デプロイ済みモデルを実行するツールとして AxRunModel も用意されています。これは、DMAバッファ・ダブルバッファリング・複数コアの利用といった、ランタイムAPI(AxRuntime)が備える機能を使ってMetisハードウェア上でモデルを動かすためのものです。各ツールの具体的なオプションは、コマンドラインのヘルプや公式ドキュメントで確認できます。

5. Model Zooで「最初の推論」を動かす

では、最初の一歩はどう踏み出すか。自前のモデルをいきなり用意する必要はありません。Voyager SDKには、そのリリースで対応している学習済みモデルをまとめたModel Zooが用意されています。

流れとしては、Model Zooから対象のモデルを選び、deploy.py でMetis AIPU向けにデプロイし、inference.py で推論を実行する、という順序になります。まずはModel Zooの既存モデルで一通り「デプロイ → 推論」を体験し、SDKの動作とワークフローを掴むのが、最も確実な入り口です。利用できるモデルの一覧や指定方法は、リリースごとのModel Zooのドキュメントで確認してください。

Voyager SDKの開発フロー。学習済みモデルやModel Zooのモデルを、ビルド環境(deploy.py)でMetis AIPU向けにデプロイし、ランタイム環境(inference.py)で推論を実行する2ステップ

6. アプリケーションへの組み込み ── Pipeline Builder API

コマンドラインツールで動作を確認できたら、次は自分のアプリケーションへの組み込みです。Voyager SDKは、推論パイプラインをコードから構築するためのAPI群を備えています。

低レベルの AxRuntime は、パイプラインを手動で構築・設定・実行するためのPythonおよびC/C++ APIです。その上で、パイプラインを宣言的に組み立てるためのPipeline Builder APIのオペレータが用意されています。代表的なものは次のとおりです。

  • op.load('model.axm'):AIPU上でハードウェア推論を実行(デプロイ済みモデル形式 .axm を読み込む)

  • op.onnx_model('model.onnx'):CPUでの推論(AIPU不要)

  • op.load('pipeline.axe'):可搬性のあるパイプラインパッケージ(.axe形式)を読み込む

  • op.seq() / op.par() / op.foreach():処理を直列・並列・カスケード(対象ごと)に組む

  • op.tracker(algo='bytetrack'):トラッキング(ByteTrack・OC-SORT・SORT・TrackTrackに対応)

推論結果は、DetectedObject(検出)・PoseObject(姿勢)・SegmentedObject(セグメンテーション)・TrackedObject(追跡)・Classification(分類)といった型付きオブジェクトとして受け取れます。アプリケーション側からパイプラインの画像と推論メタデータを直接読み取りたい場合は、高レベルの InferenceStream を使います。

既存のGStreamerパイプラインに組み込みたい場合は、Metisの推論をGStreamer内で扱うためのプラグインが用意されています。C/C++から推論とパイプライン構築をアプリに直接組み込む場合は、AxInferenceNet のAPIが利用できます。

ただし、注意点があります。この Pipeline Builder API は、現状では Experimental(実験的) の位置づけです。op.load()op.onnx_model() といったコアのオペレータ自体は安定版とされていますが、カスケード処理の op.foreach() やストリーミングの InferenceStream などは開発中の段階にあります。試作・評価には十分活用できますが、本番システムへの採用は、最新のリリース状況を確認したうえで慎重に判断することをおすすめします。

7. Voyager SDKの環境構築でつまずきやすいポイント

最後に、最初の環境構築で迷いやすい点を整理します。第一に、導入方法を最初に一つ決めること。Docker・ネイティブ・pipのどれで進めるかを決めずに混在させると、依存関係の切り分けが難しくなります。第二に、まずCPU推論やModel Zooで動作を確認してから、AIPU・自前モデルへ進むこと。問題が起きたときに、ハードウェア・モデル・環境のどこが原因かを切り分けやすくなります。第三に、コマンドの正確なオプションや対応バージョンは記憶に頼らず、その都度公式ドキュメントで確認することです。

おわりに

整理すると、Voyager SDKの入り口は次の3点です。第一に、SDKは「ビルド環境(デプロイ)」と「ランタイム環境(推論)」の2段構成であること。第二に、導入はDocker・ネイティブ・pipから選べ、AIPUがなくてもCPU推論で試せること。第三に、deploy.pyinference.py、そしてModel Zooを使えば、最初の「デプロイ → 推論」を最短で体験できること。

次回(第3回)では、Model Zooのモデルではなく、自分で用意した学習済みモデルをMetis AIPUにデプロイする流れ ── 変換・最適化・推論の具体的なステップを整理します。

本記事のシリーズ