写点什么

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

2020 年 6 月 09 日

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:581445
用户头像
陈思 InfoQ编辑

发布了 572 篇内容, 共 197.7 次阅读, 收获喜欢 1150 次。

关注

评论

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

week5 home work

东哥

一致性哈希

第5周总结

娄江国

极客大学架构师训练营

第五周学习总结

冯凯

Week05作业

熊威

阿里巴巴、百度、美团都在用的 Spring Cloud 微服务架构

java通天架构哪吒

Spring Cloud SpringCloud

「架构师训练营」第五周作业

旭东(Frank)

算法 极客大学架构师训练营 哈希 一致性哈希

基于领域驱动设计的业务中台架构设计

Winfield

中台 业务中台 领域驱动设计 DDD

架构师训练营第5周总结

时来运转

架构师训练营第五周总结

sunnywhy

原来 JavaScript 中的 WeakMap 是这样子的

pingan8787

Java 前端 Web

第五周学习总结

刘卓

架构师训练营 - 命题作业 第 5 周

铁血杰克

架构师训练营第5周作业

时来运转

架构师训练营第五章总结

吴吴

实现一致性hash算法

LEAF

架构师训练营Week 05 学习总结

Frank Zeng

学习总结 -- Week 5

吴炳华

极客大学架构师训练营

Week05总结

熊威

Intellij IDEA必备插件,提高效率的“七种武器”

码农神说

IDEA Java 面试 idea插件

架构师训练营 第五周 基于虚拟节点的一致性Hash算法作业

且听且吟

极客大学架构师训练营

第五周作业

刘卓

陈芳,高考之后我要学计算机专业,将来干IT发财了,我就娶你!

张小方

面试 薪资 程序员求职 程序员买房 毕业

架构师训练营 - 学习总结 - 第五讲

吕浩

架构感悟5-算法之美

旭东(Frank)

架构 算法 感悟 极客大学架构师训练营

架构师训练营第五章作业

吴吴

「架构师训练营」Week5作业

Frank Zeng

一致性哈希算法

dony.zhang

一致性哈希

一致性 hash 算法

changtai

极客大学架构师训练营

计算机操作系统基础(十五)---使用fork系统调用创建进程

书旅

php laravel 操作系统 进程 线程’

一致性 Hash Java 实现

陈皮

MySQL分区表最佳实践

Simon

MySQL 数据库

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