NVIDIA GPU全链路优化助力蚂蚁金服金融视觉平台

by charank

案例简介

•    蚂蚁金服研发的金融视觉平台是一个面向金融场景的,一站式的视觉解决方案平台。

•    本案例中通过基于Tesla V100和NVLink的基础设施,以及Hierarchical ALL-Reduce策略和混合精度训练,极大的提升了平台模型训练速度,并且在多机场景可以达到接近线性加速比;模型预测场景,通过TensorRT的优化加速,在多个场景性能提升2-10倍;MPS的使用助力预测吞吐提升1.5倍。

•    本案例主要应用了Telsa V100 GPU,NVLink等硬件设施,以及混合精度训练,TensorRT,和MPS的优化手段。

Case Introduction

•    Financial Vision Platform, is an one-stop computer vision solution developed by Ant Financial.

•    In this Case, through the NVIDIA hardware and software, our platform achieves full-pipeline GPU acceleration from model training to serving.

•    The major products utilized in the case is NVIDIA Tesla V100GPU, NVLink, Tensor core,TensorRT, and MPS.

 

背景

蚂蚁金服集团是一家旨在为世界带来普惠金融服务的创新型科技企业,总部位于中国杭州。

它起步于2004 年成立的支付宝,2014年10月正式成立。

蚂蚁金服的金融视觉平台,是一个解决金融领域中,计算机视觉问题的综合解决方案平台。它既提供了全场景可以服用的通用服务接口,例如,身份证,银行卡,驾驶证,行驶证等;也具备图像分类,目标检测,文字识别,以及视觉反欺诈的定制化场景,更好的支持不同业务个性化的视觉需求,如贷款凭证检测,证照分拣,保险反欺诈等场景。平台赋能业务可以带来方面的价值:提升了业务效率,加快建模进程,节省人力成本,提升了审核能力,减少了资产损失,并且可以从容应对监管风险。

 

挑战

平台支持了非常多的业务场景,因此承担了巨大的在线流量,模型预测的延时要求很高,且在多模型组合的情况下,每个模型的延时都会被叠加,因此问题更加突出。同时,由于GPU资源非常宝贵,在考虑成本和满足延时需求的前提下,预测吞吐就成为了在线系统面临的另一个重要挑战。

另一方面,定制化入口可以支持用户进行千万样本训练,因此平台需要具备大规模训练能力,且业务对于迭代效率有很高的要求,因此单机的训练加速,以及超大规模的线性扩展的多机多卡训练,且在batch size到达一定量级之后,收敛性的保证,都成为了平台面临的极大挑战。

方案

混合精度优化

单机内的训练优化,我们采用NVIDIA的自动混合精度技术,充分利用V100GPU Tensor core的加速,以及FP16精度的使用,可以使用更大的batch size和训练更大的模型。在我们的图像分类,目标检测和bert场景都有不错的性能提升。 如下图中所示:图像分类模型Resnet_v2_50,性能提升1.69倍,显存占用减少50%;目标检测模型SSD_Inception_v2,性能提升1.5倍,显存占用减少49%;bert模型性能提升2.35倍,显存占用减少21%。

Hierarchical AllReduce 的多机多卡优化

在多机多卡训练环节,我们采用了层次化AllReduce的优化手段进行训练加速。最传统的ps模式有比较突出的问题,通信量随着worker的规模而线性增加,且ps节点本身也是额外的资源负担。Ring AllReduce策略,可以实现通信量不再随着节点数增加而增加,利用了环中每个节点的上下游通信带宽,但是当环较大时,多机间的通信效率成为了整个环通信瓶颈。因此我们结合我们的硬件拓扑情况,采用了Hierarchical AllReduce,机器内通过NVLink形成子环,可以充分提高这层环的通信效率;第二层环中,每台机器只有rank0卡参与,环变得更小,且在这层环中,采用了25Gb/s RDMA的通信链路,开启GPU Direct RDMA技术,最大限度的发挥出当前硬件条件下的通信性能。其中GPU卡使用的Tesla V100,单机内NVLink互联,通信层使用的NVIDIA的NCCL2,来进行节点内和节点间的GPU通信。

在VGG16场景,由于参数量并不是很大,使用Hierarchical AllReduce可以在40卡的规模下,取得近94%的加速比。但是在bert场景,尤其是XLA和混合精度优化之后的bert训练场景,如果不做优化,基本没有扩展能力,32卡上只有10倍的加速。从训练的时间分布来看,分为前向+反向计算,AllReduce梯度规约,梯度应用,我们逐步尝试了多种优化手段:

