開発ワークフロー
このページは、SiMa.aiとNeatを日常的にどのように使用するかを示す概要図です。各ステップは、詳細なページへのリンクとなっており、必要に応じてそちらを参照できます。
ループ
典型的な Neat 開発サイクルは次のようになります。
- インストール — ホストまたはデバイスに、
sima-neatパッケージと、必要に応じてpyneatPythonバインディングをインストールします。 - Hello Neat を試してみましょう — 最小限のサンプルをコンパイルして、ライブラリが正しく設定されていることを確認します。
- コンパイル済みのモデルを選択してください — Neat は、コンパイル済みのモデルアーカイブ(
.tar.gz、通常は MPK と呼ばれます)を使用します。Model Zoo から選択するか、Model Compiler を使用して独自のモデルをコンパイルしてください。 Model/Graph/Runを作成する — モデルをロードし、グラフを構成し、そのジョブに最適な最小限のランタイムで実行します。- 実行と検証 — 入力を与え、出力を確認し、
GraphReport/MeasureReportを使用して動作を検証します。 - チュートリアルを活用して反復学習する — 単一の推論から、パイプライン、複数入力モデル、複数ストリームのグラフ、そして実運用レベルのエラー処理へとステップアップしましょう。
- デプロイ — ターゲットデバイスにインストールされている Neat ライブラリとアプリケーションをリンクします。
モデル、グラフ、または実行を選択してください。
最も小さな範囲で、目的を達成できるところから始めましょう。アプリがより多くの機能を持つようになれば、いつでも機能を拡張できます。
| もし何か必要なことがあれば…… | まず最初に | なぜ | 次の停車駅 |
|---|---|---|---|
| コンパイル済みのモデルを1回実行します。 | Model.run(...) | アーティファクトから出力テンソルへの最短経路。 | 最初のモデルを実行する |
| 接続された Modalix PCIeカード上でモデルを実行します。 | pcie::Model / pyneatpcie.Model | カード上にネイティブアプリケーションを構築することなく、ホスト側で共同処理を行う。 | PCIe コプロセッシング |
| モデル契約書または経路を確認する | Model | 仕様、メタデータ、およびルート情報には、モデルがどのような入力を受け入れ、どのような出力を生成するかについて説明されています。 | モデル |
| アプリケーションのフローにモデルを追加します。 | Graph | 入力と出力に名前を付け、ノードを構成し、トポロジーを明確に保ちます。 | グラフ |
| 時間経過に伴い、グラフを再利用する。 | graph.build(...) → Run | プッシュ/プル、クローズ/ドレイン制御、測定、およびキューポリシーを提供します。 | グラフを実行する |
| 複数のストリームを同時に処理するか、最大の処理能力を追求します。 | RunOptions + 測定 | スループットの最適化には、キューポリシー、ドロップカウンター、およびストリームごとのデータが必要です。 | スループットとキュー深度を調整する |
もしこれが初めての操作手順であれば、まずチュートリアルの事前確認リストから始め、次にグラフ関連の機能を追加する前に、まず1つのモデルを実行してください。
主要な概念を簡単に見てみましょう。
開発ワークフローのページでは、これらの各項目について詳細に解説しています。以下に概要を示します。
- モデル — コンパイルされたモデルパッケージを読み込み、実行可能なユニットとして公開します。
- PCIeによる共同処理 — ホストアプリケーションから、接 続された Modalix PCIeカード上でコンパイルされたモデルを実行します。
- 生成AIモデル — 生成モデルを直接実行するか、HTTP経由で提供します。
- テンソルとサンプル — テンソルとサンプル。これは、ステージ間でやり取りされるペイロードとメタデータの集合です。
- 実行 / 推論 — 同期的に実行する(
run)か、非同期的に実行する(push/pull)。 - グラフ — モデルのステージ、ノード、入力、および出力を組み合わせて、アプリケーションのグラフを作成します。
- グラフを実行する — グラフをライブの
Runに組み込み、その後、プッシュ、プル、ドレイン、測定、調整を行い、スループットを最適化します。 - ノード は、グラフを構成する基本的な要素です。
最初に1つのページだけ学習する場合は、実行/推論の概要 から始めましょう。このページでは、Model、Graph、および Run のすべてを最初から最後まで一貫して説明しています。
次にどこへ行くか
新規ユーザー向けの段階的な導入手順:
- Neat SDK — Neat SDK をインストールし、DevKit とペアリングし、
dkを搭載したハードウェアで実行します。 - 構築する — ソースコードから Neat を
build.shを使用してビルドします(開発者向けワークフロー)。 - こんにちは、Neat! — インストールされたライブラリにリンクする、最小限の CMake アプリケーション。
- チュートリアル —「最初のモデル」から「本番環境のパイプライン」までを段階的に解説する一連のチュートリアル。
より詳細な情報を必要とする場合に参照できる資料:
- 実行 / 推論 —
Model、Graph、Run、ノード、および入出力について、概念ごとに詳細に説明します。 - C++リファレンス — インストールされたヘッダーファイルで利用可能な、APIのすべての機能。
- Pythonリファレンス —
pyneatのバインディングに関するドキュメント。
あなたが書くことと、Neatが提供すること
Neat は、モデルのロード、検証、パイプラインの構築、スケジューリング、クリーンアップ、および診断といったランタイムを管理します。一方、入力と出力を接続し、結果に応じて動作するアプリケーションコードは、お客様が管理します。境界は、include/ に含まれるパブリック API であり、これは安定していると見なされます。つまり、アプリケーションを書き換えることなく、Neat をアップグレードできます。
もし Neat のコードを 3 行だけ覚えるとしたら、以下の行を覚えておいてください。
simaai::neat::Model model(mpk_path);
simaai::neat::TensorList outputs = model.run(input_tensors, /*timeout_ms=*/2000);
simaai::neat::Mapping view = outputs[0].map_read(); // inspect the output bytes
このドキュメントにある他のすべての要素、つまりグラフ、実行ハンドル、非同期キュー、およびマルチストリームアプリケーションは、その基本的な3行のストーリーを拡張したものです。