作者:Caleb Kaiser
编译:ronghuaiyang
导读
使用Cortex可以非常方便的部署PyTorch模型。
Using PyTorch Models in Production with Cortex
Caleb Kaiser
https://medium.com/pytorch/how-to-build-production-software-with-pytorch-9a8725382f2a
今年是 PyTorch 成为最受研究人员欢迎的机器学习(ML)框架的一年。
该框架的 python 风格,其学习曲线的温和性,以及它对快速和简单原型的方便实现,使 PyTorch 明显成为研究人员的最爱。因此,它正在推动一些最酷的机器学习项目:
- Transformers,Hugging Face 生成的广泛流行的自然语言处理(NLP)库,是建立在 PyTorch 上的。
- Selene,生物前沿 ML 库,建在 PyTorch 上。
- CrypTen,这个热门的、新的、关注隐私的机器学习框架是建立在 PyTorch 上的。
在 ML 的几乎任何领域,从计算机视觉到 NLP 再到计算生物学,你都会发现 PyTorch 在前沿为实验提供能量。
然而,最自然的问题是如何将这些实验合并到软件中。如何从“跨语言语言模型”转换为谷歌翻译?
在这篇博客文章中,我们将了解在生产环境中使用 PyTorch 模型意味着什么,然后介绍一种允许部署任何 PyTorch 模型以便在软件中使用的方法。
在生产中使用 PyTorch 意味着什么?
根据生产环境的不同,在生产环境中运行机器学习可能意味着不同的事情。一般来说,在生产中有两类机器学习的设计模式:
- 通过推理服务器提供一个预测 API。这是在通用软件开发中使用的标准方法,即不是移动软件或独立设备。
- 嵌入。将你的模型直接嵌入到你的应用程序中。这通常用于机器人和独立设备,有时也用于移动应用程序。
如果你打算直接将你的模型嵌入到你的应用程序中,那么你应该看看 PyTorch 的 TorchScript。使用即时编译,PyTorch 可以将 Python 编译成不需要 Python 解释器就可以运行的 TorchScript,这对于资源受限的部署目标(比如移动设备)非常有用。
在大多数情况下,你会使用模型服务器。今天你看到的许多 ML 应用程序 — 从你最喜欢的流媒体服务背后的推荐引擎到在线搜索栏中的自动完成功能—都依赖于这种部署形式,更确切地说,依赖于实时推理。
在实时推理中,一个模型通常被部署为一个微服务(通常是一个 JSON API),通过它,一个软件可以查询模型并接收预测。
让我们以 Facebook 人工智能的 RoBERTa 为例,一个领先的 NLP 模型。它通过分析去掉一个单词的句子(或“屏蔽词”),并猜测屏蔽词是什么,来进行推断。例如,如果你要使用一个预先训练好的 RoBERTa 模型来猜测一个句子中的下一个单词,你要使用的 Python 方法是这样的,非常简单:
roberta.fill_mask(input_text + " <mask>")
事实证明,在序列中预测缺失的单词正是 autocomplete 等功能背后的功能。要在应用程序中实现 autocomplete,可以将 RoBERTa 部署为 JSON API,然后在应用程序中使用用户的输入在 RoBERTa 节点上进行查询。
设置 JSON API 听起来相当简单,但是将模型部署为微服务实际上需要大量的基础设施工作。
你需要自动控制流量的波动。你需要监控你的预测。你需要处理模型更新。你需要了解日志记录。非常多的工作。
那么,问题是如何将 RoBERTa 部署为一个 JSON API,而不需要手动滚动所有这些自定义基础设施?
将 PyTorch 模型与 Cortex 一起投入生产
你可以使用 Cortex 自动化部署 PyTorch 模型所需的大部分基础设施工作,这是一个将模型作为 api 部署到 AWS 上的开源工具。这篇文章并不是一个完整的 Cortex 使用指南,只是一个高层次的 Cortex 使用方法,你所需要的是:
- 提供推断的 Python 脚本
- 定义你的 API 的配置文件
- Cortex CLI 启动你的部署
这种方法并不局限于 RoBERTa。想要为你的图像自动生成 alt 文本,使你的网站更容易访问?你可以部署一个 AlexNet 模型,使用 PyTorch 和 Cortex 来标记图像。
那语言分类器呢,比如 Chrome 用来检测页面不是用默认语言写的那个?fastText 是这个任务的完美模型,你可以使用 PyTorch 和 Cortex 部署它。
使用 Cortex,你可以将许多由 PyTorch 支持的 ML 特性添加到你的应用程序中进行实时推断。
PyTorch 用到生产中
有超过 25 个研究模型储存在 PyTorch Hub],从 NLP 到计算机视觉。所有这些都可以通过 Cortex 来实现,使用的过程和我们刚才演示的一样。
PyTorch 团队无疑在他们的路线图上有更多的以生产为中心的特性,但是仅仅看看到目前为止所取得的进展,很明显 PyTorch 不是为生产而构建的框架的观点已经过时了。