阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

Uber 推出 PyML:加速机器学习开发的秘密武器

  • 2018-11-09
  • 本文字数:1571 字

    阅读完需:约 5 分钟

Uber推出PyML:加速机器学习开发的秘密武器

Uber 一直是加速真实世界机器学习解决方案实现最活跃的公司之一。就在今年,Uber 推出了 Michelangelo、Pyro.ai 和 Horovod 等技术,这些技术以现实世界中机器学习解决方案关键构建块为重点。近日,Uber 推出了一个机器学习栈,这一次是为了缩短从实验到产品的周期。PyML 是一个库,能够以与生产运行时兼容的方式快速开发 Python 应用程序。


PyML 试图解决的问题是大规模机器学习应用中无处不在的挑战之一。通常,数据科学家用于原型模型的工具和框架与相应的生产运行时之间存在明显的不匹配。例如,对于数据科学家来说,使用基于 python 的框架(如 PyTorch 或 Keras)来生成实验模型,然后调整这些模型使其适合于像 Apache Spark ML 管道这样具有特定约束的运行时,这是非常常见的。机器学习技术专家把这个问题称为灵活性和资源效率之间的取舍问题。就 Uber 而言,数据科学家正在使用 Python 机器学习框架构建模型,这些框架需要由 Michelangelo 团队进行重构,以匹配 Apache Spark 管道的约束。


克服这一限制意味着扩展 Michelangelo 的功能,以支持使用主流机器学习框架创建的模型,同时保持训练和优化模型的一致性。

PyML 简介

Uber PyML 的目标是简化机器学习应用程序的开发,弥合实验和生产运行时之间的差距。为了实现这一点,PyML 以下面三个方面为重点:


  • 提供机器学习模型的标准契约。

  • 实现使用 Docker 容器打包和部署机器学习模型的模型一致性。

  • 把集成了 Michelangelo 的运行时用于在线和离线预测模型。


下图说明了 PyML 的基本架构原则。


标准机器学习契约

PyML 模型可以使用不同的机器学习框架编写,如 TensorFlow、PyTorch 或 Scikit-Learn。模型可以使用的数据集类型主要有两种:DataFrames 和 Tensors。DataFrames 存储表格式结构化数据,而 Tensors 存储多维命名数组。在创建模型之后,把它们调整为标准的 PyML 契约定义,这本质上是一个从抽象类 DataFrameModel 或 TensorModel 继承的类。在这两种情况下,用户只需要实现两个方法:一个是加载模型参数的构造函数,另一个是接受并返回 DataFrames 或 Tensors 的 predict()方法。


打包和部署

在创建 PyML 模型之后,可以使用一致的结构把它们打包到 Docker 容器中。PyML 引入了一种基于四个基本构件的标准部署格式:



使用这种结构,开发人员可以使用以下代码打包和部署 PyML 模型。PyML Docker 镜像将包含模型和所有相应的依赖项。模型将可以立即在 Michelangelo 控制台执行。



在线和离线预测

PyML 支持批处理(离线)和在线执行模型进行预测。离线预测被建模为 PySpark 上的抽象。在那种情况下,PyML 用户只需提供一个 SQL 查询,与模型期望输入相匹配的列名和类型,以及存储预测输出的目标 Hive 表的名称。在后台,PyML 使用与在线模型相同的镜像和 Python 环境启动了一个容器化 PySpark 任务,以确保离线和在线预测之间没有区别。执行离线预测相对简单,如下面的代码所示:



PyML 模型的标准双操作(init、predict)契约简化了在线预测的实现。PyML 通过启用 Docker 容器的轻量级 gRPC 接口实现了在线预测,Docker 容器由一个如下图所示的常见的在线预测服务使用。根据请求,在线预测服务将通过 Mesos 的 API 以嵌入式 Docker 容器的形式启动相应的特定于 PyML 模型的 Docker 镜像。当启动容器时,它启动 PyML RPC 服务器,并开始监听来自在线预测服务的 Unix 域套接字上的预测请求。



PyML 通过弥合实验和运行时环境之间的差距,解决了大型机器学习应用程序中其中一个最重要的挑战。除了特定的技术贡献外,PyML 的架构可以适应不同的技术栈,可以作为组织开始机器学习旅程的重要参考。


关于 PyML 的更多技术细节,请查阅 Uber 技术博客:https://eng.uber.com/michelangelo-pyml/


查看英文原文:https://towardsdatascience.com/uber-introduces-pyml-their-secret-weapon-for-rapid-machine-learning-development-c0f40009a617


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2018-11-09 16:411111
用户头像

发布了 1008 篇内容, 共 373.8 次阅读, 收获喜欢 340 次。

关注

评论

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

读《软件工程之美》之02

williamcai

软件工程

.NET6东西--可写的JSON DOM API

喵叔

28天写作 12月日更

架构实战营-模块八

瓜子葫芦侠

「架构实战营」

架构训练营 模块七

dog_brother

「架构实战营」

MySQL的int (10) 和 int (11) 的区别

JavaEdge

12月日更

王者荣耀商城异地多活架构设计

Geek_cb2b43

hw7 - 王者荣耀商城异地多活

WWH

架构实战营

架构师实战营 - 模块7 - 作业

lucian

架构师实战营

架构实战营模块七作业

渐行渐远

架构实战营

Golang中数字与字符串的转换

liuzhen007

28天写作 12月日更

react源码解析16.concurrent模式

buchila11

React

人生最重要的是快乐,静态的快乐

mtfelix

28天写作

圣迪

绩效沟通的案例分享

搬砖的周狮傅

绩效管理

王者荣耀商城异地多活架构设计

AHUI

「架构实战营」

王者荣耀商城异地多活架构设计

Steven

架构实战课

释放协同价值——元宇宙中的区块链

CECBC

模块7作业

忘记喝水的猫

架构训练营

定了一份《人民日报》(23/28)

赵新龙

28天写作

模块七 王者荣耀商城异地多活架构设计

小朱

架构实战营

监控的黄金指标有哪些

耳东@Erdong

监控 28天写作 指标 12月日更

管理中的平衡

张老蔫

28天写作

如何在CRM WebClient UI里使用HANA Live Report

Jerry Wang

报表 CRM 28天写作 hana 12月日更

架构实战营-模块七

瓜子葫芦侠

「架构实战营」

性能监控之 Golang 应用接入 Prometheus 监控

zuozewei

Prometheus 性能测试 性能监控 Go 语言 12月日更

react源码解析15.scheduler&Lane

buchila11

React

严管之下,还有谁在“挖矿”?

CECBC

架构训练营 - 模块 7 作业

焦龙

架构训练营

企业智能转型对AI技术的挑战及应对,答案是MLOps

第四范式开发者社区

机器学习 OpenMLDB 特征平台 MLOps

优秀程序员的30种思维--设计思考篇

hackstoic

程序员 架构思维

Flutter开发:运行项目时提示Error parsing LocalFile:‘/Users/xxx/android/app/src/main/AndroidManifest.xml’…解决方法

三掌柜

28t 28天写作 12月日更

Uber推出PyML:加速机器学习开发的秘密武器_AI&大模型_Jesus Rodriguez_InfoQ精选文章