Skip to main content
QUICK REVIEW

[论文解读] SparseTrain:Leveraging Dynamic Sparsity in Training DNNs on General-Purpose SIMD Processors

Zhangxiaowen Gong, Houxiang Ji|arXiv (Cornell University)|Nov 22, 2019
Advanced Neural Network Applications参考文献 35被引用 5
一句话总结

SparseTrain 是一种纯软件框架,在通用 SIMD CPU 上训练深度神经网络(DNN)时,通过运行时检测 ReLU 激活产生的动态稀疏性,实现高效计算。通过在运行时检测零值,并利用优化的循环顺序和向量化零值检测跳过计算,该方法在不修改硬件的前提下,使 VGG16、ResNet-34、ResNet-50 和 Fixup ResNet-50 的卷积运算速度相比密集卷积提升了 1.31 倍至 2.19 倍。

ABSTRACT

Our community has greatly improved the efficiency of deep learning applications, including by exploiting sparsity in inputs. Most of that work, though, is for inference, where weight sparsity is known statically, and/or for specialized hardware. We propose a scheme to leverage dynamic sparsity during training. In particular, we exploit zeros introduced by the ReLU activation function to both feature maps and their gradients. This is challenging because the sparsity degree is moderate and the locations of zeros change over time. We also rely purely on software. We identify zeros in a dense data representation without transforming the data and performs conventional vectorized computation. Variations of the scheme are applicable to all major components of training: forward propagation, backward propagation by inputs, and backward propagation by weights. Our method significantly outperforms a highly-optimized dense direct convolution on several popular deep neural networks. At realistic sparsity, we speed up the training of the non-initial convolutional layers in VGG16, ResNet-34, ResNet-50, and Fixup ResNet-50 by 2.19x, 1.37x, 1.31x, and 1.51x respectively on an Intel Skylake-X CPU.

研究动机与目标

  • 解决在通用 CPU 上训练 DNN 时缺乏高效软件技术来利用动态稀疏性的现状。
  • 应对 ReLU 引入的中等程度、随时间变化的激活与梯度稀疏模式带来的挑战。
  • 在不依赖硬件修改或静态稀疏性假设的前提下,实现显著的性能提升。
  • 保持与标准密集数据布局及向量化指令集(SIMD)的兼容性。
  • 在包括 VGG16、ResNet 和 Fixup ResNet-50 在内的多种 CNN 架构中实现高性能。

提出的方法

  • 在不进行数据布局转换或使用稀疏表示的前提下,运行时检测特征图和梯度中的零值。
  • 重新排列计算循环,将零值检测和分支处理的开销分摊到 ReLU 输出的大量重用上。
  • 沿 SIMD 向量宽度(V)向量化零值检测操作,以提升指令级并行性并减少分支预测错误。
  • 应用循环变换和软件流水技术,以最小化开销并改善数据局部性和并行性。
  • 对训练的三个阶段——前向传播、按输入的反向传播和按权重的反向传播——使用相同的稀疏感知内核设计进行优化。
  • 采用静态循环分块与运行时分支预测相结合的混合方法,以减少短循环中的预测错误惩罚。

实验结果

研究问题

  • RQ1是否能仅通过软件在通用 CPU 上有效利用 ReLU 激活产生的动态稀疏性进行 DNN 训练?
  • RQ2如何在不改变数据布局的前提下,高效地将零值检测与计算跳过集成到密集且向量化的内核中?
  • RQ3何种循环排序与向量化策略能在中等程度、动态变化的稀疏性下最小化开销并最大化性能提升?
  • RQ4在通用硬件上的真实 DNN 中,稀疏性利用在多大程度上能超越高度优化的密集卷积?
  • RQ5该方法在具有不同稀疏性和计算模式的多种网络架构中是否具备良好的可扩展性?

主要发现

  • 在 Intel Skylake-X CPU 上,SparseTrain 在 VGG16 的非首层中实现了相比密集卷积 2.19 倍的加速。
  • 在真实稀疏水平下,其在 Fixup ResNet-50 上实现 1.51 倍加速,ResNet-34 上实现 1.37 倍,ResNet-50 上实现 1.31 倍加速。
  • 在 0% 稀疏性下,该方法性能与高度优化的密集基线相差不超过 10%,表明其开销极低。
  • 性能提升在多个架构中保持一致,表明其在现代 CNN 中具有广泛的适用性。
  • 该方法通过跳过零值输入和梯度的计算,有效减少了计算时间,且无需改变数据表示。
  • 向量化零值检测与循环优化显著降低了分支预测错误惩罚,即使在变换后循环的迭代次数较少时也有效。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。