Press "Enter" to skip to content

使用Amazon SageMaker轻松部署Hugging Face模型

使用Amazon SageMaker轻松部署Hugging Face模型 四海 第1张

今年早些时候,我们宣布与亚马逊建立战略合作,以便公司更轻松地在亚马逊SageMaker中使用Hugging Face,并更快地发布尖端的机器学习功能。我们引入了新的Hugging Face深度学习容器(DLC),以在亚马逊SageMaker中训练Hugging Face Transformer模型。

今天,我们很高兴与您分享一个新的推理解决方案,它使使用亚马逊SageMaker部署Hugging Face Transformers变得比以往任何时候都更容易!借助新的Hugging Face推理DLC,您只需再添加一行代码,即可部署已训练好的模型进行推理,或者选择来自模型中心的10,000多个公开可用模型,并使用亚马逊SageMaker部署它们。

在SageMaker中部署模型可以为您提供生产就绪的端点,可以在AWS环境中轻松扩展,并具有内建的监控和大量企业功能。这是一个令人惊叹的合作,我们希望您能充分利用它!

以下是如何使用新的SageMaker Hugging Face推理工具包部署基于Transformers的模型:

from sagemaker.huggingface import HuggingFaceModel

# 创建Hugging Face模型类并将其部署为SageMaker端点
huggingface_model = HuggingFaceModel(...).deploy()

就是这样!🚀

要了解有关使用新的Hugging Face DLC与亚马逊SageMaker Python SDK访问和使用的更多信息,请查看下面的指南和资源。


以下是将模型部署到亚马逊SageMaker的所有重要资源。

博客/视频

  • 视频:将Hugging Face Transformers模型从S3部署到亚马逊SageMaker
  • 视频:将Hugging Face Transformers模型从模型中心部署到亚马逊SageMaker

示例/文档

  • 亚马逊SageMaker的Hugging Face文档
  • 将模型部署到亚马逊SageMaker
  • 亚马逊SageMaker的Hugging Face文档
  • Hugging Face的Python SDK SageMaker文档
  • 深度学习容器
  • 笔记本:将10,000多个Hugging Face Transformers之一部署到亚马逊SageMaker进行推理
  • 笔记本:将Hugging Face Transformer模型从S3部署到SageMaker进行推理

除了面向推理的Hugging Face Transformers优化的深度学习容器之外,我们还为亚马逊SageMaker创建了一个新的推理工具包。这个新的推理工具包利用了transformers库中的pipelines,可以在不编写任何预处理或后处理代码的情况下进行零代码部署。在下面的“入门”部分,您可以找到两个将模型部署到亚马逊SageMaker的示例。

除了零代码部署,推理工具包还支持“自定义代码”方法,您可以在其中覆盖默认方法。您可以在这里了解有关“自定义代码”的更多信息,或者您可以查看示例笔记本“将自定义推理代码部署到亚马逊SageMaker”。

API – 推理工具包描述

使用transformers的pipelines,我们设计了一个API,使您可以轻松受益于所有pipelines的功能。该API与🤗加速推理API具有类似的界面,这意味着您的输入需要在inputs键中定义,如果您希望添加其他支持的pipelines参数,可以将它们添加到parameters键中。下面是请求的示例。

# 文本分类请求体
{
    "inputs": "相机-您被授予一台SiPix数码相机!请从座机拨打09061221066。在28天内交付。"
}
# 问答请求体
{
    "inputs": {
        "question": "用于推理的是什么?",
        "context": "我的名字是菲利普,我住在纽伦堡。这个模型与sagemaker一起用于推理。"
    }
}
# 零样本分类请求体
{
    "inputs": "您好,我最近从贵公司购买了一台设备,但它的功能与广告不符,我希望得到退款!",
    "parameters": {
        "candidate_labels": [
            "退款",
            "法律",
            "常见问题"
        ]
    }
}

