グラフを使用したアプリケーションの構築
コンパイル済みのモデルアーカイブを1つだけロードして実行したい場合は、Model を使用します。モデルとノードを中心にアプリケーションを構築したい場合は、Graph を使用します。公開入力と出力、再利用可能なフラグメントの接続、ストリームの分岐、ストリームの結合、アプリケーションの検証、および実際に実行された内容の保存または可視化を行います。
このモデルは、意図的にシンプルに設計されています。
| 概念 | 意味 |
|---|---|
Model | ディスクからロードされたコンパイル済みのモデルアーカイブ。例:resnet50.tar.gz または yolov8.tar.gz。 |
Node | 1つの処理ステップ:入力、出力、変換、ソース、シンク、モデルステージ、またはヘルパーステージ。 |
Graph | アプリケーションの配線計画:存在するノード/フラグメントと、それらの間のデータフロー。 |
Run | Graph::build() によって返されるライブ実行ハンドル:入力のプッシュ、出力のプル、メトリクスの収集、停止。 |
要するに:
Graph = what to run
Run = the running instance
より短いパスが必要な場合は、タスクページから始めます。
- グラフ は、グラフの作成方法を説明します。
- グラフを実行する は、ランタイムのライフサイクル、キュー、測定、およびスループットを説明します。
- ノード は、一般的なノードとグループをマッピングします。
- テンソルとサンプル は、ペイロードとメタデータを説明します。
ほとんどのアプリケーションコードでは、公開されている simaai::neat::Graph と simaai::neat::Run を使用する必要があります。より低レベルの実装ネームスペースを使用してアプリケーションを構築しないでください。これらは顧客向けのAPIではありません。
グラフが必要なのはいつですか?
| 目的 | 推奨されるAPI |
|---|---|
| 1つの入力に対して1つのモデルを実行する | Model::run(...) または Model::build(...) |
| モデルの周囲にアプリケーションの入出力境界を追加する | Graph |
| カスタム処理ノードを使用してモデルを構成する | Graph::add(...) |
| 複数のアプリケーションでグラフの一部を再利用する | Graph の一部を返す/渡す |
| 複数の入力または出力をルーティングする | 名前付きの nodes::Input(...) / nodes::Output(...) と connect(...) |
| 1つのストリームを複数のコンシューマーに分岐する | graphs::Branch(...) |
| 複数のストリームを1つの論理出力に結合する | graphs::Combine(...) と CombinePolicy |
| 実行されたトポロジーとメトリックを保存または視覚化する | save_run_json(run, ...) |