使用 ONNX Runtime 和 NimbleEdge 实现设备上的高性能实时机器学习

作者

Nilotpal PathakSiddharth MittalScott McKayNatalie KershawEmma Ning

2024 年 6 月 17 日

NimbleEdge 是一个设备上的机器学习 (ML) 平台,可以在移动应用中实现实时个性化,在终端用户的移动设备上执行数据捕获、处理和机器学习推理,而不是在云端。高效利用移动设备的计算能力,以最少的设备资源消耗实现最佳性能,是 NimbleEdge 的一个关键优先事项。为此,NimbleEdge 利用了各种机器学习推理运行时,其中最重要的是 **ONNX Runtime**。

在这篇博文中,我们将探讨如何利用设备上的计算能力,在移动应用中实现经济高效、隐私保护的实时机器学习,以及 NimbleEdge 如何利用 ONNX Runtime 来实现这一点。我们还将分享 NimbleEdge 与印度最大的奇幻游戏平台之一(拥有数亿用户)进行设备上部署的成果。

引言

随着数字消费应用的演进,机器学习 (ML) 在数字体验(电子商务、游戏、娱乐等)中变得越来越核心。基于机器学习的推荐系统是这一现象的一个突出例子。它们可以减少选择困难,帮助提高转化率和参与度,如今在大型应用中已司空见惯。

传统上,推荐系统仅使用历史客户行为(例如购买、浏览、点赞),每周、每天或每隔几小时更新一次。然而,LinkedInDoordashPinterest 等先行应用近期已将近实时和实时特征纳入推荐系统。这使得基于用户几分钟甚至几秒前交互的高度新鲜推荐成为可能,显著提升了关键业务指标。

云端实时机器学习的挑战

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

Summary of the challenges of real-time ML on the cloud
  • 高计算成本:实时存储和处理会话内用户交互数据会产生过高的云端成本
  • 上市时间和复杂性:为机器学习设置实时云端管道非常复杂,需要大量时间和开发者资源
  • 隐私风险和合规性:用户的会话内点击流数据必须发送到云端服务器进行处理,引发隐私担忧
  • 扩展挑战:处理流量高峰需要大量的备用云容量,或者快速扩展,这在云端难以实现
  • 高延迟:从/向用户移动设备进行云 API 调用所需时间长导致高延迟

设备上机器学习作为一种替代方案

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

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

然而,开发和维护设备上的实时机器学习系统也非常复杂,需要构建以下系统:

  1. 设备上的实时事件捕获和存储
  2. 设备上的特征处理(例如滑动窗口聚合)
  3. 从云端同步特征
  4. 适度平衡延迟和资源利用率的机器学习推理执行,适用于各种移动设备。

所有这些都非常复杂且耗时,因此,高性能的设备上实时机器学习极具挑战性。

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

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

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

即开即用的设备上机器学习基础设施

  • 设备上数据仓库:将会话内用户事件(例如电子商务中的商品浏览、加入购物车)存储在托管的设备上数据库中,查询延迟 < 1ms
  • 数据处理:在设备上运行类似 Python 的预处理脚本,从实时用户输入中计算特征
  • 特征存储同步:维护实时机器学习所需的云端特征的设备上副本,并经常更新(例如,食品配送应用首页上实时餐厅排名所需的开放餐厅列表)

轻松管理设备上机器学习模型

  • 空中更新 (OTA),完全解耦机器学习模型更新和前端应用更新,助力快速机器学习实验

交钥匙式、优化的推理运行时配置

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

用于推理执行的 ONNX Runtime

在设备上机器学习中,优化推理执行至关重要。一方面,实时机器学习用例需要快速计算,以最大程度地减少终端用户的延迟。另一方面,移动设备资源受限,电池和处理能力有限。为目前市场上分布的 5,000 多种独特设备类型实现延迟和设备资源利用率的最佳平衡,是一个巨大的挑战。

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

  • 应用静态和动态量化技术,显著减少模型的内存占用
  • 定制运行时构建,以匹配模型所需的特定运算符和数据类型
  • 利用底层控制机制,精心管理和优化资源(CPU、电池)消耗

通过此处列出的能力,NimbleEdge 全面的设备上机器学习平台可以在几天而非几个月内部署高性能实时机器学习。

案例研究:为印度领先奇幻游戏公司提供奇幻体育赛事实时排名

这家奇幻游戏公司(为保密起见,隐去名称)是印度的一家奇幻体育平台(类似于美国的 Fanduel/Draftkings),拥有数亿用户,峰值并发用户数达数百万。奇幻游戏公司提供跨越 10 多种运动数十场比赛的数千个奇幻赛事,每个赛事的入场金额、获胜百分比和参与人数各不相同。

为了优化用户体验,这家奇幻游戏公司运行了一个推荐系统,根据历史交互向用户提供个性化赛事推荐。他们分析了客户点击流数据,发现将会话内用户交互纳入推荐系统将显著提高推荐质量,优于利用每小时生成的批处理预测。

因此,这家奇幻游戏公司热切希望部署实时、感知会话的推荐,但由于上述云端实时机器学习的挑战,实施起来非常困难。于是,奇幻游戏公司转向使用 NimbleEdge 的设备上机器学习来实现实时个性化赛事推荐。

成果

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

推理次数: 70亿+

设备崩溃次数: 0

平均延迟: ~15 毫秒

CPU 使用率峰值: <1%

可扩展用例

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

电子商务:实时推荐

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

中国电商巨头淘宝通过感知会话的个性化首页推荐,报告 GMV 增长约 10%!由于云端实时机器学习的挑战,阿里巴巴将推荐系统部署在设备上,带来了显著的营收提升。

社交媒体:信息流排序

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

举例来说,Pinterest 通过将会话内用户行为纳入实时调整用户首页,将转发量提高了 >10%!

结论

总而言之,设备上执行实时机器学习可以在各垂直领域实现大量具有变革性的用例,带来巨大的营收收益。虽然执行起来具有挑战性,但 NimbleEdge 和 ONNX Runtime 等工具极大地加速和简化了实现过程,因此成为高性能、实时设备上机器学习的领先替代方案。