「GPU」降低预测过程计算成本,这些NLP模型压缩方法要知道( 二 )
本文插图
两种不同的整型量化方法
一种简单的整型量化方法 , 如上图右侧 , 首先选择一个范围和偏移量 , 这样就不会将校准后的输入浮点激活值激活映射到unit8值(-128,127)两端的整数 。 但这种做法在适应两端极值的同时牺牲了一些精度 。 如上图左侧 , 为了解决这个问题 , TensorRT之类的框架会选择合适的scale和offset值 , 以最小化模型的32位浮点版本和8位整型版本的输出激活值之间的KL差异 。 这使我们能够以合理的方式在取值范围和计算精度之间权衡取舍 。 由于KL散度可以被看作激活值在不同编码(不同精度可以看做不同编码)下的信息损失的度量 , 因此是一种自然合理的度量方式 。
关于如何使用英伟达TensorRT来将8位整型量化应用到个人模型的更多详细细节 , 可以参考一下链接:
https://docs.nvidia.com/deeplearning/frameworks/tf-trt-user-guide/index.html
https://github.com/tensorflow/tensorrt
3、网络层融合与计算图优化
除了浮点数约简和整型量化外 , 操作融合提供了一个实用的 , 通用的选择来实现更高效的预测 。 操作融合的基本原理是将计算流程中若干层所执行的操作进行合并 , 以避免对全局设备存储器的冗余访问 , 进而提高执行效率 。 通过将多个计算操作合并到一个内核中 , 可以加速内存读写速度 。
本文插图
操作合并示例
如上图 , 我们可以将添加的skip连接与层规范化操作(LN)的比例(scale)和偏差(bias)合并在一起 。
软件优化允许我们重构一些矩阵乘法操作以更好地进行计算并行话 。 如下图 , 我们可以将self-attention层的查询向量(Query)、键向量(Key)和值向量(Value)的计算投影合并到一个矩阵乘法中 。
本文插图
对自注意力层进行优化示意图
遗憾的是 , 从这类计算流程图优化中很少看到关于加速幅度的详细信息 , 但这种改进仍然是有效的 , 大约有10%的吞吐量提升 。
本文插图
网络修剪
除了纯粹的软件层面优化 , 还有其他许多方法可用来修剪网络结构 , 删除对最终模型贡献小的权重 。 许多剪枝方法(如Fan等人提出的"Reducing Transformer Depth on Command With Structured Dropout")需要在训练前对网络进行修改 , 以生成足够稀疏的模型 , 并在训练后进行剪枝 。 剪枝文献中的其他论文聚焦于在没有具体预测目标的情况下 , 模型所学习的连接模型如何才能更加稀疏 。 (例如Gorden等人提出的"Compressing BERT: Studying the Effects of Weight Pruning on Transfer Learning")
虽然这些方法本身都很有意义(而且结构化的删除部分层的方法在实际应用中有重要前景) , 但更有趣的是一种能以特定方式应用并且仍然能获得性能提升的方法 。 这类方法基于一个公认事实来对模型进行修剪 , 即解决特定任务只需要模型的一部分 。
为了获得经验上的模型性能提升而进行修剪需要结构化的稀疏性 。 简单地将单个权值归零并不足以获得性能提升 , 因为我们没有实际的方法来利用这种稀疏性 。 因此 , 我们必须设法砍掉网络中的大部分结构 , 以获得实际的性能提升 。
注意力头剪枝
在文献"Are Sixteen Heads Really Better than One?"中 , 作者通过迭代的方法从BERT模型中逐步去除注意力头(attention head) 。 他们使用了一种基于梯度检测的方法(对下游任务进行梯度估计)来估计每个注意力头的重要性 , 并通过绘制性能--去除的注意力头所占百分比函数来测试模型对注意力头剪枝的鲁棒性 。
推荐阅读
- 驱动之家|NVIDIA:7nm安培是有史以来最强大的GPU
- 美股研究社|全新GPU横空出世后,英伟达将继续“跑赢大盘”?
- 互联网乱侃先生|国产机们不用再看高通脸色?超级芯片巨头入场,GPU比高通强很多
- 求艺网|预测今年挣钱的3个新兴行业,比传统行业更要前程
- 科技时尚推送|华为技术新突破 GPU Turbo技术确实很吓人
- 界面新闻|海外科技博主又来预测,发布海军蓝版iPhone 12仿制宣传片
- TechWeb.com.cn|芯驰科技X9汽车芯片采用Imagination PowerVR GPU
- 科技甜品时间|苹果 iPhone 12发布时间预测,iPad/Mac显示屏将升级全新技术
- |ARM推出针对5nm设计的CPU、GPU核心
- 平凡科技点评|ARM推全新架构,功耗降低50%,性能“吊打”骁龙865
