メインコンテンツまでスキップ

開発ワークフロー

このページは、SiMa.aiとNeatを日常的にどのように使用するかを示す概要図です。各ステップは、詳細なページへのリンクとなっており、必要に応じてそちらを参照できます。

ループ

典型的な Neat 開発サイクルは次のようになります。

  1. インストール — ホストまたはデバイスに、sima-neat パッケージと、必要に応じて pyneat Pythonバインディングをインストールします。
  2. Hello Neat を試してみましょう — 最小限のサンプルをコンパイルして、ライブラリが正しく設定されていることを確認します。
  3. コンパイル済みのモデルを選択してください — Neat は、コンパイル済みのモデルアーカイブ(.tar.gz、通常は MPK と呼ばれます)を使用します。Model Zoo から選択するか、Model Compiler を使用して独自のモデルをコンパイルしてください。
  4. Model / Graph / Run を作成する — モデルをロードし、グラフを構成し、そのジョブに最適な最小限のランタイムで実行します。
  5. 実行と検証 — 入力を与え、出力を確認し、GraphReport / MeasureReport を使用して動作を検証します。
  6. チュートリアルを活用して反復学習する — 単一の推論から、パイプライン、複数入力モデル、複数ストリームのグラフ、そして実運用レベルのエラー処理へとステップアップしましょう。
  7. デプロイ — ターゲットデバイスにインストールされている 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つのページだけ学習する場合は、実行/推論の概要 から始めましょう。このページでは、ModelGraph、および Run のすべてを最初から最後まで一貫して説明しています。

次にどこへ行くか

新規ユーザー向けの段階的な導入手順:

  • Neat SDK — Neat SDK をインストールし、DevKit とペアリングし、dk を搭載したハードウェアで実行します。
  • 構築する — ソースコードから Neat を build.sh を使用してビルドします(開発者向けワークフロー)。
  • こんにちは、Neat! — インストールされたライブラリにリンクする、最小限の CMake アプリケーション。
  • チュートリアル —「最初のモデル」から「本番環境のパイプライン」までを段階的に解説する一連のチュートリアル。

より詳細な情報を必要とする場合に参照できる資料:

  • 実行 / 推論ModelGraphRun、ノード、および入出力について、概念ごとに詳細に説明します。
  • 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行のストーリーを拡張したものです。