カスタムデータグラフを作成する
| 項目 | 値 |
|---|---|
| カテゴリ | グラフとパイプライン |
| 難易度 | 中級 |
| 推定所要時間 | 15-20 minutes |
| ラベル | graph, traversal, metadata |
第 3 章では、匿名の入力 → 出力グラフを構築し、位置情報を用いて実行しました。 run() 呼び出し。実際のオーケストレーション(ファンアウト、ファンイン、ストリームごとのルーティング)では、位置ではなく名前でエンドポイントを扱う必要があります。この章では、可能な限り小さなグラフで、名前付きエンドポイントの概念を紹介します。これにより、マルチストリームおよび埋め込みモデルの章でそれらを拡張する前に、名前付けと接続の仕組みを分離して確認できます。
公開 Graph アプリケーションの構成面は次のとおりです。 add(...) ノード、 connect(...) 名前付きのエンドポイント、 build() 一度、再利用可能なものに Runそして push("image", ...) そして pull("out", ...) 名前で。最終的には、1つのテンソ ルをプッシュすることになります。 Sample 名前付きのグラフを通じて、その内容を確認しました。 stream_id, frame_idおよび pts_ns 変更なしで出力されました。これは、ランタイムがメタデータを最初から最後まで完全に保持することの証明です。
ウォークスルー
グラフを構成します
ノードを2つ追加します。 Input("image") 「push」という名前の終点(エンドポイント)を宣言します。 image; Output("out") 「pull」という名前の終端点を宣言します。 out名前は契約内容を表します。これは、まさにあなたが渡す文字列そのものです。 push(...) そして pull(...) 後で。エンドポイントに名前を付ける(追加順に依存するのではなく)ことで、複数の入力または出力を持つ大規模なグラフを操作する際に、曖昧さをなくすことができます。
ノードは simaai::neat::nodes::Input("image") と nodes::Output("out") から取得します。
// `Graph` is the public composition type. Input("image") declares the name
// used by Run::push("image", ...). Output("out") declares the name used by
// Run::pull("out", ...).
simaai::neat::Graph graph;
graph.add(simaai::neat::nodes::Input("image"));
graph.add(simaai::neat::nodes::Output("out"));
エンドポイントを接続する
connect("image", "out") エッジを宣言します:フレームがプッシュされるのは image 流れ out2つのノードだけで、これがネットワーク全体の構成となりますが。 connect(...) より大きなグラフでブランチやマージを構築するために使用するのと同じ関数です。次に、以下を出力します。 graph.describe() 構成されたトポロジーをダンプする — グラフが意図したとおりに接続されているかをすばやく確認し、構築を開始する前に検証します。
graph.connect("image", "out");
std::cout << graph.describe() << "\n";