在本指南中,我们将使用新的Hugging Face Inference DLCs和Amazon SageMaker Python SDK来部署两个Transformer模型进行推理。

在第一个示例中,我们部署了一个在Amazon SageMaker中训练的Hugging Face Transformer模型进行推理。

在第二个示例中,我们直接从模型中心部署了一个10,000多个公开可用的Hugging Face Transformers模型到Amazon SageMaker进行推理。

设置环境

我们将使用Amazon SageMaker Notebook实例进行示例。您可以在这里了解如何设置Notebook实例。要开始,请进入Jupyter Notebook或JupyterLab,并使用conda_pytorch_p36内核创建一个新的Notebook。

注意:使用Jupyter是可选的:我们也可以从任何安装了SDK、连接到云端并具有适当权限(如笔记本电脑、其他IDE或任务调度程序如Airflow或AWS Step Functions)的位置发起SageMaker API调用。

之后,我们可以安装所需的依赖项。

pip install "sagemaker>=2.48.0" --upgrade

要在SageMaker上部署模型,我们需要创建一个sagemaker会话并提供具有正确权限的IAM角色。get_execution_role方法由SageMaker SDK提供作为可选的便利。您也可以通过编写您想要您的端点使用的特定角色ARN来指定角色。此IAM角色将稍后附加到端点,例如从Amazon S3下载模型。

import sagemaker

sess = sagemaker.Session()
role = sagemaker.get_execution_role()

将训练好的Hugging Face Transformer模型部署到SageMaker进行推理

有两种方法可以部署您在SageMaker上训练的Hugging Face模型。您可以在训练完成后立即部署它,也可以稍后使用指向Amazon S3上保存的模型的model_data进行部署。除了下面提到的两种选项之外,您还可以使用低级SDK(如boto3AWS CLITerraform和CloudFormation模板)来实例化Hugging Face端点。

使用Estimator类在训练后直接部署模型

如果您在训练后直接部署模型,您需要确保所有必需的模型工件都保存在您的训练脚本中,包括分词器和模型。直接在训练后部署的一个好处是,SageMaker模型容器元数据将包含源训练作业,提供从训练作业到部署模型的血统。

from sagemaker.huggingface import HuggingFace

############ 伪代码开始 ############

# 创建HuggingFace estimator来运行训练
huggingface_estimator = HuggingFace(....)

# 使用我们上传的数据集作为输入开始训练作业
huggingface_estimator.fit(...)

############ 伪代码结束 ############

# 部署模型到SageMaker推理
predictor = hf_estimator.deploy(initial_instance_count=1, instance_type="ml.m5.xlarge")

# 示例请求,您总是需要定义"inputs"
data = {
   "inputs": "Camera - You are awarded a SiPix Digital Camera! call 09061221066 fromm landline. Delivery within 28 days."
}
# 请求
predictor.predict(data)

运行请求后,我们可以使用以下命令删除端点。

# 删除端点
predictor.delete_endpoint()

使用HuggingFaceModel类从预训练检查点部署模型

如果您已经训练了模型并希望在以后某个时间部署它,则可以使用model_data参数指定您的分词器和模型权重的位置。

from sagemaker.huggingface.model import HuggingFaceModel

# 创建Hugging Face Model Class
huggingface_model = HuggingFaceModel(
   model_data="s3://models/my-bert-model/model.tar.gz",  # 您的训练好的SageMaker模型的路径
   role=role, # 具有创建端点权限的IAM角色
   transformers_version="4.6", # 使用的transformers版本
   pytorch_version="1.7", # 使用的pytorch版本
)
# 部署模型到SageMaker推理
predictor = huggingface_model.deploy(
   initial_instance_count=1, 
   instance_type="ml.m5.xlarge"
)

# 示例请求,您总是需要定义"inputs"
data = {
   "inputs": "Camera - You are awarded a SiPix Digital Camera! call 09061221066 fromm landline. Delivery within 28 days."
}

# 请求
predictor.predict(data)

