:腾讯开源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 等线上部署平台 。
性能测试
团队首先在三个 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,推理加速性能超TensorRT主流优化引擎】目前 , TurboTransformers 暂时只支持 FP32 的计算 , 未来腾讯将对其进一步改进 , 包括对 GPU FP16 的支持等能力等 。
- 职场小趣闻另两位大学生创始人,如今过得怎样了,当年跟马化腾一起创办腾讯
- 亿车经掀起汽车开源革命一起奔小康,几何品牌满周岁
- 潮黑社腾讯与苹果妥协,却对国内友商一硬到底,现代版的远交近攻
- Niushop开源商城+ 农村 = 新蓝海,电商商城走进农村,互联网
- 口袋阅腾讯阅文口袋阅评测:130克,原来墨水屏也能打电话听歌玩游戏上网页
- 信息检索站麒麟处理器AI性能有多强?以至于可以拦截腾讯的“越轨”行为
- 财经涂鸦闫敏仍为法人,洪丹毅担任腾讯理财通运营主体公司总经理
- 云计算视界中国公有云服务市场一超多强:阿里云当先 华为腾讯尾随其后
- 开源中国Windows 版 LibreOffice 因性能问题要求使用 Clang 进行编译
- 开源中国版 LibreOffice 因性能问题要求使用 Clang 进行编译,Windows