コア C++ クラス - 3.5 日本語

Vitis AI ユーザー ガイド (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 日本語

wego_torch::core::CompileOptions

WeGO-Torch のコンパイル オプションを指定するための C++ クラス オブジェクトです。このクラスのインスタンスを作成して、wego_torch::core::Compile 関数の引数として渡す必要があります。
表 1. コンストラクター パラメーター
タイプ 名前 説明
wego_torch::AccuracyMode accuracy_mode 精度モードを指定します。次の 2 つの種類があります。
  • wego_torch::AccuracyMode::kDefaultRemoveFixNeuron: このモードの場合、WeGO-Torch はコンパイル プロセス中に冗長な fixneurons を削除することで性能を最適化します。これらの fixneurons は、量子化された演算子によって生成されるものですが、オンボードの DPU ターゲットでサポートされていないため、CPU にディスパッチされて推論が実行されます。精度が要件を満たせる場合は、これらの fixneuron をモデルから削除することで、エンド ツー エンドの性能を向上させることができます。
  • wego_torch::AccuracyMode::kReserveFixNeuron: この値が指定されている場合、WeGO-Torch は、モデル内のすべての冗長 fixneuron を (削除するのではなく) 維持します。冗長 fixneuron を削除すると性能が向上しますが、場合によっては精度が低下する可能性があります。WeGO-Torch でモデルをコンパイルした後、全体の精度が要件を満たさない場合は、この値を試してみることを推奨します。
wego_torch::core::PartitionOptions partition_options パーティション オプションの設定。詳細は、wego_torch::core::PartitionOptions クラスを参照してください。
std::vector<InputMeta> inputs_meta モデルの各入力の wego_torch::InputMeta のベクター。
uint32_t thread_parallel 性能を最適化するためのパラメーター。
uint32_t core_parallel 性能を最適化するためのパラメーター。
wego_torch::core::DebugOptions debug_options デバッグ オプションの設定。詳細は、wego_torch::core::DebugOptions クラスを参照してください。

wego_torch::core::PartitionOptions

WeGO 分割設定のオプション。
表 2. コンストラクター パラメーター
タイプ 名前 説明
uint32_t wego_subgraph_min_ops_number

現在の WeGO は、演算子が DPU でサポートされている限り、貪欲法を使用してこれらを DPU に割り当てます。このため、次のような問題が生じることがあります

  • DPU が多くの演算子をサポートしていない場合、モデル全体が多くの DPU サブグラフと CPU サブグラフに分割されることがあります。1 つの DPU サブグラフに少ししか演算子が含まれない場合、このようなサブグラフを DPU で実行すると、ホストとデバイスの間で頻繁にメモリ転送が発生し、性能が低下することがあります。
  • WeGO は各 DPU サブグラフに対してデバイス バッファーを割り当てます。モデルが大きく、分割後も多くの DPU サブグラフが存在する場合、バッファー オーバーフローの問題が生じることがあります。
この問題に対処するため、wego_subgraph_min_ops_number オプションが追加されています。このオプションでは、DPU で実行される DPU サブグラフの最小演算子数を設定できます。設定しない場合、DPU がすべての演算子をサポートしていても、CPU で実行されます。
注記: wego_subgraph_min_ops_number = 0 は制限がないことを意味します。
std::vector<std::string> extra_accel_op_list DPU はさまざまな DL 演算子をサポートできますが、いくつかの制限があります (たとえば DPUCVDX8H_ISA1_F2W4_4PE はカーネル 1 ~ 16 およびストライド 1 ~ 4 のたたみ込みしかサポートできない)。分割を実行する際、WeGO は DPU 制限チェック エンジンを使用して DPU の互換性を判断します。ただし演算子によっては互換性ルールが非常に複雑であり、オーバーヘッドが過大になる場合があります。これを回避するため、WeGO はデフォルトではこれらの演算子を DPU にディスパッチしません。高速化する必要のある演算子のタイプをユーザーが extra_accel_op_list に明示的に指定する必要があります。次の演算子は extra_accel_op_list で指定すると DPU で実行できます。
  • aten::mul
  • aten::mean
  • aten::linear
  • aten::unsqueeze
  • aten::slice
注記: WeGO で extra_accel_op_list にリストされている演算子のコンパイル中にエラーが発生した場合、DPU がその演算子を高速化できないことを示します。エラーが報告されない場合、これらの演算子は正常に高速化できます。

wego_torch::core::DebugOptions

WeGO デバッグのオプションです。
表 3. コンストラクター パラメーター
タイプ 名前 説明
bool accuracy_debug 精度に問題があるサブグラフの入力/出力値をダンプするためには、この値を true に設定します。これで、これらのサブグラフの入力/出力値を記録できるようになります。デフォルト値はオフです。

wego_torch::InputMeta

量子化されたモデルの入力を記述するメタ情報。Vitis AI ツールチェーンの制限のために、WeGO-Torch はスタティック タイプおよび静的形状を使用したコンパイルのみをサポートします。WeGO-Torch による型と形状の推論を有効にするには、各入力のデータ型と形状の情報を明示的に渡す必要があります。
表 4. コンストラクター パラメーター
タイプ 名前 説明
wego_torch::DataType type_ 現在の入力テンソルのデータ型。値は、wego_torch::DataType::kBoolwego_torch::DataType::kInt32、または wego_torch::DataType::kFloat32 に設定できます。
wego_torch::ShapeType input_shape_ 現在の入力テンソルの入力形状。

wego_torch::TargetInfo

DPU ターゲットの情報にアクセスするためのラッパーとして機能する C++ クラス オブジェクトであり、DPU ターゲットのバッチ、名前、フィンガープリント、およびフィンガープリントによる情報を提供します。
表 5. コンストラクター パラメーター
タイプ 名前 説明
std::string name DPU ターゲットの名前
uint64_t fingerprint オンボード DPU ターゲットのフィンガープリント
bool is_fingerprint_driven DPU サブグラフのコンパイルが、フィンガープリントまたはターゲット名のいずれを使用するかを指定。
uint32_t batch オンボード DPU ターゲットでサポートされるバッチ サイズ