GMTC深圳站本周日开幕,14大专题全部上线,完整日程>> 了解详情
写点什么

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

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

关注

评论

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

hadoop 基本原理与应用

神策技术社区

hadoop 程序员 Hadoop全分布式集群

[灵魂拷问]MySQL面试高频100问(工程师方向)

编程菌

Java 编程 程序员 面试 计算机

博睿数据斩获“飞腾PCS认证集成商”,推动国产化生态建设再进一步!

博睿数据

ipfs国家认可吗?ipfs挖矿靠谱吗?

IPFS国家认可吗 ipfs挖矿靠谱吗

MySQL中FROM_UNIXTIME与UNIX_TIMESTAMP

一个大红包

8月日更

Android SDK 的 H5 打通方案演进

神策技术社区

前端 后端 神策数据 shujv

上游思维:如何定义成功?

石云升

读书笔记 8月日更 上游思维

ASM 实现 Hook Lambda 和方法引用

神策技术社区

前端 后端 asm 代码 神策数据

文化与科技的交织,华为P50 Pro与一曲长城谣

脑极体

网络攻防学习笔记 Day110

穿过生命散发芬芳

网络安全 8月日更

iOS SDK 的 H5 打通方案演进 | 数据采集

神策技术社区

程序员 前端 后端 数据 方案

Python开发篇——RSA加密算法和SHA1计算文件校验码

DisonTangor

Python

Windows Server 2019 安装提要 (及 VS 2019 Build Tool) - 续

hedzr

DevOps vscode windows server 2019 server core visual studio 2019

云原生 | 混沌工程工具 ChaosBlade Operator Pod 篇

RadonDB开源社区

数据库 混沌工程

科技的世界里没有“粉红税”

脑极体

三分钟了解大数据技术发展史

张浩_house

人工智能 机器学习 大数据 大数据技术

从 0 到 1 ,不能忽略的「道」

非著名程序员

产品 产品经理 认知提升 8月日更

硬核技术,带你走进3D点云车道线自动识别

澳鹏Appen

自动驾驶 机器学习 训练数据 3D点云 车道线标注

OceanBase 常见参数和变量究竟有什么本质区别?

OceanBase 数据库

数据库 oceanbase OceanBase 开源 OceanBase 社区版

Springboot通过@WebFilter日志双份打印BUG分享

FunTester

性能测试 springboot bug

第一次看房

escray

生活记录 8月日更

神策数据微信小程序 SDK 功能介绍

神策技术社区

小程序 微信 代码 神策数据 维护

北鲲云计算:为药企研发的飞速发展提供助力

北鲲云

基金这么赚钱!!编程实现基金从采集到分析通用模板!(白酒为例)

Python研究者

8月日更

分享 6 个JavaScript学习资源

devpoint

JavaScript GitHub 8月日更

GrowingIO Design 组件库搭建之单元测试

GrowingIO技术专栏

单元测试 Jest Storybook

心态炸了!我的join查询多加了个过滤条件性能就崩了

林一

MySQL 查询优化 多表join

Flink 和流式应用运维(十-下)

数据与智能

flink 监控 Web UI

获取自己的公网 IP 地址

耳东@Erdong

IP地址 8月日更

前端之算法(九)回溯算法

Augus

算法 8月日更

基于 CODING CD + Nocalhost 在大型应用的 ChatOps 实践

CODING DevOps

DevOps 工具 CI/CD 开发测试 ChatOps

2021星空论坛:破局创新,论道数字化转型

2021星空论坛:破局创新,论道数字化转型

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