使用 NimbleEdge 和 ONNX Runtime 实现高性能设备端实时 ML

作者:

Nilotpal Pathak, Siddharth Mittal, Scott McKay, Natalie Kershaw, Emma Ning

2024 年 6 月 17 日

NimbleEdge 是一个设备端机器学习 (ML) 平台,可在移动应用程序中实现实时个性化,在最终用户的移动设备上而不是云端执行数据捕获、处理和 ML 推理。有效利用移动计算以最小的设备资源使用量提供最佳性能是 NimbleEdge 的首要任务。为此,NimbleEdge 利用各种 ML 推理运行时,其中最突出的是 ONNX Runtime

在这篇博文中,我们将探讨如何在移动应用程序中利用设备端计算来实现经济高效、保护隐私的实时 ML,以及 NimbleEdge 如何利用 ONNX Runtime 来实现这一点。我们还将分享 NimbleEdge 在印度最大的梦幻游戏平台之一的设备端部署结果,该平台拥有数亿用户。

简介

随着数字消费者应用程序的发展,机器学习 (ML) 在数字体验(跨电子商务、游戏、娱乐)中变得越来越重要。基于 ML 的推荐系统是这种现象的一个突出例子。减少选择障碍并帮助提高转化率和参与度,这些现在在大型应用程序中很常见。

传统上,推荐系统仅使用历史客户行为(例如购买、浏览、点赞),每周、每天或每隔几个小时更新一次。然而,LinkedInDoordashPinterest 等先锋应用程序最近已将近实时和实时功能纳入推荐中。这使得能够根据几分钟甚至几秒钟前的用户交互提供高度新鲜的推荐,从而显着提升关键业务指标。

云端实时 ML 的挑战

然而,在云端构建实时 ML 系统涉及几个主要挑战

Summary of the challenges of real-time ML on the cloud
  • 高昂的计算成本: 实时存储和处理会话中用户交互数据,云成本高得令人望而却步
  • 上市时间和复杂性: 设置用于 ML 的实时云管道非常复杂,并且需要大量时间和开发人员带宽
  • 隐私风险和合规性: 用户的会话内点击流数据必须发送到云服务器进行处理,引发隐私担忧
  • 扩展挑战: 处理流量高峰需要大量的备用云容量,或者快速扩展,这在云端很难实现
  • 高延迟: 由于从/向用户移动设备进行云 API 调用所需的时间而导致的高延迟

设备端 ML 作为替代方案

在用户的移动设备上运行实时 ML 以进行推荐是使用云的可行替代方案。这消除了与云相关的大部分挑战,如上所述。

  • 成本: 通过设备端推理和数据处理,显着降低云计算需求
  • 隐私: 会话内用户交互数据在设备上处理,增强隐私性
  • 延迟: 大多数现代智能手机都具有快速数据处理和推理计算的高度能力
  • 扩展: 轻松扩展,因为流量增加转化为更多可用于计算的移动设备

然而,开发和维护设备端实时 ML 系统也非常复杂,并且需要构建用于以下目的的系统

  1. 设备端实时事件捕获和存储
  2. 设备端特征处理(如滚动窗口聚合)
  3. 从云端同步特征
  4. ML 推理执行,适当平衡跨不同移动设备的延迟和资源利用率。

所有这些都是高度复杂且耗时的努力,因此高性能的设备端实时 ML 非常具有挑战性。

NimbleEdge 与 ONNX Runtime:端到端设备端 ML 平台

NimbleEdge 通过端到端托管设备端实时 ML 平台帮助规避上述复杂性。该平台加速并简化了跨设备端 ML 生命周期(无论是实验、部署还是维护)的流程

NimbleEdge's cloud ML pipeline architecture and its interlinks with ONNX Runtime

即用型设备端 ML 基础设施

  • 设备端数据仓库: 在托管的设备端数据库中存储会话内用户事件(例如,电子商务中的产品浏览量、购物车添加),查询延迟 < 1ms
  • 数据处理: 在设备端运行类似 Python 的预处理脚本,以计算来自实时用户输入的特征
  • 特征存储同步: 维护实时 ML 所需的云特征的频繁更新的设备端副本(例如,食品配送应用程序主页上餐馆实时排名的开放餐馆列表)

轻松的设备端 ML 模型管理

  • 无线更新, 完全解耦 ML 模型更新和前端应用程序更新,从而帮助实现快速 ML 实验

