『量子位』推理性能比第二名快5倍,阿里公开核心技术:如何摘下4项世界冠军( 三 )


这一点对点的协商策略 , 在128节点下 , 对0号节点 , 造成了一个局部的热点 , 需要通信256次 。 AIACC-Training放弃了这种中心节点的协商模式 , 转而采用了去中心化的方式在128个节点间进行协商 , 因为128个节点实际分布在16台实例中 , 我们的优化可以轻易的识别这种拓扑结构 , 不再会在任何单个GPU卡上产生256次通信热点 。
考虑到大部分时候ready的不止一个梯度 , 这种优化还能够同时对多个梯度进行协商 , 因此实际降低协商的通信量大约一个数量级 。
细粒度梯度融合梯度协商之后 , 所有节点都知道了当前这个时刻可以进行通信的梯度 , 接下来面临的一个优化问题是 , 我们是要在收集到任意数量的梯度之后立刻对所有的梯度进行通信 , 还是选择某个更优化的组合方式来通信 。
这里一个确定性结论是 , 对单个梯度进行单次通信 , 通信效率总是非常低下的 , 我们需要进行多个梯度的融合 , 然后再对融合后的更大的粒度上进行通信 。
AIACC-Training引入了细粒度的融合策略 , 我们会在通信环节去动态分析当前的通信状况进而选择一种更平衡的融合策略 , 避免出现过大的差异 。
这样会使得每次通信的粒度尽量均匀 , 减小出现大幅波动的可能 。 因为这种融合策略对不同的网络模型而言存在不同的最优值 , 因此们实现了自动优化的功能 , 会动态的调整此参数 , 寻找最优的融合粒度 。
异步多流通信底层的通信库还是采用NCCL来进行GPU间的数据通信 , NCCL的编程模型仅支持单一的通信流进行通信 , 而单一的通信流的效率很低 , 单流的转发能力往往只能达到10Gbps左右 。
AIACC-Training从更高的通信引擎层面支持了多流 , 会分配不止一个通信流来进行梯度通信 , 每个流服务于切分出来的某个融合梯度 , 而后续切分的融合粒度并不依赖于当前切分的融合梯度 。
因此即使多流之间的通信是完全异步运行 , 即使多流之间的速度不均衡 , 也不会严重影响整体的效率 , 在规模扩大的时候 , 能更好的维持最佳的网络带宽利用率 。
和融合粒度一样 , 切分的流数 , 也会和训练模型 , 以及当前的实际网络带宽有很强的相关性 , 因此无法离线的给出一个最优设定 。
我们设计了自动tuning机制 , 将通信流数目加入了自动tuning环节 , 融合粒度以及切分的流数 , 会联合自动tuning出最佳的参数组合 。
模型优化算法层面的优化主要可以分为数据、模型、超参和优化器四个方面 。
数据上 , 我们采用了多分辨率图像渐进训练 。 这种方式不仅可以在前期利用小分辨率图像大大提升前后向计算速度、又可以弱化训练和推理时采用不同尺寸带来的准确率损失 。
模型上 , 我们吸收了近期一些网络变体的优势 , 也根据最新的一些研究对BatchNorm做了微弱的调整 。
超参方面我们做了很多探索 , 如在学习率衰减的方式上 , 我们没有用很流行的stepdecay或是cosinedecay,而是采用了更直接的lineardecay , 另外我们也发现warmup的步数非常重要 。
优化器上 , 我们重新设计了优化器方案 , 同时吸收了SGD的泛化性优势和自适应优化器快速收敛 , 使得改进后的优化器训练速度更快且准确率更高 。
基于上述优化工作 , 我们在28个epoch共1159次迭代下完成训练并达到top593%的精度要求 , 而原来训练则需要90个epoch才能达到相同的精度 。
性能结果结合以上所有性能优化 , 我们在128卡V100上 , 达到了158秒就能获得top593%的精度 , 创造了新的世界纪录 。
刷新推理性能记录:比第二名快5倍以上在推理项目中 , DawnBench竞赛要求推理框架针对ImageNet的10000张图片的验证集进行图片分类 , 分类模型的top5精度不低于93% 。
【『量子位』推理性能比第二名快5倍,阿里公开核心技术:如何摘下4项世界冠军】在batchsize=1的配置下 , 计算推理每一张图片的平均时间和平均成本 。 在上一个性能纪录中 , 平均推理时间只有不到1ms , 已经远远超过了人类视觉的反应速度 。