PyTorch 1.5 发布,与 AWS 合做 TorchServe

近日 PyTorch 发布了 1.5 版本的更新,做为愈来愈受欢迎的机器学习框架,PyTorch 本次也带来了大的功能升级。此外, Facebook 和 AWS 还合做推出了两个重要的 PyTorch 库。
关键词:PyTorch  AWS  TorchServe  

随着 PyTorch 在生产环境中的应用愈来愈多,为社区提供更好的工具和平台,以便高效地扩展训练和部署模型,也成了 PyTorch 的当务之急。算法

近日 PyTorch 1.5 发布,升级了主要的 torchvision,torchtext 和 torchaudio 库,并推出将模型从 Python API 转换为 C ++ API 等功能。安全

除此以外,Facebook 还和 Amazon 合做,推出了两个重磅的工具:TorchServe 模型服务框架和 TorchElastic Kubernetes 控制器。服务器

TorchServe 旨在为大规模部署 PyTorch 模型推理,提供一个干净、兼容性好的工业级路径。框架

而 TorchElastic Kubernetes 控制器,可以让开发人员快速使用 Kubernetes 集群,在 PyTorch 中建立容错分布式训练做业。机器学习

这彷佛是 Facebook 联手亚马逊,在针对大型性能 AI 模型框架上,宣战 TensorFlow 的一个举措。分布式

TorchServe:用于推理任务

部署机器学习模型进行规模化推理并不是易事。开发人员必须收集和打包模型工件,建立安全的服务栈,安装和配置预测用的软件库,建立和使用 API 和端点,生成监控用的日志和指标,并在可能的多个服务器上管理多个模型版本。工具

上述每一项任务都须要大量的时间,并可能会使模型部署速度减慢数周甚至数月。此外,为低延迟在线应用优化服务是一件必需要作的事情。性能

此前使用 PyTorch 的开发人员,均缺少官方支持的部署 PyTorch 模型的方法。而生产模型服务框架 TorchServe 的发布,将改变这一现状,它可以更容易地将模型投入到生产中。学习

在下面的例子中,将说明如何从 Torchvision 中提取训练过的模型,并使用 TorchServe 进行部署。测试

TorchServe 的测试版本现已可用,其特色包括:

  • 原生态 API:支持用于预测的推理 API,和用于管理模型服务器的管理 API。
  • 安所有署:包括对安所有署的  HTTPS 支持。

  • 强大的模型管理功能:容许经过命令行接口、配置文件或运行时 API 对模型、版本和单个工做线程进行完整配置。
  • 模型归档:提供执行「模型归档」的工具,这是一个将模型、参数和支持文件打包到单个持久工件的过程。使用一个简单的命令行界面,能够打包和导出为单个「 .mar」文件,其中包含提供 PyTorch 模型所需的一切。该 .mar 文件能够共享和重用。

  • 内置的模型处理程序:支持涵盖最多见用例,如图像分类、对象检测、文本分类、图像分割的模型处理程序。TorchServe 还支持自定义处理程序。
  • 日志记录和指标:支持可靠的日志记录和实时指标,以监视推理服务和端点、性能、资源利用率和错误。还能够生成自定义日志并定义自定义指标。

  • 模型管理:支持同时管理多个模型或同一模型的多个版本。你可使用模型版本回到早期版本,或者将流量路由到不一样的版本进行 A/B 测试。

  • 预构建的图像:准备就绪后,能够在基于 CPU 和 NVIDIA GPU 的环境中,部署T orchServe 的 Dockerfile 和 Docker 镜像。最新的 Dockerfiles 和图像能够在这里找到。

用户也能够从 pytorch.org/serve 得到安装说明、教程和文档。

TorchElastic :集成的 K8S 控制器

当前机器学习的训练模型愈来愈大,如 RoBERTa 和 TuringNLG,它们向外扩展到分布式集群的需求也变得愈来愈重要。为了知足这一需求,一般会使用抢占式实例(例如 Amazon EC2 Spot  实例)。

但这些可抢占实例自己是不可预测的,为此,第二个工具 TorchElastic 出现了。

Kubernetes 和 TorchElastic 的集成,容许 PyTorch 开发人员在一组计算节点上训练机器学习模型,这些节点能够动态地变化,而不会破坏模型训练过程。

即便节点发生故障,TorchElastic 的内置容错功能也能够暂停节点级别的训练,并在该节点再次恢复正常后恢复训练。

  • TorchElastic 的内置容错能力支持断点续传

此外,使用带有 TorchElastic 的 Kubernetes 控制器,能够在硬件或节点回收时问题上,在被替换了节点的集群上,运行分布式训练的关键任务。

训练任务可使用部分被请求的资源启动,而且能够随着资源可用而动态扩展,无需中止或从新启动。

要利用这些功能,用户只需在简单的做业定义中指定训练参数,Kubernetes-TorchElastic 软件包即可以管理做业的生命周期。

如下是用于 Imagenet 训练做业的 TorchElastic 配置的简单示例:

微软、谷歌,就问大家慌不慌?

此次两家合做推出全新 PyTorch 库的操做,其背后也许有着更深层的意义,由于「不带你玩」这个套路,在框架模型发展的历史上,已不是第一次出现。

2017 年 12 月,AWS、Facebook 和微软宣布,他们将共同开发可用于生产环境的 ONNX ,以此来对抗谷歌 TensorFlow 对工业界使用的垄断。

随后 Apache MXNet 、Caffe二、PyTorch 等主流深度学习框架,都对 ONNX 实现了不一样程度的支持,这方便了算法及模型在不一样的框架之间的迁移。

  • AWS、Facebook 和微软当初欲用 ONNX 一统框架江湖

而 ONNX 想打通学术界和产业界的愿景,实际上并无达到当初的预期,各家框架依然用各自的服务体系,基本上只有 MXNet 和 PyTorch 深刻到了 ONNX。

而现在,PyTorch 推出了本身的服务体系,ONNX 则近乎失去了存在的意义(MXNet 表示不知所措)。

另外一方面,PyTorch 在不断的升级更新之下,框架的兼容性和易用性,正在逼近甚至赶超最强劲的对手 TensorFlow。

虽然谷歌有本身的云服务和框架,但 AWS 的云资源和 Facebook 的框架体系联合,强强联手之下,恐怕谷歌也将难以招架。

而微软已经被曾经 ONNX 三人组的两个小伙伴踢出群聊,下一步不知作何打算?
unnamed (2).gif

相关文章
相关标签/搜索