TensorRT 支持不同的数据格式。有两个方面需要考虑:数据类型和布局。
数据类型格式
数据类型是每个单独值的表示。它的大小决定了取值范围和表示的精度,分别是FP32(32位浮点,或单精度),FP16(16位浮点或半精度),INT32(32位整数表示),和 INT8(8 位表示)。
布局格式
布局格式确定存储值的顺序。通常,batch 维度是最左边的维度,其他维度指的是每个数据项的方面,例如图像中的C是通道, H是高度, W是宽度。忽略总是在这些之前的批量大小, C 、 H和W通常被排序为CHW (参见图 1 )或HWC (参见图 2 )。
图1. CHW的布局格式:图像分为HxW矩阵,每个通道一个,矩阵按顺序存储;通道的所有值都是连续存储的。
图2. HWC的布局格式:图像存储为单个HxW矩阵,其值实际上是 C 元组,每个通道都有一个值;一个点(像素)的所有值都是连续存储的。
为了实现更快的计算,定义了更多格式以将通道值打包在一起并使用降低的精度。因此,TensorRT 还支持NC / 2HW2和NHWC8等格式。
在NC / 2HW2 ( TensorFormat::kCHW2 ) 中,通道值对在每个HxW矩阵中打包在一起(在奇数通道的情况下为空值)。结果是一种格式,其中? C/2 ? HxW矩阵的值是两个连续通道的值对(参见图 3 );请注意,如果它们在同一对中,则此排序将维度交错为具有步长1的通道的值,否则将步长为 2xHxW 。
图 3. 一对通道值在每个HxW矩阵中打包在一起。结果是一种格式,其中[C/2] HxW矩阵的值是两个连续通道的值对
在NHWC8 ( TensorFormat::kHWC8 ) 中, HxW矩阵的条目包括所有通道的值。此外,这些值被打包在? C/8 ? 8 元组中,并且C向上舍入到最接近的 8 倍数。
在这种NHWC8格式中, HxW矩阵的条目包括所有通道的值。
其他TensorFormat遵循与前面提到的TensorFormat::kCHW2和TensorFormat::kHWC8类似的规则。
关于作者
Ken He 是 NVIDIA 企业级开发者社区经理 & 高级讲师,拥有多年的 GPU 和人工智能开发经验。自 2017 年加入 NVIDIA 开发者社区以来,完成过上百场培训,帮助上万个开发者了解人工智能和 GPU 编程开发。在计算机视觉,高性能计算领域完成过多个独立项目。并且,在机器人和无人机领域,有过丰富的研发经验。对于图像识别,目标的检测与跟踪完成过多种解决方案。曾经参与 GPU 版气象模式GRAPES,是其主要研发者。
审核编辑:郭婷
-
机器人
+关注
关注
213文章
29829浏览量
213607 -
NVIDIA
+关注
关注
14文章
5324浏览量
106638 -
人工智能
+关注
关注
1809文章
49151浏览量
250629
发布评论请先 登录
使用NVIDIA Triton和TensorRT-LLM部署TTS应用的最佳实践

LPC55S28修改音频数据格式后USB Aduio类异常的原因?
使用RDATAC指令后,ADS131E04传送的数据格式以及内容是怎样的?
在NVIDIA TensorRT-LLM中启用ReDrafter的一些变化

解锁NVIDIA TensorRT-LLM的卓越性能
NVIDIA TensorRT-LLM Roadmap现已在GitHub上公开发布

ADC3561转换成什么数据格式便于高速实时通过WIFI发送?
PCM2707的S/PDIF输出的数据格式是什么?
SRC4192能否支持输入TDM格式音频数据,输出I2S,进行数据格式转换?
请问TLV320AIC3268的ADC转换后的数据格式是什么样的?
NVIDIA Nemotron-4 340B模型帮助开发者生成合成训练数据

评论