使用 ONNX Runtime 和 NimbleEdge 实现高性能端侧实时机器学习

作者:

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

2024年6月17日

NimbleEdge 是一个端侧机器学习(ML)平台,可在移动应用中实现实时个性化,它在最终用户的移动设备上而非云端执行数据捕获、处理和 ML 推理。高效利用移动计算能力以在实现最佳性能的同时最大程度地减少设备资源使用,是 NimbleEdge 的首要任务。为此,NimbleEdge 利用了各种 ML 推理运行时,其中最引人注目的是 ONNX Runtime

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

引言

随着数字消费应用的不断发展,机器学习(ML)在数字体验(涵盖电子商务、游戏、娱乐)中的核心地位日益凸显。基于 ML 的推荐系统就是这种现象的一个突出例子。它们能够减少选择瘫痪、助力转化并提高参与度,现已在大规模应用中极为常见。

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

云端实时机器学习面临的挑战

然而,在云端构建实时 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 模型管理

  • 空中下载(OTA)更新,彻底解耦 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 使用的影响微乎其微!

推理次数: 7B+

设备崩溃次数: 0

平均延迟: ~15 毫秒

CPU 使用率峰值: <1%

可扩展的用例

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

电子商务:实时推荐

电子商务应用在结账时、首页以及商品页面上提供推荐。纳入会话内的用户输入(例如页面浏览量、搜索查询和加购)可以显着提高推荐质量。

中国电商巨头淘宝通过具有会话感知能力的个性化首页推荐,实现了约 10% 的 GMV 增长!由于云端实时 ML 的挑战,阿里巴巴将推荐系统部署在端侧,从而获得了显著的营收增长。

社交媒体:信息流排序

对于社交媒体用户而言,不同的会话之间,用户意图可能会有很大差异。擅长实时捕获意图并进行相应调整的社交媒体应用最终会获得高得多的用户参与度。

例如,Pinterest 通过结合会话内的用户操作来实时定制用户的首页,将转存率(Repins)提高了 10% 以上

结论

总之,在端侧执行实时 ML 能够在各个垂直领域实现大量变革性的用例,从而释放巨大的营收效益。虽然执行起来充满挑战,但 NimbleEdge 和 ONNX Runtime 等工具极大加速并简化了实施过程,从而成为高性能实时端侧 ML 的领先替代方案。