写点什么

Uber 开源 Neuropod:可统一 AI 框架并将模型转化为产品

  • 2020 年 6 月 09 日
  • 本文字数:1299 字

    阅读完需:约 4 分钟

Uber开源Neuropod:可统一AI框架并将模型转化为产品

近日,Uber 在其官方博客宣布正式开源Neuropod,该工具是一个提供统一界面的库,用于从 C ++和 Python 的多个框架中运行深度学习模型。Uber 表示,Neuropod 使研究人员可以轻松地在所选择的框架内构建模型,同时还简化了这些模型的生产。


在工业和学术界,数据科学家在开发过程中使用多个框架的情况并不少见。例如,Uber 的高级技术小组(ATG)在过渡到 Facebook 的 PyTorch 之前整合了 Google 的 TensorFlow,这导致与 TensorFlow 一起运行时出现了内存损坏和调试问题。


为了解决这类问题,Uber 发布了 Neuropod,通过使框架在运行模型时看起来相同,从而防止了不兼容问题的出现,并为 TensorFlow,PyTorch,Keras 和 TorchScript 提供开箱即用的支持。


GitHub 地址:https://github.com/uber/neuropod


自 2019 年初内部发布以来,Neuropod 一直在快速部署新模型方面发挥了作用。去年,Uber 在其 ATG、AI 和其他核心业务中部署了数百种 Neuropod 模型。这些模型包括用于需求预测的模型、用于乘车的到达时间(ETA)预测、用于 Uber Eats 的菜单转录以及用于自动驾驶车辆的对象检测模型。


Neuropod 从问题定义的概念开始——对模型要解决的“问题”的正式描述。在这种情况下,问题可能是图像的语义分割或文本的语言翻译。通过正式定义问题,可以将其视为接口并抽象出具体的实现。每个 Neuropod 模型都实现问题定义,结果,解决相同问题的任何模型都可以互换,即使它们使用不同的框架也是如此。


Neuropod 的工作原理是:将现有模型包装在 Neuropod 包中,该软件包包含原始模型以及元数据、测试数据和自定义操作(如果有)。


使用 Neuropod,任何模型都可以从任何受支持的语言下执行。例如,如果用户想从 C ++运行 PyTorch 模型,Neuropod 将在后台启动一个 Python 解释器,并与之通信以运行模型。这是必需的,因为 PyTorch 模型需要运行 Python 解释器。此功能使开发者能够快速测试 PyTorch 模型,然后再尝试将其转换为TorchScript,该模型可以从 C ++本地运行。



Neuropod 当前支持从 Python 和 C ++运行模型。但是,为该库编写其他语言绑定很简单。例如,Uber 的 ML 平台Michelangelo使用 Neuropod 作为其核心 DL 模型格式,并实现了 Go 绑定以从 Go 运行其生产模型。


应用程序与框架无关的 API 进行交互,并且 Neuropod 将这些与框架无关的调用转换为对基础框架的调用。最后,Neuropod 导出模型并建立度量标准管道以将性能与定义的基准进行比较。


Uber 在博客中写道,Neuropod 仅仅是开始,未来将实现的一些功能包括:


  1. 版本选择:此功能使用户能够在导出模型时指定框架的所需版本范围。例如,一个模型可能需要 TensorFlow 1.13.1,而 Neuropod 将使用带有正确版本框架的OPE自动运行该模型,使用户可以在单个应用程序中使用多个框架和每个框架的多个版本。

  2. 封装操作:此功能使应用程序可以指定使用张量“完成”的时间。一旦张量被封装,Neuropod 可以在运行推理之前将数据异步传输到正确的目的地(例如本地 GPU 或工作进程等)。这有助于用户并行化数据传输和计算。

  3. Dockerized 工作进程:这样可以在模型之间提供更多的隔离。例如,使用此功能,即使需要不同 CUDA 版本的模型也可以在同一应用程序中运行。


2020 年 6 月 09 日 13:581692
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 220.9 次阅读, 收获喜欢 1238 次。

关注

评论

发布
暂无评论
发现更多内容

毕业设计

出卖灵魂的教练kerry

值值得收藏,揭秘 MySQL 多版本并发控制实现原理

架构精进之路

MySQL MVCC 8月日更

网络攻防学习笔记 Day99

穿过生命散发芬芳

态势感知 网络攻防 8月日更

业务定制型异地多活架构业务设计

arctec

架构实战营 - 模块四

Testcase

架构实战营

三个问题,颠覆你的三观

非著名程序员

个人成长 认知提升 个人提升 8月日更

架构实战营 - 模块 4 - 设计千万级学生管理系统的考试试卷存储方案

雪中亮

架构实战营 #架构实战营

架构训练营模块四作业

Honey拯救世界

架构训练营

模块四作业

Tina

架构师学习心得

ifc177

读尽天下源码,心中自然无码

开源君

8月日更

架构实战营-毕业设计项目

༺NPE༻

架构实战营 毕业设计

小遵

Apache Flink的体系架构(三)

数据与智能

flink 时间戳

毕业设计:设计电商秒杀系统

开拓纪

架构训练营 毕业设计

架构实战营-毕业总结

莫问

毕业设计:设计电商秒杀系统

Johnny

架构实战营

模块四

Winston

高亮架构训练营毕业设计-设计电商秒杀系统

高亮

架构训练营

架构实战营-模块4

Cingk

架构实战营-毕业设计

莫问

学生管理系统的考试试卷存储方案

技术是伙伴

架构实战营

电商秒杀系统设计方案

Lane

【架构设计模块四】:设计千万级学生管理系统的考试试卷存储方案

Ryoma

千万级学生管理系统的考试试卷存储方案-模块四

hello

架构训练营

《项目管理三步法》教你搞定孩子 作业拖延症

Ian哥

架构实战营 毕业总结

小遵

从0开始的TypeScriptの一:启航

空城机

typescript 大前端 8月日更

二叉树遍历和分治

泽睿

算法 遍历 分治

初识宽度优先搜索

泽睿

商城异地多活架构

arctec

Uber开源Neuropod:可统一AI框架并将模型转化为产品-InfoQ