Press "Enter" to skip to content

宣布在Amazon SageMaker上推出新的Hugging Face LLM Inference容器

本文与来自Hugging Face的Philipp Schmid和Jeff Boudier合作撰写。

今天,作为Amazon Web Services与Hugging Face的合作伙伴关系的一部分,我们非常高兴地宣布推出一个新的Hugging Face深度学习容器(DLC),用于推理大型语言模型(LLMs)。这个新的Hugging Face LLM DLC由Text Generation Inference(TGI)提供支持,它是一个开源的、专门为部署和提供大型语言模型而构建的解决方案。TGI使用Tensor Parallelism和动态批处理,为包括StarCoder、BLOOM、GPT-NeoX、StableLM、Llama和T5在内的最受欢迎的开源LLMs提供高性能的文本生成。

大型语言模型越来越受欢迎,但部署可能很困难

LLMs已经成为人工智能的前沿,通过其在不同领域理解和生成类似于人类的文本能力,吸引了开发者和爱好者的关注。这些强大的模型,例如基于GPT和T5架构的模型,已经在广泛的应用中经历了前所未有的流行,包括语言理解、对话体验和自动化写作辅助。因此,各行各业的公司正在抓住机会,发掘它们的潜力,并在其应用程序中提供新的LLM驱动体验。

大规模托管LLMs带来了一系列复杂的工程挑战。为了提供理想的用户体验,LLM托管服务应在满足大量并发用户的情况下提供足够的响应时间。鉴于大型模型的高资源需求,通用推理框架可能无法提供所需的优化,以最大化可用资源的利用并提供最佳性能。

其中一些优化包括:

  • 张量并行性,将计算分布到多个加速器上
  • 模型量化,减少模型的内存占用
  • 推理请求的动态批处理,提高吞吐量,以及其他优化。

Hugging Face LLM DLC提供了这些优化,使得在大规模上托管LLM模型更加容易。

Hugging Face的文本生成推理简化了LLM部署

TGI是一种开源的、专门为部署大型语言模型(LLMs)而构建的解决方案。它包含了张量并行性的优化,用于加速多GPU推理,动态批处理以提高总吞吐量,以及使用flash-attention进行优化的transformers代码,适用于包括BLOOM、T5、GPT-NeoX、StarCoder和LLaMa在内的流行模型架构。

通过Amazon SageMaker上的新Hugging Face LLM推理DLC,AWS客户可以受益于同样的技术,这些技术驱动着像HuggingChat、OpenAssistant和Hugging Face Hub上的LLM模型推理API这样高并发、低延迟的LLM体验,同时享受SageMaker的托管服务功能,例如自动缩放、健康检查和模型监控。

在SageMaker托管上开始使用TGI

让我们通过一个代码示例来介绍如何在SageMaker Endpoint上部署一个GPT NeoX 20B参数模型。您可以在这里找到我们的完整示例笔记本。

首先,请确保安装了最新版本的SageMaker SDK:

%pip install sagemaker>=2.161.0

然后,我们导入SageMaker Python SDK并实例化一个sagemaker_session以查找当前的区域和执行角色。

import sagemaker
from sagemaker.huggingface import HuggingFaceModel, get_huggingface_llm_image_uri
import time

sagemaker_session = sagemaker.Session()
region = sagemaker_session.boto_region_name
role = sagemaker.get_execution_role()

接下来,我们检索LLM镜像URI。我们使用helper函数get_huggingface_llm_image_uri()来为Hugging Face大型语言模型(LLM)推理生成适当的镜像URI。该函数有一个必需参数backend和几个可选参数。 backend指定用于模型的后端类型,值可以是“lmi”和“huggingface”。 “lmi”代表SageMaker大型模型推理后端,“huggingface”是指在本教程中使用的Hugging Face TGI后端。

image_uri = get_huggingface_llm_image_uri(
  backend="huggingface", # 或 lmi
  region=region
)

