1、WeChatAITurboTransformer 高效的TransformersGPU服务系统Jiarui Fang方佳瑞腾讯微信模式识别中心高级工程师#page#日程动机系统设计计算优化内存优化服务优化接口使用性能指标2020/12/#page#背景:Transformer模型Attention结构更适合变长序列处理易于并行,优于RNN,CNN长依赖,任意两个位置之间距离为常数Attention is AlI your needEncoder+Decoder结构解决NMT问题BERT只有Encoder结构的预训练模型Positona+OEncooinErcodinOutputs(shifed
2、righ2020/12/#page#造轮子动机(1):业务需求多Transformer是业界最成功的NLP网络结构BertServing在模式识别中心广泛应用,两条Query之间相似度比对,文章摘要,情感分类,机器翻译,对于其极致工程实践大有必要PYTORCH微信读书张腾讯小微TensorFlowfrozenmodel微信对话开放平台MicroservicesTrainingServingCPU/GPU serverdatasetNLP算法研发到上线流程2020/12/#page#造轮子动机(2):计算需求大Transformer模型需要多计算资源来响应各种深度学习模型所需浮点运算次数对比L8
3、七7200PositionalEncodingBERT-LARGEBERT-BASEAlxNotResNo50GooglaNeinputsBert-encoder结构图image = 3x300x300image=3x224x224seq_length=40,batch=2020/12/125#page#造轮子动机(3):相关工作无法满足需求需求是什么?NLP计算框架需求NLP计算框架特点应对输入变化的能力输入大小变化(batch_size,seq_length)用户请求from_seq_length不定计算不需要根据输入尺寸对计算图预优化BeamSearch解码时target_seq_len
4、gth自增应对变化的内存分配计算低延迟CPU/GPU上高性能推理计算服务高吞吐3CPU/GPU上高性能网络服务易于开发兼容训练框架的模型加载和调用方式2020/12/#page#造轮子动机(3):相关工作无法满足需求标准品定制化尝试:性能不佳Can we have cake and eat it too?性能相关工作预处理输入可变使用难度快困难YesNoPyorch JIT (CPU)快困难NoNoNV-BERT(GPU)推理框架困难快/快YesYesTensorRT v7.2 (GPU)快/快容易YesNoONNX-runtime(CPU/GPU)慢/尚可容易NoNoTensorflow1.
5、0 (CPU/GPU)训练框架兼做推理尚可/尚可容易NoYesPytorch (CPU/GPU)容易理想效果快/快NoYes2020/12/12jiaruifangtenoentcom#page#日程动机系统设计计算优化内存优化服务优化接口使用性能指标2020/12/#page#TurboTransformers系统设计QQ看点O2腾讯小微开箱即用的transformer加速补丁应用微信对话开放平台etc讯AI开放平台C+/python服务方式GRPCe Pyihonetc,asyncio服务框架变长请求Batching服务策略Batcn SchedulerG PyTorchpythonC+/
6、python调用方式CONDA接口/部署PIPdocke增加几行代码获得端到端加速Pybind 11变长输入的内存管理策略推理框架TensorMemoryPretrain Model兼容pytorch数据定义ConversionManagementLoaderBert Encoder/Transformers Decoder/ MultiHeadedAtn/FFN极致的CUDA和C+性能优化效果算子MatAddBiasAddBiasAddBiasSoftLookupMutMaxLayerNormActGeLUTransposeTable送支持Tencent主流服务器硬件CPU/GPU硬件/平台