使用 ONNX Runtime,NimbleEdge 可实现高性能设备端实时机器学习

作者

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 等开创性应用最近在推荐中融入了近实时和实时特性。这使得基于用户几分钟甚至几秒前交互的高度新鲜推荐成为可能,从而显著提升了关键业务指标。

云端实时机器学习的挑战

然而,在云端构建实时机器学习系统涉及几个主要挑战:

Summary of the challenges of real-time ML on the cloud
  • 高计算成本: 实时存储和处理会话内用户交互数据会产生过高的云成本
  • 上市时间和复杂性: 设置用于 ML 的实时云管道复杂,需要大量时间和开发人员资源
  • 隐私风险和合规性: 用户的会话内点击流数据必须发送到云服务器进行处理,这引发了隐私问题
  • 扩展性挑战: 处理流量激增需要巨大的云预留容量,或快速扩展,这在云端很难实现
  • 高延迟: 由于用户移动设备与云端进行 API 调用所需的时间导致高延迟

设备端机器学习作为替代方案

在用户的移动设备上运行实时 ML 进行推荐是使用云端的一种可行替代方案。这消除了上述与云端相关的大多数挑战。

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

然而,开发和维护设备端实时 ML 系统也极其复杂,需要构建以下系统:

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

所有这些都极其复杂且耗时,因此实现高性能的设备端实时 ML 极具挑战性。

NimbleEdge 与 ONNX Runtime:端到端设备端机器学习平台

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

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

即开即用的设备端 ML 基础设施

  • 设备端数据仓库: 在托管的设备端数据库中存储会话内用户事件(例如电子商务中的产品浏览、购物车添加),查询延迟 < 1ms
  • 数据处理: 在设备端运行类似 Python 的预处理脚本,从实时用户输入中计算特征
  • 特征存储同步: 维护云端特征的设备端副本,这些特征用于实时 ML,并需频繁更新(例如,美食外卖应用首页实时餐厅排名的营业中餐厅列表)

轻松管理设备端 ML 模型

  • 空中下载 (OTA) 更新, 完全解耦 ML 模型更新和前端应用更新,有助于实现快速 ML 实验

一体化、优化的推理运行时配置

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

用于推理执行的 ONNX Runtime

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

对于推理执行,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 的挑战,阿里巴巴在设备端部署了推荐系统,带来了显著的营收提升。

社交媒体:信息流排名

社交媒体用户的意图在不同会话之间可能差异很大。擅长实时捕获意图并相应调整的社交媒体应用最终会获得更高的用户参与度。

例如,Pinterest 通过整合会话内用户行为来实时定制用户主页,将转发量 (Repins) 提高了 10% 以上

结论

总之,设备端实时 ML 的执行催生了跨领域的诸多变革性用例,带来了巨大的营收收益。尽管执行具有挑战性,但 NimbleEdge 和 ONNX Runtime 等工具极大地加速和简化了实施过程,从而成为高性能实时设备端 ML 的主要替代方案。