数据|用TensorFlow实现ML模型并调优:每秒可做3亿次预测

机器之心报道
编辑:小舟、蛋酱

用 TensorFlow 实现机器学习模型 , 并使用各种优化技术降低延迟 , 模型的速度最快能够达到多少?
TensorFlow 是目前使用最广泛的机器学习框架之一 , 它加快了研究速度 , 并减少了新模型的生产时间 。 在一篇论文中 , 来自原生程序化 DSP 公司 Zemanta 的数据科学总监 Davorin Kopi?和工程师 Jan Hartman 展示了将在线广告生态系统中的大规模机器学习模型转换为 TensorFlow 框架的过程 , 并将在 TensorFlow 框架中实现的机器学习模型扩展到每秒超过 3 亿次预测 。 因此 , 该研究的主要内容是在 TF 中实现模型并使用各种优化技术以低延迟有效地为其提供服务 。

数据|用TensorFlow实现ML模型并调优:每秒可做3亿次预测
文章图片

论文地址:https://arxiv.org/abs/2109.09541
该研究使用的案例是线上广告的点击预测 。 在 RTB (实时竞价)中 , 多个 DSP(竞标者)通过在网页的加载过程中实时竞标来竞争在线广告空间 。 广告空间是按广告印象出售的 , 这使得以市场价值出售虚拟广告空间成为可能 。 通过使用机器学习 , RTB 还使广告商能够最大化其 KPI , 例如点击率 (CTR) 。 估算广告的点击率是 RTB 的核心问题之一 , 拥有一个好的点击预测模型非常重要 。
在 Golang 中实现的基于自定义逻辑回归和分解机 (FM) 的模型 , 其表达能力受限 , 并且需要手动实现所有学习程序 , 这些都会减慢实验速度并限制模型的预测性能 。 因此 , 研究者决定采用 TensorFlow 框架 , 并用表达能力更强的模型替换现有模型 。
面临的挑战
【数据|用TensorFlow实现ML模型并调优:每秒可做3亿次预测】基于广告竞标这一具体用例 , 该研究遇到了一些挑战 , 共分为实现、服务和优化三个方面 。
一方面 , 为每台机器配备一个或多个顶级 GPU 的成本会高得令人望而却步;另一方面 , 只有一小群 GPU 的机器将迫使研究过渡到基于服务的架构 。 鉴于这两种选择都不是特别可取 , 而且该研究的模型与其他深度学习领域(例如计算机视觉或自然语言处理)的 SOTA 模型相比相对较小 , 因此该研究不在生产中使用 GPU 进行推断 。 并且由于该研究的模型使用稀疏权重 , 其用例也不适合 GPU 工作负载 。
实现
为了给 TF 模型实现有效的训练循环 , 该研究实现和测试了多种方法 。 高吞吐量在线训练和在 TF 中服务的案例研究很少 , 而且文档往往不够具体 , 这迫使研究者必须通读源代码和基准原型才能发现实现过程中的陷阱 。
TF 提供了一个庞大的生态系统和大量具有 SOTA 算法实现的库 。 选择功能丰富的已有实现非常容易 , 但是研究者发现这些实现大多未经优化 , 因此他们决定自己实现算法 。 TF 具有不同抽象级别的 API , 不过 , 一些 API 虽然易于使用 , 但通常是效率低下的最底层操作(例如 Estimator API) 。 研究者最终选择了 Keras3 , 因为它是一个围绕底层 TF 操作的瘦包装器(thin wrapper) , 并具备高水平的性能 , 且易于理解 。 由于 TF 是一个功能和资源都非常丰富的库 , 因此该研究还必须考虑要在其中实现多少机器学习 pipeline 。 研究者选择暂时搁置特征转换和交互 , 仅实现学习算法——尽管它们是最小的可替换部分 , 但却具备最大的改进潜力 。

推荐阅读