快速决策:加速数据处理的开放库如何助力 Snapchat 进行 A/B 测试
Snapchat 等社交媒体应用的功能几乎与流行趋势一样,发展日新月异。为了跟上步伐,其母公司 Snap 在谷歌云服务上采用了 NVIDIA 的开放数据处理库来加速开发。 Snapchat 月活跃用户数超过 9.4 亿,面向用户发布的每一项新功能,在正式发布之前都会进行一系列对照实验。在 A/B 测试周期中,开发团队会基于一小部分用户进行不同变量研究,测量近 6,000 个指标,分析用户参与度、应用性能和变现情况。 Snap 每天早上在 3 小时的窗口期内使用 Apache Spark 分布式框
Snapchat 等社交媒体应用的功能几乎与流行趋势一样,发展日新月异。为了跟上步伐,其母公司 Snap 在谷歌云服务上采用了 NVIDIA 的开放数据处理库来加速开发。
Snapchat 月活跃用户数超过 9.4 亿,面向用户发布的每一项新功能,在正式发布之前都会进行一系列对照实验。在 A/B 测试周期中,开发团队会基于一小部分用户进行不同变量研究,测量近 6,000 个指标,分析用户参与度、应用性能和变现情况。
Snap 每天早上在 3 小时的窗口期内使用 Apache Spark 分布式框架处理超过 10 PB 的数据,每月运行数千个此类实验。通过采用由 NVIDIA cuDF 加速的 Apache Spark,该公司使用 NVIDIA GPU 优化数据处理工作负载, 在相同数量的机器上实现 4 倍的运行速度提升,为扩展提供了一条经济高效的路径。
通过将 NVIDIA 的 GPU 优化软件 (包括 NVIDIA CUDA-X 库) 与谷歌的基础设施管理服务 (如 Google Kubernetes Engine) 相结合,Snap 利用全栈平台实现了大规模的数据处理。
Snap 高级工程经理 Prudhvi Vatala 表示:“实验是我们公司的核心所在。将数据基础设施从 CPU 迁移到 GPU,使我们能够随着时间的推移,让实验高效覆盖更多功能、更多指标和更多用户。我们能够运行的实验越多,就能够为 Snapchat 用户提供越多的创新体验。”
可持续的扩展方式
Snapchat 粉丝经常会在应用中看到新功能——从送达通知到 AI 生成的贴纸,同时 Snap 也在不断推出后台更新,例如性能优化和对新操作系统版本的兼容性更新。
所有这些新功能的 A/B 测试现在都基于 cuDF 运行,使开发者无需更改代码即可在 NVIDIA GPU 上运行现有的 Apache Spark 应用,从而实现轻松部署。用于加速数据处理的开放库基于 NVIDIA cuDF GPU DataFrame 库的强大功能构建而成 ,同时针对 Apache Spark 分布式计算框架进行扩展。
根据 Snap 在 1 月 1 日至 2 月 28 日之间收集的内部数据,与仅使用 CPU 的工作流相比,该团队在 Google Kubernetes Engine 上使用 NVIDIA GPU 每天可节省 76% 的成本。
Vatala 表示:“我们曾规划了一个旨在扩大实验规模的宏伟路线图,但根据现有的基础设施,这将导致计算成本急剧飙升。切换到使用 cuDF 的 GPU 加速管道,我们获得了一种拉平扩展成本曲线的方式,结果非常惊人。”
为了支持工作负载迁移,团队还利用 cuDF 微服务套件,能够自动对 Spark 工作负载进行资格认证、测试、配置和优化,以实现大规模的 GPU 加速。
Snap 团队与 NVIDIA 专家合作,在由 NVIDIA L4 GPU 提供支持的谷歌云 G2 虚拟机上优化了其工作流。根据 Snap 在 1 月 1 日至 3 月 13 日之间收集的数据,他们只需要 2,100 个 GPU 同时运行,而最初的预测则是需要 5,500 个 GPU 同时运行。
A/B 测试团队的后端工程师 Joshua Sambasivam 表示:“当我看到最初实验的结果时,我感到非常惊讶,我们节省的成本远高于预期。Spark 加速器非常适合我们的工作负载。”
展望未来,Snap 团队计划将 Spark 加速器集成到 A/B 团队之外的更广泛的生产工作负载中。
Vatala 表示:“我们没有意识到自己会坐拥这块金矿。到目前为止,我们已经迁移了两个最大的管道,但未来还有很多机会。”
如需了解详情,请关注太平洋时间 3 月 17 日 (星期二) 下午 1 点 Vatala 在 NVIDIA GTC 大会上的演讲。
详细了解 NVIDIA cuDF 并开始使用适用于 Apache Spark 的 GPU 加速。
上图由 Snap 提供,展示了其地图功能的 A/B 测试。