机器之心Pro快手将GPU推理在商业化场景全量落地,机器成本优化超20%


_本文原题:快手将GPU推理在商业化场景全量落地 , 机器成本优化超20%
机器之心发布
机器之心编辑部
快手商业化进程开始加速 , 这对底层计算能力提出挑战 。 快手决定将 GPU 推理在商业化场景全量落地 。
据官方披露 , 快手日活已超 3 亿 , 直播日活达 1.7 亿 + , 快手之夜单场活动快手官方直播间累计观看总人数就超过 9000 万 。 随着业务规模的不断扩张 , 快手商业化进程也随之加速 , 单场直播最高成交额 12.5 亿 , 8 月电商订单总量达 5 亿 。 巨大的商业价值和潜力吸引越来越多的广告主来到快手做营销 。 为了应对日益激增的营销素材 , 快手不断提升底层计算能力 , 率先将 GPU 推理应用到大规模稀疏场景中 , 在提高机器性能、节约成本的同时 , 为广告主提供了更加有效的营销效果 。
2019 年开始 , 快手商业化进程开始加快 , 底层计算能力持续面临挑战:

  • 一方面 , 随着业务的发展 , 业务形态越来越丰富 , 流量越来越高 , 广告主对推荐质量的要求越来越高 , 模型变宽变深 , 算力的消耗急剧增加;
  • 另一方面 , 在广告推荐场景下主要使用 DNN 模型 , 涉及大量稀疏特征 embedding 和神经网络浮点运算 。 作为访存和计算密集型的线上服务 , 在保证可用性的前提下 , 要满足低延迟、高吞吐的要求 , 对单机算力也是一种挑战 。
上述算力资源需求和空间的矛盾 , 如果不解决好 , 对业务的发展会带来很大的限制:在模型加宽加深前 , 纯 CPU 推理服务能够提供可观的吞吐 , 但是在模型加宽加深后 , 计算复杂度上升 , 为了保证可用性 , 需要消耗大量机器资源 , 导致大模型无法大规模应用于线上 。
目前行业比较通用的解决办法是利用 GPU 来解决这个问题 。 GPU 本身比较适合高吞吐、对延迟不太敏感的计算任务 , 在业界应用中 , 主要用于图像、语音或者离线训练等场景 。
对于推荐、广告等场景使用的大规模稀疏模型 , 我们需要解决如下挑战:如何在保证可用性、低延迟的前提下 , 尽可能做到高吞吐 , 同时还需要考虑易用性和通用性 。
业内一般会使用 TensorFlow 进行训练 , 在 GPU 场景推理时 , 则会选择 TensorFlow 或 TensorRT 。 对于 TensorFlow 和 TensorRT 的结合 , 常见的做法是利用开源工具离线将 TensorFlow 模型转换到 ONNX 模型 , 然后从 ONNX 模型加载 , 这引入了更多的中间环节 , 当 ONNX 不支持 TensorFlow 的某些 Op 时 , 转换会失败 。 这限制了模型的结构 , 也导致训练好的 TensorFlow 模型无法直接以端到端的形式应用于线上 。
快手借鉴业界经验 , 从实际业务出发 , 围绕大规模稀疏模型场景 , 针对发挥 GPU 算力和 TensorFlow 与 TensorRT 的结合易用性 , 进行了一系列技术上的探索和尝试 。
融合 CPU、GPU 各自硬件优势
快手在硬件部署时就充分考虑了硬件特点 , 融合不同硬件的优势 。 在广告推理场景下 , CPU 适合大规模稀疏特征 embedding访存密集型任务 , GPU 适合进行 DNN 这种大规模浮点运算的计算密集型任务 , 以此实现 CPU 和 GPU 的高效率配合 。
于是 , 快手从多个业务的推理服务中选取典型的服务 , 简化场景 , 提炼出核心计算过程 , 尝试不同的 GPU 卡进行压测 , 综合考虑硬件的特性、成本以及业务的发展情况 , 确定机型 , 对齐算力需求和硬件能力 。
保证易用性 , 实现训练到推理端到端
结合 Tensorflow 的高可扩展性和 TensorRT 的高性能 , 快手在线进行 TensorFlow 模型到 TensorRT 模型的转换 , 基于 TensorRT 推理专用引擎的高性能 , 加速 DNN 计算 , 保持 TensorFlow 模型的训练和在线推理以端到端方式进行 。
机器之心Pro快手将GPU推理在商业化场景全量落地,机器成本优化超20%