DPUCVDX8G 特征支持 - 1.2 简体中文

适用于 Versal ACAP 的 DPUCVDX8G 产品指南 (PG389)

Document ID
PG389
Release Date
2022-06-24
Version
1.2 简体中文

DPUCVDX8G 提供了用户可配置参数,用于最优化资源利用率并自定义特征。根据可用的可编程逻辑资源,有不同配置可供选择用于满足不同的 AI 引擎、DSP slice、LUT、块 RAM 和 UltraRAM 使用需求。此外还有其它选项可提供附加功能,例如,通道增广、平均池化和逐通道卷积。另外还有一个选项可用于配置在单个 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 操作和参数支持
特征 描述 范围
卷积二维和三维 内核大小 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 * input_channel ≤ 256 * channel_parallel && stride_w == 1 && stride_h == 1
约束* kernel_w * kernel_h * kernel_d * (ceil(input_channel / channel_parallel)) <= bank_depth
逐通道卷积二维和三维 内核大小 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 * input_channel ≤ 256 * channel_parallel && stride_w == 1 && stride_h == 1
约束* kernel_w * kernel_h * kernel_d * (ceil(input_channel / channel_parallel)) <= bank_depth
转置卷积二维和三维 内核大小 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
逐通道转置卷积二维和三维 内核大小 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
最大池化 内核大小 w, h: [1, 256]
步幅 w, h: [1, 256]
填充 w: [0, min(kernel_w-1,15)]

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

平均池化 内核大小 w, h: [1, 256]
步幅 w, h: [1, 256]
填充 w: [0, min(kernel_w-1,15)]

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

逐元素求和二维和三维 输入通道 1~256 * channel_parallel
输入大小 任意
特征映射数量 1~4
逐元素乘法二维和三维 输入通道 1~256 * channel_parallel
输入大小 任意
特征映射数量 2
串联 输出通道 1~256 * channel_parallel
重组 步幅 stride * stride * input_channel ≤ 256 * channel_parallel
完全连接 (FC) Input_channel Input_channel ≤ 2048 * channel_parallel
Output_channel 任意
  1. DPUCVDX8G 中,channel_parallel 参数为 16。
  2. 在某些神经网络中,FC 层与 Flatten(平铺)层相连。Vitis AI 编译器会自动组合 Flatten+FC 以构成全局 CONV2D 层,CONV2D 内核大小与 Flatten 层的输入特征映射大小直接相等。在此情况下,输入特征映射大小不得超过 CONV 内核大小限制,否则编译期间会生成错误。如果没有平铺层,那么将把 FC 层作为普通 conv 层来处理。

    仅在 Flatten+FC 情况下才存在此限制。

  3. bank_depth 即片上权重缓冲器深度。在 DPUCVDX8G 中,bank_depth 默认值为 8192。
  4. 如果“Batch Normalization”(批量归一化)已量化并且可等效转换为 depthwise-conv2d,那么它将被转换为 depthwise-conv2d 并且编译器会伺机执行编译以将“Batch Normalization”映射到 DPU 实现。否则,batch_norm 将由 CPU 执行。