统包、优化的推理运行时配置

  • 部署和兼容性验证: 管理部署和兼容性矩阵(例如 ML 模型、SDK 运算符、Android/iOS、硬件功能,如 NPU/GPU 等)
  • 模型性能优化: 通过从多执行器基础架构中选择性能最佳的推理运行时来确保最佳模型性能;为每个(设备型号 x ML 模型)排列配置后端调度执行、并行处理、线程和核心计数等

用于推理执行的 ONNX Runtime

最佳地执行推理在设备端 ML 中至关重要。一方面,实时 ML 用例需要快速计算,以最大限度地减少最终用户的延迟。另一方面,移动设备资源受限,电池和处理能力有限。为当今分发的 5,000 多种独特设备类型实现延迟和设备资源利用率的最佳平衡是一项巨大的挑战。

对于推理执行,NimbleEdge 利用多种运行时,其中最突出的是 ONNX Runtime。ONNX Runtime 是一个开源、高性能引擎,用于加速云和边缘环境中的机器学习模型。其关键功能之一 ONNX Runtime Mobile 经过专门优化,可提供更轻更快的模型推理。它为量化、硬件加速(例如,使用 CPU/GPU/NPU)、算子融合、并行处理等提供配置。NimbleEdge 以各种有影响的方式利用 ONNX Runtime Mobile

  • 应用静态和动态量化技术以显着减少模型的内存占用
  • 自定义运行时构建以匹配模型所需​​的特定运算符和数据类型
  • 利用低级控制机制来细致地管理和优化资源(CPU、电池)消耗

通过此处列出的功能,NimbleEdge 的全面设备端 ML 平台可在数天而不是数月内实现高性能实时 ML 部署。

案例研究:为印度领先的梦幻游戏公司实时排名梦幻体育比赛

梦幻游戏公司(名称因保密原因而模糊处理)是一家印度梦幻体育平台(类似于美国的 Fanduel/Draftkings),拥有数亿用户,峰值并发用户数达数百万。梦幻游戏公司在 10 多项运动的数十场比赛中提供数千场梦幻比赛,每场比赛的参赛金额、获胜百分比和参与者人数各不相同。

为了简化用户旅程,梦幻游戏公司正在运行一个推荐系统,该系统根据历史互动向用户提供个性化的比赛推荐。他们分析了客户点击流数据,并确定在推荐系统中加入会话内用户交互将显着提高推荐质量,而不是利用每小时生成的批量预测。

因此,梦幻游戏公司渴望部署实时的、会话感知的推荐,但由于上述云端实时 ML 的挑战,实施起来具有挑战性。因此,梦幻游戏公司转向使用 NimbleEdge 的设备端 ML,以实施实时的个性化比赛推荐。

结果

借助 NimbleEdge,梦幻游戏公司现在能够根据实时用户互动生成特征和预测,从而提高数百万用户的推荐相关性。此外,推理以毫秒级延迟交付,对电池和 CPU 使用率的影响极小!

推理次数: 70 亿+

设备崩溃次数: 0

平均延迟: ~15 毫秒

CPU 使用率峰值: <1%

可扩展的用例

本博客中讨论的方法很容易应用于其他垂直领域的类似实时用例,例如电子商务、社交媒体和娱乐。

电子商务:实时推荐

电子商务应用程序在结账时、主页上和产品页面上提供推荐。结合会话内用户输入,例如页面浏览量、搜索查询和购物车添加,可以显着提高推荐质量。

中国电子商务巨头淘宝报告称,通过会话感知的个性化主页推荐,GMV 提升了约 10%!由于云端实时 ML 的挑战,阿里巴巴将推荐系统部署在设备端,从而显着提升了营收。

社交媒体:Feed 排名

对于社交媒体用户来说,用户意图在一个会话与另一个会话之间可能差异很大。擅长实时捕获意图并进行相应调整的社交媒体应用程序最终会获得更高的参与度。

例如,Pinterest 通过结合会话内用户操作来实时定制用户的主页,从而使 Repins 增加了 10% 以上!

结论

总之,实时 ML 的设备端执行在各个垂直领域实现了大量变革性用例,释放了巨大的营收效益。虽然执行起来具有挑战性,但 NimbleEdge 和 ONNX Runtime 等工具大大加速和简化了实施,因此成为高性能、实时设备端 ML 的领先替代方案。