语言模型秒变API,一文了解如何部署DistilGPT-2

选自towardsdatascience

作者:Celeb Kaiser

机器之心编译

参与:高璇、Geek AI

模型又大又复杂,部署和使用就成了难题。本文是一篇教程,告诉你如何利用HuggingFace推出的DistilGPT-2实现模型部署和使用的愿望。


在过去一年的大部分时间里,OpenAI 的 GPT-2 一直是机器学习领域中最热门的话题之一,这是有原因的。这个文本生成模型最初被认为「太危险」而无法完全发布,它能够产生不可思议的输出。如果你还没有看过任何示例,我推荐你参阅 OpenAI 的官方示例,真的令人难以置信:

语言模型秒变API,一文了解如何部署DistilGPT-2


由于在机器学习社区的部分人对 GPT-2 的狂热,有大量工具可用来在不同的用例中实现 GPT-2:

  • 想上手GPT-2 吗?OpenAI已发布了预训练的模型:https://github.com/openai/gpt-2。
  • 想用不同的文本训练GPT-2吗?可以使用 Max Woolf 的 gpt-2-simple:https://github.com/minimaxir/gpt-2-simple。
  • 想要更快的压缩版 GPT-2 吗?可以使用 Hugging Face 的 DistilGPT-2:https://github.com/huggingface/transformers。

使用这些工具,在本地运行 GPT-2 就变得相当简单。但是,在生产中部署 GPT-2 仍然很困难。
为了使用 GPT-2 构建真实的软件——从聊天机器人到带有特定 GIF 动图的卡片生成器,你需要在生产中部署模型。最常见的方法是将模型部署为可通过应用程序查询的 Web 应用程序接口(API)。
在本教程中,我们将在 AWS 上将 Hugging Face 的 DistilGPT-2 部署为 Web API。我们的 API 将建立在可自动缩放,监控,更新和记录日志的基础上。
让我们开始吧。
加载 Hugging Face 的 DistilGPT-2
首先,我们将创建一个 Python 脚本来加载我们的模型并处理响应。在本教程中,我们将改脚本称为「predictor.py」。
如你所见,Hugging Face 的 Transformers 库可以使仅用几行代码就能加载 DistilGPT-2:

语言模型秒变API,一文了解如何部署DistilGPT-2


现在,你有了一个经过初始化的 DistilGPT-2 模型。另外,Hugging Face 的 Transformers 库使得初始化几乎所有目前最优的 NLP 模型(不仅是DistilGPT-2)变得很容易。
在「predictor.py」脚本中,还将需要一个函数来提供预测,我们将该函数称为「predict()」。当传进输入时,「predict()」应对输入进行分词,在模型中运行它,解码输出,并使用生成的文本进行响应。在这种情况下,我们的「predict()」函数很简单,可以只需 6 行代码就能实现:

语言模型秒变API,一文了解如何部署DistilGPT-2

这段代码中调用了一些函数,我们对此不做详细介绍,但你可以通过下面的链接查看/复制完整的「predictor.py」文件:
https://github.com/cortexlabs/cortex/blob/master/examples/pytorch/text-generator/predictor.py
通过编写与预测相关的代码,我们就可以部署模型。
将 DistilGPT-2 部署为API

这通常是机器学习基础架构中的一个主要难点。负责地部署模型意味着实施自动缩放,进行结构化更新以使它们不会破坏 API,监控模型的性能以及处理日志记录。
除了手动完成上述所有操作外,我们将使用 Cortex 将其抽象化。你可以点击链接通过下面的链接阅读有关 Cortex 的更多信息:https://github.com/cortexlabs/cortex,但从本质上讲,它是一个工具,使用简单的配置文件并在 AWS 上自动执行模型部署。
首先,安装Cortex(https://www.cortex.dev/install)。一旦安装了 Cortex,你就可以创建部署配置文件,该文件应该被命名为「cortex.yaml」。该文件可能是这样的:

语言模型秒变API,一文了解如何部署DistilGPT-2


保存好配置后,可以通过命令行简单运行「cortex deploy」。这将从「cortex.yaml」中获取声明式配置,并在集群上创建它:

$ cortex deploydeployment started

实质上,Cortex 包含了我们的实现,使其可以使用 Flask 进行服务,使用具有负载均衡器的公开终端,并在 Kubernetes 上协调工作负载。
现在,我们可以查询我们的 API。
实时查询你的 DistilGPT-2 API

在任何时候,你都可以通过运行「cortex get generator」来检索 API 端点的统一资源定位符(URL)。有了终端后,你可以使用curl 来测试部署:

$ cortex get generatorurl: http://***.amazonaws.com/text/generator$ curl http://***.amazonaws.com/text/generator \ -X POST -H “Content-Type: application/json” \ -d ‘{“text”: “Machine learning (ML) is the scientific study of algorithms and statistical models that computer systems use to perform a specific task without using explicit instructions, relying on patterns and inference instead. It is seen as a subset of artificial intelligence.”}’"Machine learning (ML) is the scientific study of algorithms and statistical models that computer systems use to perform a specific task without using explicit instructions, relying on patterns and inference instead. It is seen as a subset of artificial intelligence.\n\n\n\nThe iFrame top was inspired by several prominent advances in machine learning \\u2013 vision, machine learning, machine learning and machine learning \\u2013 that were widely accepted. One well-known example was intuition \\u2013 used by many computer scientists to predict which"


现在,你可以使用任何能够查询终端的服务来访问端点,就像使用其它 Web API 一样。
瞧!你已将 DistilGPT-2 部署为可扩展的 Web API,而所需的只是一个简单的配置文件。
进阶操作

有许多方法可以将 DistilGPT-2 支持的 API 实现到软件项目中。想要构建一个自动完成功能吗?想要使用电子邮件回复的 Chrome扩展程序吗?或者构建更实用的——你的网站的聊天机器人?
你甚至可以尝试修改其它经过预训练的模型,这要归功于 Hugging Face 通过非常简单的方式使用 Transformers 实现了它们。使用 Cortex,你就可以按照上述步骤来部署它们。

api

相关推荐