在我们运行请求之后,我们可以使用以下代码删除端点:

# 删除端点
predictor.delete_endpoint()

将10,000多个Hugging Face Transformers之一部署到Amazon SageMaker进行推理

要直接从Hugging Face Model Hub将模型部署到Amazon SageMaker,我们需要在创建HuggingFaceModel时定义两个环境变量。我们需要定义:

  • HF_MODEL_ID:定义模型ID,创建SageMaker Endpoint时将自动从huggingface.co/models加载。🤗 Hub提供了10,000多个模型,所有这些模型都可以通过此环境变量访问。
  • HF_TASK:定义使用的🤗 Transformers pipeline的任务。可以在此处找到任务的完整列表。
from sagemaker.huggingface.model import HuggingFaceModel

# Hub模型配置。<https://huggingface.co/models>
hub = {
  'HF_MODEL_ID':'distilbert-base-uncased-distilled-squad', # hf.co/models中的model_id
  'HF_TASK':'question-answering' # 用于预测的NLP任务
}

# 创建Hugging Face模型类
huggingface_model = HuggingFaceModel(
   env=hub, # 从Hub加载模型的配置
   role=role, # 具有创建Endpoint权限的IAM角色
   transformers_version="4.6", # 使用的transformers版本
   pytorch_version="1.7", # 使用的pytorch版本
)

# 部署模型到SageMaker推理
predictor = huggingface_model.deploy(
   initial_instance_count=1,
   instance_type="ml.m5.xlarge"
)

# 示例请求,您总是需要定义"inputs"
data = {
"inputs": {
    "question": "用于推理的是什么?",
    "context": "我的名字是Philipp,我住在纽伦堡。这个模型用于与sagemaker进行推理。"
    }
}

# 请求
predictor.predict(data)

在我们运行请求之后,我们可以使用以下代码删除端点:

# 删除端点
predictor.delete_endpoint()

您可以在文档中找到完整的常见问题解答。

Q:我可以部署哪些推理模型?

A:您可以部署:

  • 在Amazon SageMaker中训练的任何🤗 Transformers模型,或其他兼容平台训练的模型,并且可以适应SageMaker Hosting设计
  • Hugging Face Model Hub中的10,000多个公开可用的Transformer模型,或
  • 托管在您的Hugging Face高级帐户中的私有模型!

Q:推理工具包支持哪些流水线、任务?

A:推理工具包和DLC支持任何transformers pipelines。您可以在此处找到完整列表

Q:在托管SageMaker端点时,我是否必须使用transformers pipelines

A:不必,您还可以编写自定义的推理代码来提供自己的模型和逻辑,具体请参阅此处的文档。

Q:使用Hugging Face Deep Learning Containers (DLCs)的必要吗?

A:DLCs是经过全面测试、维护和优化的深度学习环境,无需安装、配置或维护。特别是,我们的推理DLC带有预先编写的服务堆栈,大大降低了DL服务的技术门槛。

Q:我的数据和代码如何由Amazon SageMaker保护?

A:Amazon SageMaker提供多种安全机制,包括静态加密传输加密虚拟私有云(VPC)连接身份和访问管理(IAM)。要了解有关AWS云和Amazon SageMaker安全性的更多信息,请访问Amazon SageMaker中的安全性AWS云安全

问:这个在我的地区可用吗?

答:有关支持的地区列表,请访问AWS区域表了解所有AWS全球基础设施。

问:您是否为这个解决方案提供高级支持或支持服务级别协议(SLA)?

答:AWS提供各种技术支持层级,涵盖AWS产品和服务的开发和生产问题 – 请参阅AWS支持以了解具体内容和范围。

如果您有问题,Hugging Face社区可以提供帮助和/或受益,请在Hugging Face论坛中发布。


如果您需要来自Hugging Face团队的高级支持来加速您的NLP路线图,我们的专家加速计划为您提供了来自我们的开源、科学和机器学习工程团队的直接指导。

Leave a Reply

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