背景
滴滴云 IFX 团队,致力于 AI 模型在特定硬件上的极致优化,近期团队针对 ImageNet 分类模型,在算法训练、低精度量化、异构硬件加速三方面进行了深入的研究,以 93.02% Top5 正确率的 ResNet26 模型在 NVIDIA T4 上达到了 0.382 ms 的 Inference Latency 性能,打破斯坦福 DAWNBench 已有记录。
斯坦福大学 DAWNBench 是全球人工智能领域最权威的竞赛之一,是用来衡量端到端的深度学习模型训练和推理性能的国际权威基准测试平台,相应的排行榜反映了当前业界深度学习平台技术的领先性。其中 ImageNet Inference 部分,要求参赛机构的计算平台对 50000 张图片进行精准识别并分类,要求满足 top5 93% 以上的准确率,并按照推理时间进行排序。
Github 地址:https://github.com/didiyun/dawnbench-ifx
算法训练优化:数据增广、知识蒸馏
我们采用 ResNet26 作为基础模型,更为精简的网络结构也给模型算法精度提升带来了难度。因为 DAWNBench 要求,提交时所用的模型在 ImageNet 验证集上的 top5 准确率能够达到 93% 以上。
围绕着如何提升模型的泛化性能,我们从数据增广、模型训练等方面引入了多种 tricks。在数据上,我们使用了 Random Erase 和 AugMix 的增广方法;模型优化训练过程中,我们对学习率采用 warm up 和 cosine decay 的调整策略,损失函数加入 label smooth 方法。
在获得一个性能较强的 baseline 后,我们利用一个基于 NAS(Neural Architecture Search) 的高性能的小模型 MixNet 作为 teacher model,与已训练好的 student model (ResNet26模型),经过多次知识蒸馏,将 ResNet26(FP32)模型的精度从 92.57% 提升至 93.19%。
模型量化优化:post-training,space tuning
为充分利用 NVIDIA T4 TensorCore 的计算能力,我们选择在推理阶段使用 int8,但是低精度的引入由于 int8 相比 FP32 数据表达能力更弱,反映在结果上就是对模型准确率有影响。为解决这个问题,目前主流的方法有两种:
- quantization aware training (QAT) 训练 int8 模型;
- post-training quantization 用训练好的 FP32 模型来直接做量化;
其中第一种方案生成的模型效果会好一些,但是 int8 模型训练对框架和使用者要求比较高,同时训练周期长。第二种后量化方案只需要模型和一些少量数据就可以完成,很方便。所以本次训练选择了第二种方法。
目前开源的框架针对 post-training 量化方法主要是 Nvidia TensorRT 提出的量化算法,在 tf-lite、mnn、ncnn 等端上框架已经支持。这种量化算法的核心是通过 KLD 散度方法,针对每一层激活值求得量化前后两个分布的差异程度,然后计算出一个激活 scale。实测 Resnet26 在使用此量化方法后模型精度为 92.764%。
基于上面的量化结果,我们采用了一种新的校准算法,对 int8 模型的权重 scale 和激活值 scale 进行联合校准,在一个较大的解空间内 tuing 出结果最优的一组 scale,这组 scale 生成的 int8 模型实测准确率达到 93.02%。
极致推理优化:图融合、汇编优化
近些年进行 GPU 底层优化的项目很多,基本都在 PTX 层面进行优化,PTX 作为中间代码,可以脱离底层硬件的架构,更方便开发与维护,相反 PTX 经过编译后并不能准确的控制指令的排布以及一些细节的设置。
我们执着于进行更加深度的优化,从 Kepler 架构到 Ameper 架构都进行了汇编器的开发,来满足我们使用汇编优化实现。手工的汇编相比通用计算库 (Cublas,Cudnn,TensorRT) 能提供更多的性能优势。
本次优化,我们在 Turing 架构上对标准的 Resnet26 网络的所有计算单元进行了汇编优化,相比 TensorRT 的前向计算时间 573us,我们提升到了382us。
我们进行的汇编优化包括以下几个方面:
- 控制计算访存比,合理的数据划分,然后使用对应的访存指令可以减小访存的数据量以及指令数;
- 计算单元的融合,如 CONV+BN+RELU,CONV+BN+RELU+MAXPOOL 等结构使用一个函数进行实现,减少数据的存入与取出;
- 合理使用 TensorCore 进行优化,在获取强大计算能力的同时,由于指令的特殊性还能减少访存;
![v2-14d016fc14161c3a6da0844945ae9324_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/fe15e2ab7ca5d2ac7c99b62569bd5805.jpeg)
Resnet26 所有 op 在 nvidia T4,tensorrt vs ifx 性能对比
总结:直播揭秘等你来
通过从算法训练、低精量化、汇编优化等几个方面的优化,IFX 团队在 Resnet26 模型上完成了新的性能优化突破,在相同的 NVIDIA T4 硬件平台上,打破了 DAWNBench 新的记录。由于 DAWNBench 榜单已经终止提交,后续滴滴云将在 MLPerf 继续提交我们的优化成果。
为更好的把我们的优化成果分享给大家,可关注滴滴云公众号或加滴滴云小助手:didiyun0125,进入技术交流群,我们将在 10 月开启直播。
直播简介:
斯坦福DAWNBench挑战是如何实现的 2019年滴滴云获得 DAWNBench 性能和成本双料冠军,2020年,我们的实现再一次突破了榜单。
直播揭秘:
* 如何从算法模型和工程优化两方面入手进行性能提升
* 如何在同等算力的 GPU 上榨取更多的硬件性能
【作者:滴滴云 IFX 团队】
滴滴云:NVIDIA A100 深度解密(一):GPU 峰值计算那些事 滴滴云-为开发者而生-DC2 EIP EBS WAF SLB DDOS高防vGPU云服务器哪家好云数据库对象存储价格 滴滴云:免费测试|滴滴云开放基于NVIDIA A100的GPU裸金属服务器测试