概要 - 4.0 日本語

Zynq UltraScale+ MPSoC 向け DPUCZDX8G 製品ガイド (PG338)

Document ID
PG338
Release Date
2022-06-24
Version
4.0 日本語

DPUCZDX8G IP には、リソース使用量を最適化したり異なる機能をカスタマイズしたりするためのユーザー設定可能なパラメーターがあります。使用可能なプログラマブル ロジック リソースの量に応じて、DSP スライス、LUT、ブロック RAM、および UltraRAM の使用量を設定できます。チャネル拡張、AveragePool、DepthwiseConv、softmax などの追加機能のオプションもあります。さらに、1 つの DPUCZDX8G IP にインスタンシエートする DPUCZDX8G コアの数を指定するオプションもあります。

次の表に、DPUCZDX8G でサポートされるディープ ニューラル ネットワークと関連パラメーターを示します。

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

Vivado フローの場合、arch.json ファイルは $TRD_HOME/prj/Vivado/srcs/top/ip/top_dpu_0/arch.json にあります。

Vitis フローの場合、arch.json ファイルは $TRD_HOME/prj/Vitis/binary_container_1/link/vivado/vpl/prj/prj.gen/sources_1/bd/zcu102_base/ip/zcu102_base_DPUCZDX8G_1_0/arch.json にあります。
注記: $TRD_home = Vitis-AI/dsa/DPU-TRD/
表 1. DPUCZDX8G の演算機能とサポートされるパラメーター
機能 説明
Convolution カーネル サイズ w、h: [1, 16]
Strides w、h: [1, 8]
パディング w: [0, kernel_w-1]

h: [0, kernel_h-1]

入力サイズ 任意の値
入力チャネル 1~256 * channel_parallel
出力チャネル 1~256 * channel_parallel
アクティベーション ReLU、ReLU6、LeakyReLU、Hard Sigmoid、Hard Swish
Dilation dilation * input_channel ≤ 256 * channel_parallel && stride_w == 1 && stride_h == 1
制約* kernel_w * kernel_h * (ceil(input_channel / channel_parallel)) <= bank_depth

Depthwise Convolution

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

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

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

kernel_h/stride_h: [1, 16]

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

h: [0, kernel_h-1]

入力サイズ 任意の値
入力チャネル 1~256 * channel_parallel
出力チャネル 1~256 * channel_parallel
アクティベーション ReLU、ReLU6、LeakyReLU
Depthwise Transposed Convolution カーネル サイズ kernel_w/stride_w: [1, 16]

kernel_h/stride_h: [1, 16]

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

h: [0, kernel_h-1]

入力サイズ 任意の値
入力チャネル 1~256 * channel_parallel
出力チャネル 1~256 * channel_parallel
アクティベーション ReLU、ReLU6、LeakyRelu、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 入力チャネル 1~256 * channel_parallel
入力サイズ 任意の値
特徴マップの数 1 ~ 4
Elementwise-Multiply 入力チャネル 1~256 * channel_parallel
入力サイズ 任意の値
特徴マップの数 2
Concat 出力チャネル 1~256 * channel_parallel
Reorg ストライド stride * stride * input_channel ≤ 256 * channel_parallel
Fully Connected 入力チャネル Input_channel ≤ 2048 * channel_parallel
出力チャネル 任意の値
  1. パラメーター channel_parallel は、DPUCZDX8G のアーキテクチャによって決まります。たとえば、B1152 の channel_parallel は 12 で、B4096 の channel_parallel は 16 です (「コンフィギュレーション オプション」の表「各たたみ込みアーキテクチャの並列度」を参照)。
  2. ニューラル ネットワークでは、FC レイヤーが Flatten レイヤーに接続される場合があります。Vitis AI コンパイラは Flatten+FC をグローバル CONV2D レイヤーに自動で結合するため、CONV2D カーネル サイズは Flatten レイヤーの入力特徴マップのサイズと同じになります。この場合、入力特徴マップのサイズは自動結合された CONV2D カーネル サイズを超えることができません。これを超えてしまうと正しくコンパイルされません。Flatten レイヤーがない場合、FC レイヤーは通常の Conv レイヤーとして扱われます。

    この制限は、Flatten レイヤーと FC レイヤーがコンパイラによって結合されている場合にのみ適用されます。

  3. bank_depth は、オンチップ重みバッファーの深さです。すべての DPU アーキテクチャにおいて、特徴マップと重みの bank_depth は 2048 です。
  4. Batch Normalization を等価関係にある depthwise-conv-2d に変換できる場合は、DPU で実行するために演算子を変換します。それ以外の場合、batch_norm は CPU によって実行されます。