爱奇艺 CTR 场景下的 GPU 推理性能优化
01
背景介绍
推理延迟高,CTR 类模型通常是面向终端用户的,对于推理延迟非常敏感。 GPU 利用率低,计算能力未能全部发挥出来。
02
原因分析
分析工具
Tensorflow Board,tensorflow 官方提供的工具,能够可视化的查看计算流图中各个阶段的耗时,并汇总算子的总耗时。 Nsight 是 NVIDIA 面向 CUDA 开发者提供的开发工具套件,能够对 CUDA 程序进行相对底层的跟踪、调试和性能分析。
分析结论
03
优化方案
算子融合
基于深度学习编译器的自动融合 针对业务的手动算子融合
自动融合
手动算子融合
融合的逻辑在推理时候生效,训练时候走原来的逻辑。 需要对特征进行排序,保证相同类型的特征可以排在一起。 由于每个特征的输入均为变长,在这里我们额外生成了一个索引数组,来标记输入数组的每个元素属于哪个特征。
MultiStream 提高 launch 效率
小数据拷贝优化
合并批次
max_batch_size:一个批次允许的最大请求数量,可以稍微大一点。 batch_timeout_micros:合并一个批次等待的最长时间,即使该批次的数量未达到max_batch_size,也会立即进行计算(单位是微秒),理论上延迟要求越高,这儿设置的越小,最好设置在 5 毫秒以下。 num_batch_threads:最大推理并发线程,在开启了 MPS 之后,设置成 1 到 4 都可以,再多延迟会高。
04
最终效果
吞吐量相比原生Tensorflow GPU 容器提升 6 倍以上 延迟和 CPU 基本一致,满足业务需求 支持相同的 QPS 时候,成本降低 40% 以上