作者简介
Shan Zhou,携程算法专家,主要负责携程度假AI应用在CPU和GPU平台的性能优化,涉及计算机视觉,自然语言处理,机器翻译和语音处理等多个领域。
随着深度学习技术的快速发展,人工智能应用逐渐落地到各个生产生活场景,大大提升了生产效率,降低了生产成本。携程旅游的度假AI部门根据业务特征需求,已将计算机视觉,自然语言处理,机器翻译,语音识别和处理等多种主流AI技术逐步应用到旅游业务的多个场景,包括智能客服平台,搜索排序等。另外值得一提的是度假AI自主研发的机器翻译技术为全集团公司提供翻译服务,将为携程推进国际化进程发挥重要作用。
为了保证服务质量,模型复杂度逐渐提升,计算量不断增加,由此带来的问题也日益明显:一是计算资源需求增加所带来的成本上升;二是推理过程计算量过大导致响应时间延长,极大影响了用户体验,而训练速度太慢则降低了生产效率。因此优化训练和推理性能的需求尤为迫切。
本文将着重介绍AI应用的推理性能优化方法,从系统以及模型等层面阐述推理性能优化的一般方法,并从实际应用出发,给出了具体优化的实践案例和取得的部分成果以及对未来发展方向的一些展望和思考。
一、推理性能优化的背景和发展现状
当前绝大多数人工智能应用都是基于深度学习技术,在数据驱动下建立算法模型,再经过训练测试、工程部署和推理实现完成。某个具体的算法模型能否最终成功落地为产品,满足场景需求,推理性能是关键变量之一。影响这个关键变量的因素非常多,包括硬件配置,工程部署方式,算法和模型复杂度以及深度学习框架等。
1.1 推理服务的性能评价指标
深度学习推理服务根据应用需求和特征不同,对性能需求也有所不同。比如计算机视觉和自然语言处理,机器翻译等服务主要是计算密集型应用,对计算资源需求较高;搜索推荐类的应用的输入数据特征维度高,更偏向于I/O密集型。
无论是哪种应用,都用延迟和吞吐作为常用的服务性能指标。在线类的应用延迟敏感,对响应时间要求高,而离线类的应用则侧重于批量处理的高吞吐需求。
具体来说,延迟(latency)可以细分为平均延迟,90线,95线和99线(99%的请求所达到响应时间)等,吞吐(throughput)则表示每单位时间处理的请求数(QPS/TPS),或者字符数(CPS)等,整体服务的并发度取决于两者的共同表现。
除此之外,还有一系列用来反映服务处理质量的指标,跟深度学习模型和算法关系密切,主要有精确率,召回率等,或者针对具体应用的特定指标,比如机器翻译常用的BLEU等。推理服务的终极目标就是满足服务质量的指标需求,实现低延迟和高吞吐。
1.2 主流的深度学习框架
工业界将深度学习技术快速落地的便捷有效的方式就是借助深度学习框架,部分框架兼顾训练和推理,将二者合二为一,比如TensorFlow,PyTorch和MXNet等主流框架,另外一些为了实现推理的高性能,将训练和推理进行分离,专门实现推理框架,比如ONNX Runtime,TensorRT等。
框架名称 |
支持训练 |
硬件平台 |
模型种类 |
Tensorflow |
是 |
GPU/CPU/TPU |
较多 |
PyTorch |
是 |
GPU/CPU |
多 |
MXNet |
是 |
GPU/CPU |
多 |
TensorRT |
否 |
GPU |
一般 |