现在我们有了镜像URI,下一步是配置model对象。我们指定一个唯一的名称,image_uri是托管的TGI容器的镜像URI,还有端点的执行角色。另外,我们指定了许多环境变量,包括HF_MODEL_ID,它对应于将要部署的HuggingFace Hub模型,以及HF_TASK,它配置了模型要执行的推理任务。

您还应该定义SM_NUM_GPUS,它指定了模型的张量并行度。张量并行可以用于将模型分割到多个GPU上,在使用对于单个GPU过大的LLM时是必要的。要了解有关张量并行性与推理的更多信息,请参阅我们之前的博客文章。在这里,您应该将SM_NUM_GPUS设置为所选实例类型上可用的GPU数量。例如,在本教程中,我们将SM_NUM_GPUS设置为4,因为我们选择的实例类型ml.g4dn.12xlarge有4个可用GPU。

请注意,您可以通过将HF_MODEL_QUANTIZE环境变量设置为“true”来可选地减少模型的内存和计算足迹,但这种较低的重量精度可能会影响某些模型的输出质量。

model_name = "gpt-neox-20b-" + time.strftime("%Y-%m-%d-%H-%M-%S", time.gmtime())

hub = {
    'HF_MODEL_ID':'EleutherAI/gpt-neox-20b',
    'HF_TASK':'text-generation',
    'SM_NUM_GPUS':'4',
    'HF_MODEL_QUANTIZE':'true'
}

model = HuggingFaceModel(
    name=model_name,
    env=hub,
    role=role,
    image_uri=image_uri
)

接下来,我们调用部署方法来部署模型。

predictor = model.deploy(
  initial_instance_count=1,
  instance_type="ml.g4dn.12xlarge",
  endpoint_name=model_name
)

模型部署完成后,我们可以调用它来生成文本。我们传递一个输入提示,并运行预测方法,从在TGI容器中运行的LLM生成文本响应。

input_data = {
  "inputs": "The diamondback terrapin was the first reptile to",
  "parameters": {
    "do_sample": True,
    "max_new_tokens": 100,
    "temperature": 0.7,
    "watermark": True
  }
}

predictor.predict(input_data)

我们收到以下自动生成的文本响应:

[{'generated_text': 'The diamondback terrapin was the first reptile to make the list, followed by the American alligator, the American crocodile, and the American box turtle. The polecat, a ferret-like animal, and the skunk rounded out the list, both having gained their slots because they have proven to be particularly dangerous to humans.\n\nCalifornians also seemed to appreciate the new list, judging by the comments left after the election.\n\n“This is fantastic,” one commenter declared.\n\n“California is a very'}]

为了减轻自动机器人利用生成式AI功能的潜在风险,响应被加了水印。这样的带水印的响应可以轻松地被算法检测到,促进生成式AI的负责任使用。

宣布在Amazon SageMaker上推出新的Hugging Face LLM Inference容器 AI 新闻 第1张 实验完成后,我们删除端点和模型资源。

predictor.delete_model()
predictor.delete_endpoint()

结论和下一步

使用Hugging Face的文本生成推理和SageMaker托管部署大型语言模型是一种简单的解决方案,可以托管开源模型,如GPT-NeoX、Flan-T5-XXL、StarCoder或LLaMa。最先进的LLM在安全的托管SageMaker环境中部署,AWS客户可以受益于大型语言模型,同时完全控制它们的实现,并且不需要将其数据发送到第三方API。

在本教程中,我们演示了使用新的 Hugging Face LLM 推理 DLC 部署 GPT-NeoX,并利用 SageMaker ml.g4dn.12xlarge 实例上 4 个 GPU 的强大能力。通过这种方法,用户可以轻松地利用最先进的语言模型的能力,实现自然语言处理的广泛应用和进步。

下一步,您可以通过以下资源了解有关在 SageMaker 上使用 Hugging Face LLM 推理的更多信息:

  • 本教程的示例笔记本
  • Hugging Face TGI 存储库
  • Hugging Face TGI 发布博客
Leave a Reply

Your email address will not be published. Required fields are marked *