a. 通信链路从tcp升级为25Gb/s RDMA  RoCE,并且在双端口个25Gb绑定的情况下,通过智能组网,通过多个环充分利用每个端口的带宽,可以将带宽利用超过40Gb/s,减少了AllReduce的时间加速比提升到18.4

b. 采用Hierarchical AllReduce 进一步缩短了AllReduce的时间,加速比到20.2

c. 采用梯度累积策略,尝试了N=6的场景,增加了计算占比,效果几乎无损,加速比到25.4

d. 采用梯度FP16压缩,加速比提升到26.2,不过这里对效果有影响,需要与Scaling的策略共同使用

TensorRT延时优化

很多业务对延时比较敏感,GPU场景我们使用了TensorRT来做优化。大部分cnn的模型都是可以直接利用uff parser或者tf-trt进行优化并且取得不错的优化效果。但是在TensorRT7.0之前都是不支持rnn模型的,而我们的识别模型是经典的cnn+rnn+ctc的解决方案,因此不能利用自动工具做优化。由于cnn部分有不错的优化效果,因此我们对网络进行了拆分,把cnn部分独立出来,并且进行TensorRT优化,剩余网络部分依然通过tf的session进行预测。尽管引入了额外的DTOH和HTOD,但整体上性能还有所提升。识别模型场景,还有另外一个挑战就是变长,而TensorRT engine只能支持固定的shape,我们与NVIDIA同学深度合作,利用TensorRT 6.0新发布的dynamic shape的特性,通过tensorrt network api重写cnn部分网络,支持了dynamic shape。TensorRT 7.0可以把整个网络都通过network api进行重写,可以进一步省掉额外的DTOH和HTOD的消耗。

MPS吞吐优化

cuda context内的多个stream可以进行并行,但是tf(TensorFlow)只有一个计算stream,因此单个tf进程无法利用mutil-stream并行技术。多个tf进程,属于多个cuda context,同样无法多stream并行。所以集群的gpu水位有进一步提高的空间。多个使用MPS client的进程,实际上是通过同一个实际的MPS cuda context来计算,因此可以让多进程间的stream并行,进而提升gpu利用率,整个集群的吞吐也得到提升。在bert场景,使用MPS技术可以是QPS从200提升300。但是MPS存在一个已知问题,当其中一个client挂掉的情况,会让所有client进程都hang住,因此适合在离线场景,或者是足够灵敏的切流技术条件下,有策略的使用。

 

影响

NVIDIA GPU的软硬件能力,包括Tesla V100 GPU,NVLink,NCCL2,混合精度,Tensor Core,TensorRT,MPS;极大的帮助金融视觉平台支撑业务;预测优化,延时优化2倍以上,可以用深度模型去支撑预测延时高度敏感的场景;吞吐优化,充分挖掘GPU算力,bert模型场景提升了50%预测吞吐,相当于在该场景减少了33%的成本;混合精度训练可以加快训练速度,提升单机训练速度,多机多卡训练可接近线性加速比,经优化垃圾分类场景,模型训练时间从118小时加快到仅用12小时,让平台可以进行超大规模模型训练,大大的提高的平台能力的上限。由于这些优化,让金融视觉平台可以更快更广的支持业务,并且助力业务在效果和效率上都有了极大的提升。

从下面从几个角度都可以充分说明:

a. 业务接入。原来需要人肉对接排期,现在业务可以自助接入,大大提升了业务迭代效率。

b. 模型开发。原来需要算法手工处理数据,训练,评测,发布,现在平台一站式解决,加快开发速度。

c. 人力成本。原来很多环节需要人工审核,而且有很多场景人力很难发现问题,不仅效率差,成本高,还无法满足业务需求,现在智能审核,节省成本且更加高效。

d. 资产损失。原来人工无法覆盖的欺诈场景,现在通过视觉反欺诈可以减少保险欺诈等资损。

e. 监管风险。原来监管部门下发的监管需求,合规和风险识别能力不足,无法最大限度的满足监管要求,始终面临着较大的监管风险,现在面对监管变得更加从容。

蚂蚁金服 人工智能部 高级技术专家 张晓明(花名山晓)