细粒度结构化稀疏性(fine-grained structured sparsity ,稀疏性),是助力推动 NVIDIA Ampere 架构 GPU 性能提升的一项全新技术,它不但提高了效率,还使开发者能够通过减少计算操作来加速其神经网络。
稀疏矩阵(sparse matrix )定义
2:4 稀疏矩阵(2:4 sparse matrix ):矩阵中每个4个元素中有2个非零值。A100 支持行方向上的 2:4 结构化稀疏
在A100中,通过细粒度结构化稀疏将训练好的网络权重修剪为2:4 稀疏矩阵,接下来是一个简单而通用的方法来对非零权重进行微调(fine-tune)。然后权重网络权重被压缩之后,数据占用空间和带宽减少为原来的一半,并且 A100 的稀疏 Tensor Core 通过跳过零(skipping the zeros)将数学计算的吞吐量加倍。
根据NVIDIA自述[1],通过对计算机视觉、目标检测、分割、自然语言建模和翻译的数十个网络的评估,这种方法几乎不会导致推理准确性的损失。
以下为NVIDIA使用PyTorch库 Automatic SParsity (ASP) [2] 实现的工作流获得的FP16精度结果示例:
更多信息可以参考 the Accelerating Sparse Deep Neural Networks whitepaper [3]
稀疏(Sparse) Tensor Core
A100 Tensor Core GPU 包括新的 Sparse Tensor Core 指令,这些指令跳过对零值的计算,从而使 Tensor Core 计算吞吐量翻倍。图1展示了,Tensor Core在点积计算中是如何使用压缩元数据(即:非零值的索引)去匹配经过压缩后的网络权重。
加速效果[1]
通过引入稀疏 Tensor Core,A100使用TensorFloat-32的运行速度比V100 FP32 FMA快20倍。
A100 vs. V100 | V100 | A100 | A100 Sparsity | A100 加速效果 | A100 Sparsity 加速效果 |
---|---|---|---|---|---|
FP16 TC | 125TFLOPS | 312TFLOPS | 624 TFLOPS | 2.5x | 5x |
BF16 TC | 125TFLOPS | 312TFLOPS | 624TFLOPS | 2.5x | 5x |
TF32 TC vs. FP32 | 15.7 TFLOPS | 156 TFLOPS | 312 TFLOPS | 10x | 20x |
INT8 TC vs. INT8 | 62 TOPS | 624 TOPS | 1248 TOPS | 10x | 20x |