亚马逊AWS官方博客

使用 Amazon SageMaker 中的新工具和引导式工作流程更快速地打包和部署模型



很高兴与大家分享,Amazon SageMaker 现在推出了经过改进的模型部署体验,帮助您更快地部署传统的机器学习(ML)模型和基础模型(FM)。

作为数据科学家或机器学习从业者,您现在可以使用 SageMaker Python SDK 中新提供的 ModelBuilder 类打包模型,执行本地推理以检验运行时错误,并将模型从本地 IDE 或 SageMaker Studio 笔记本部署到 SageMaker。

SageMaker Studio 中,新的交互式模型部署工作流程将为您提供步骤指南,指导您选择实例类型,以获得最佳端点配置。SageMaker Studio 还提供了其他接口,用于在已部署的端点上添加模型、测试推理和启用自动扩缩策略。

SageMaker Python SDK 中的新工具
SageMaker Python SDK 更新了新的工具,包括 ModelBuilder 类和 SchemaBuilder 类,它们将跨越机器学习框架和模型服务器,为将模型转换为 SageMaker 可部署模型提供统一的体验。模型构建器会通过选择兼容的 SageMaker 容器,并从开发环境中捕获依赖关系,自动完成模型的部署。架构构建器可帮助您管理模型输入和输出的序列化与反序列化任务。您可以使用这些工具在本地开发环境部署模型,对其进行试验,修复所有运行时错误,并且在准备就绪后,您仅需使用一行代码,即可从本地测试过渡到在 SageMaker 上部署模型。

Amazon SageMaker ModelBuilder

我将向您演示具体做法。在以下示例中,我选择了来自 Hugging Face 模型中心Falcon-7B 模型。我首先会在本地部署模型,运行示例推理,并执行本地基准测试,以找到最佳配置,最后将模型与推荐的配置部署到 SageMaker。

首先,导入更新后的 SageMaker Python SDK,并定义示例模型输入和输出,使其与所选模型的提示格式相匹配。

import sagemaker
from sagemaker.serve.builder.model_builder import ModelBuilder
from sagemaker.serve.builder.schema_builder import SchemaBuilder
from sagemaker.serve import Mode

prompt = "Falcons are"
response = "Falcons are small to medium-sized birds of prey related to hawks and eagles."

sample_input = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 32}
}

sample_output = [{"generated_text": response}]

然后,使用 Hugging Face 模型 ID 创建 ModelBuilder 实例,使用示例模型输入和输出创建 SchemaBuilder 实例,再定义本地模型路径,并将模式设置为 LOCAL_CONTAINER,以将模型部署在本地。架构构建器会生成所需的函数,用于序列化和反序列化模型的输入和输出。

model_builder = ModelBuilder(
    model="tiiuae/falcon-7b",
    schema_builder=SchemaBuilder(sample_input, sample_output),
    model_path="/path/to/falcon-7b",
    mode=Mode.LOCAL_CONTAINER,
	env_vars={"HF_TRUST_REMOTE_CODE": "True"}
)

接下来,调用 build(),将 PyTorch 模型转换为 SageMaker 可部署模型。构建函数会生成模型服务器所需的构件,包括 inferency.pyserving.properties 文件。

local_mode_model = model_builder.build()

对于 Falcon 等 FM,您可以选择在本地容器模式下运行 tune(),该模式将执行本地基准测试,以找到模型服务的最佳配置。这包括张量并行度,如果您的环境有多个 GPU 可用,它将指定要使用的 GPU 数量。准备就绪后,调用 deploy(),在本地开发环境中部署模型。

tuned_model = local_mode_model.tune()
tuned_model.deploy()

我们来测试模型。

updated_sample_input = model_builder.schema_builder.sample_input
print(updated_sample_input)

{'inputs': 'Falcons are',
 'parameters': {'max_new_tokens': 32}}
 
local_tuned_predictor.predict(updated_sample_input)[0]["generated_text"]

在我的演示中,模型将返回以下响应:

a type of bird that are known for their sharp talons and powerful beaks.They are also known for their ability to fly at high speeds […]

准备好在 SageMaker 上部署模型时,请再次调用 deploy(),将模式设置为 SAGEMAKLER_ENDPOINT,并提供具有适当权限的 AWS Identity and Access Management(IAM)角色。

sm_predictor = tuned_model.deploy(
    mode=Mode.SAGEMAKER_ENDPOINT,
	role="arn:aws:iam::012345678910:role/role_name"
)

这将开始在 SageMaker 端点上部署您的模型。端点准备就绪后,就可以进行预测了。

new_input = {'inputs': 'Eagles are','parameters': {'max_new_tokens': 32}}
sm_predictor.predict(new_input)[0]["generated_text"])

全新的 SageMaker Studio 模型部署体验
通过从模型登录页面或 SageMaker JumpStart 模型详细信息页面选择一个或多个要部署的模型,或从端点详细信息页面创建新的端点,您将可以启动新的交互式模型部署工作流程。

Amazon SageMaker - 全新的模型部署体验

新的工作流程可帮助您以最少的输入快速部署所选模型。如果您使用 SageMaker Inference Recommender 对模型进行基准测试,其下拉列表将显示基于该基准测试的实例推荐。

SageMaker Studio 中的模型部署体验

如果未对模型进行基准测试,SageMaker 将根据其自身的启发式方法,预测可能合适的潜在实例,显示在下拉列表中。对于一些最受欢迎的 SageMaker JumpStart 模型,您将看到经过 AWS 预先测试的最佳实例类型。对于其他模型,您将看到通常推荐的实例类型。例如,如果我在 SageMaker JumpStart 中选择 Falcon 40B Instruct 模型,我可以看到推荐的实例类型。

SageMaker Studio 中的模型部署体验

SageMaker Studio 中的模型部署体验

然而,如果我想根据成本或性能优化部署,以满足特定用例的需求,我可以打开备用配置面板查看更多选项,这些选项基于基准测试前的数据。

SageMaker Studio 中的模型部署体验

部署后,您可以测试推理,或管理自动扩缩策略。

SageMaker Studio 中的模型部署体验

注意事项
这里需要牢记以下几点:

支持的机器学习模型和框架 – 在发布时,新的 SageMaker Python SDK 工具支持 XGBoost 和 PyTorch 模型的模型部署。您可以使用 SageMaker LMI 容器基于 Hugging Face TGI 的容器指定 Hugging Face 模型 ID 或 SageMaker JumpStart 模型 ID,实现对 FM 的部署。您也可以自带容器(BYOC),或使用 Triton 模型服务器部署 ONNX 格式的模型。

现已推出
这套新工具现已在所有可以使用 Amazon SageMaker 实时推理的 AWS 区域推出。使用这套新工具不会产生任何费用,您只需为创建的任何 SageMaker 基础资源付费。

了解详情

开始使用
立即在 AWS 管理控制台中探索全新的 SageMaker 模型部署体验!

— Antje