DPUCVDX8G のサポート機能 - 1.2 日本語

Versal ACAP 向け DPUCVDX8G 製品ガイド (PG389)

Document ID
PG389
Release Date
2022-06-24
Version
1.2 日本語

DPUCVDX8G には、リソース使用量を最適化したり、機能をカスタマイズするためにユーザーが指定できるパラメーターがあります。使用可能なプログラマブル ロジック リソースの量に応じて、AI エンジン、DSP スライス、LUT、ブロック RAM、および UltraRAM の使用量を設定できます。チャネル拡張、AveragePool、DepthwiseConv などの追加機能のオプションもあります。さらに、1 つの DPUCVDX8G IP にインスタンシエートする DPUCVDX8G のバッチ ハンドラー数を指定するオプションもあります。次の表に、DPUCVDX8G でサポートされるディープ ニューラル ネットワークと関連パラメーターを示します。

Vitis™ アクセラレーション フローを使用して DPUCVDX8G を統合する際に、arch.json という名前のコンフィギュレーション ファイルが生成されます。arch.json ファイルは、Vitis AI コンパイラによるモデルのコンパイルに使用されます。arch.json の内容が変更された場合は、モデルを再コンパイルしてください。Vitis AI コンパイラの詳細は、 『Vitis AI ユーザー ガイド』 (UG1414) を参照してください。Vitis アクセラレーション フローの arch.json ファイルは、$TRD_HOME/vitis_prj/package_out/sd_card/arch.json に格納されます。

表 1. DPUCVDX8G の演算機能とサポートされるパラメーター
機能 説明 範囲
Convolution 2D および 3D カーネル サイズ w、h、d: [1, 16]

w * h * ceil ( ceil ( input_channel / 16 ) * 16 * d / 2048 ) <= 64

ストライド w、h、d: [1, 8]
パディング w: [0, kernel_w-1]

h: [0, kernel_h-1]

d: [0, kernel_d-1]

入力サイズ 任意の値
入力チャネル 1~256 * channel_parallel
出力チャネル 1~256 * channel_parallel
アクティベーション ReLU、ReLU6、LeakyReLU、PReLU、Hard Sigmoid、Hard Swish
Dilation dilation * input_channel ≤ 256 * channel_parallel && stride_w == 1 && stride_h == 1
制約* kernel_w * kernel_h * kernel_d * (ceil(input_channel / channel_parallel)) <= bank_depth
Depthwise Convolution 2D および 3D カーネル サイズ w、h: [1, 256]

d: [1, 16]

ストライド w、h: [1, 256]

d = 1

パディング w: [0, min(kernel_w-1,15)]

h: [0, min(kernel_h-1,15)]

d: [0, kernel_d-1]

入力サイズ 任意の値
入力チャネル 1~256 * channel_parallel
出力チャネル 1~256 * channel_parallel
アクティベーション ReLU、ReLU6、LeakyReLU、PReLU、Hard Sigmoid、Hard Swish
Dilation dilation * input_channel ≤ 256 * channel_parallel && stride_w == 1 && stride_h == 1
制約* kernel_w * kernel_h * kernel_d * (ceil(input_channel / channel_parallel)) <= bank_depth
Transposed Convolution 2D および 3D カーネル サイズ kernel_w/stride_w: [1, 16]

kernel_h/stride_h: [1, 16]

kernel_d/stride_d: [1, 16]
ストライド
パディング w: [0, kernel_w-1]

h: [0, kernel_h-1]

d: [0, kernel_d-1]

入力サイズ 任意の値
入力チャネル 1~256 * channel_parallel
出力チャネル 1~256 * channel_parallel
アクティベーション ReLU、ReLU6、LeakyReLU、PReLU、Hard Sigmoid、Hard Swish
Depthwise Transposed Convolution 2D および 3D カーネル サイズ kernel_w/stride_w: [1, 256]

kernel_h/stride_h: [1, 256]

kernel_d/stride_d: [1, 256]
ストライド
パディング w: [0, min(kernel_w-1,15)]

h: [0, min(kernel_h-1,15)]

d: [0, kernel_d-1]

入力サイズ 任意の値
入力チャネル 1~256 * channel_parallel
出力チャネル 1~256 * channel_parallel
アクティベーション ReLU、ReLU6、LeakyReLU、PReLU、Hard Sigmoid、Hard Swish
Max Pooling カーネル サイズ w、h: [1, 256]
Strides w、h: [1, 256]
パディング w: [0, min(kernel_w-1,15)]

h: [0, min(kernel_h-1,15)]

Average Pooling カーネル サイズ w、h: [1, 256]
Strides w、h: [1, 256]
パディング w: [0, min(kernel_w-1,15)]

h: [0, min(kernel_h-1,15)]

Elementwise-Sum 2D および 3D 入力チャネル 1~256 * channel_parallel
入力サイズ 任意の値
特徴マップの数 1 ~ 4
Elementwise-Multiply 2D および 3D 入力チャネル 1~256 * channel_parallel
入力サイズ 任意の値
特徴マップの数 2
Concat 出力チャネル 1~256 * channel_parallel
Reorg ストライド stride * stride * input_channel ≤ 256 * channel_parallel
FC (Full Connected) 入力チャネル Input_channel ≤ 2048 * channel_parallel
出力チャネル 任意の値
  1. DPUCVDX8G の場合、channel_parallel パラメーターは 16 です。
  2. ニューラル ネットワークでは、FC レイヤーが Flatten レイヤーに接続される場合があります。Vitis AI コンパイラは Flatten+FC をグローバル CONV2D レイヤーに自動で結合するため、CONV2D カーネル サイズは Flatten レイヤーの入力特徴マップのサイズとちょうど同じになります。この場合、入力特徴マップのサイズは CONV のカーネル サイズ制限を超えることができません。これを超えてしまうと正しくコンパイルされません。Flatten レイヤーがない場合、FC レイヤーは通常の Conv レイヤーとして扱われます。

    この制限条件は、Flatten+FC の場合にのみ適用されます。

  3. bank_depth は、オンチップ重みバッファーの深さです。DPUCVDX8G の場合、 デフォルトの bank_depth は 8192 です。
  4. Batch Normalization (バッチ正規化) が量子化され、等価な depthwise-conv2d に変換可能である場合、Batch Normalization は depthwise-conv2d に変換されます。コンパイラは、Batch Normalization を DPU インプリメンテーションにマップするためにコンパイルの可能性を探します。それ以外の場合、batch_norm は CPU によって実行されます。