『』腾讯开源TurboTransformers,推理加速性能超TensorRT主流优化引擎( 二 )
类似于 NVIDIA FasterTransformers 方案 , TurboTransformers 将所有 GEMM 运算之间的计算融合成一个调用核心 。 这样有两个好处 , 一是减少了内存访问开销 , 二是减少多线程启动开销 。
对于这些核心 , TurboTransformers 在 CPU 上采用 openmp 进行并行 , 在 GPU 上使用 CUDA 进行优化实现 。 对于比较复杂的 LayerNorm 和 Softmax 算子 , 它们包含了不适合 GPU 上并行的规约操作 , TurboTransformers 为它们设计了创新并行算法 , 极大降低了这些算子的延迟 。
框架层优化
由于 NLP 的采用变长输入特性 , 每次运算中间结果的大小其实并不相同 。 为了避免每次都分配释放内存 , TurboTransformers 通过 Caching 方式管理显存 。
此外 , 团队为 TurboTransformers 提供了一些脚本 , 将二者的预训练模型转化为 npz 格式供其读入 , 以无缝支持 pytorch/tensorflow 训练好的序列化模型 。 考虑到 pytorch huggingface/transformers 是目前最流行的 transformer 训练方法 , TurboTransformers 支持直接读入 huggingface/transformers 预训练模型 。
应用部署
为了减少用户开发难度 , TurboTransformers 提供了 C++和 Python 调用接口 , 可以嵌入到 C++多线程后台服务流程中 , 也可加入到 pytorch 服务流程中 , 增加几行代码即可获得端到端 BERT 加速 。 现阶段更建议通过 docker 部署 TurboTransformers , 一方面保证了编译的可移植性 , 另一方面也可以无缝应用于 K8S 等线上部署平台 。
性能测试
【『』腾讯开源TurboTransformers,推理加速性能超TensorRT主流优化引擎】团队首先在三个 CPU 硬件平台上测试了 TurboTransformers 的性能 , 下图显示了在 Intel Xeon 6133 CPU 上的性能测试结果(150 次迭代的均值):
本文插图
接下来在四个 GPU 硬件平台上进行测试 , 下图显示了在 NVIDIA RTX 2060 GPU 和 NVIDIA V100 GPU 上的性能测试结果(150 次迭代的均值):
本文插图
NVIDIA RTX 2060 GPU 测试结果 。
本文插图
NVIDIA V100 GPU 测试结果 。
此外 , 团队还在多个CPU和GPU等平台上测试了 TurboTransformers , 更多性能测试结果可见项目主页 。
目前 , TurboTransformers 暂时只支持 FP32 的计算 , 未来腾讯将对其进一步改进 , 包括对 GPU FP16 的支持等能力等 。
推荐阅读
- 腾讯新闻深网|小米引入新高管,任命杨柘出任中国区CMO
- 区块腾讯安全领御TUSI区块链落地五大场景,助力可信城市建设
- |你的微信被监听了?腾讯微信团队辟谣:绝不会做
- 金融投资报社|网易云音乐王者归来,腾讯音乐危机重重,音乐平台“二战”在即?
- 信息史上最全SpaceX火箭数据开源,核心、组员舱、起落架、发射信息全都有!
- 国货腾讯携手吴晓波推出中国首部大型品牌经济纪录片《新国货》
- 腾讯科技|vivo发布X50系列手机:微云台结构量产 三机型3498元起售
- 腾讯科技|一文读懂网易招股书亮点:发售价不高于126港元 研发人员超1万名
- 腾讯大学|《科技向善》出版,马化腾序言再谈使命愿景
- 开源中国|猎鹰与龙飞船基于Linux,采用C++、Chromium与JS开发
