亚马逊AWS官方博客
Amazon SageMaker 增加新的推理功能,帮助降低基础模型的部署成本和延迟
今天,我们宣布推出新的 Amazon SageMaker 推理功能,帮助您优化部署成本,并降低延迟。借助新的推理功能,您可以在同一个 SageMaker 端点上部署一个或多个基础模型(FM),并控制为每个 FM 预留的加速器数量和内存容量。这有助于提高资源利用率,将模型的部署成本平均降低 50%,并使您能够根据用例扩展端点。
对于每个 FM,您都可以定义单独的扩展策略,以适应模型使用模式,同时进一步优化基础设施成本。此外,SageMaker 还会主动监控正在处理推理请求的实例,并根据实例的可用情况,智能地发送请求,从而帮助将推理延迟平均降低 20%。
关键组件
新的推理功能基于 SageMaker 的实时推理端点。和往常一样,您需要通过端点配置创建 SageMaker 端点,在配置中定义端点的实例类型以及初始实例的数量。模型则在名为推理组件的新结构中配置。您需要在其中指定要分配给每个模型副本的加速器数量和内存容量,以及模型构件、容器镜像和要部署的模型副本数量。
我将向您演示具体做法。
新推理功能的实战运用
你可以通过 SageMaker Studio、SageMaker Python SDK、AWS SDK 和 AWS 命令行界面(AWS CLI)开始使用新的推理功能。AWS CloudFormation 也支持这些新功能。
在这个演示中,我将通过适用于 Python 的 Amazon SDK(Boto3),利用新的推理功能在 SageMaker 实时端点上部署来自 Hugging Face 模型中心的 Dolly v2 7B 模型副本和 FLAN-T5 XXL 模型副本。
创建 SageMaker 端点配置
import boto3
import sagemaker
role = sagemaker.get_execution_role()
sm_client = boto3.client(service_name="sagemaker")
sm_client.create_endpoint_config(
EndpointConfigName=endpoint_config_name,
ExecutionRoleArn=role,
ProductionVariants=[{
"VariantName": "AllTraffic",
"InstanceType": "ml.g5.12xlarge",
"InitialInstanceCount": 1,
"RoutingConfig": {
"RoutingStrategy": "LEAST_OUTSTANDING_REQUESTS"
}
}]
)
创建 SageMaker 端点
sm_client.create_endpoint(
EndpointName=endpoint_name,
EndpointConfigName=endpoint_config_name,
)
创建推理组件之前,您需要创建与 SageMaker 兼容的模型,并指定要使用的容器镜像。对于这两款模型,我采用了 Hugging Face LLM 推理容器,配合 Amazon SageMaker 使用。 这些深度学习容器(DLC)包含了在 SageMaker 上托管大型模型所需的组件、库和驱动程序。
准备 Dolly v2 模型
from sagemaker.huggingface import get_huggingface_llm_image_uri
# 检索容器镜像 URI
hf_inference_dlc = get_huggingface_llm_image_uri(
"huggingface",
version="0.9.3"
)
# 配置模型容器
dolly7b = {
'Image': hf_inference_dlc,
'Environment': {
'HF_MODEL_ID':'databricks/dolly-v2-7b',
'HF_TASK':'text-generation',
}
}
# 创建 SageMaker 模型
sagemaker_client.create_model(
ModelName = "dolly-v2-7b",
ExecutionRoleArn = role,
Containers = [dolly7b]
)
准备 FLAN-T5 XXL 模型
# 配置模型容器
flant5xxlmodel = {
'Image': hf_inference_dlc,
'Environment': {
'HF_MODEL_ID':'google/flan-t5-xxl',
'HF_TASK':'text-generation',
}
}
# 创建 SageMaker 模型
sagemaker_client.create_model(
ModelName = "flan-t5-xxl",
ExecutionRoleArn = role,
Containers = [flant5xxlmodel]
)
现在,您可以创建推理组件了。
为每个模型创建推理组件
为要在端点上部署的每个模型指定推理组件。推理组件允许您指定与 SageMaker 兼容的模型,以及要分配的计算资源和内存资源。为 CPU 工作负载定义要分配的内核数量。为加速器工作负载定义加速器的数量。RuntimeConfig
定义了您要部署的模型副本数量。
# 针对 Dolly v2 7B 的推理组件
sm_client.create_inference_component(
InferenceComponentName="IC-dolly-v2-7b",
EndpointName=endpoint_name,
VariantName=variant_name,
Specification={
"ModelName": "dolly-v2-7b",
"ComputeResourceRequirements": {
"NumberOfAcceleratorDevicesRequired": 2,
"NumberOfCpuCoresRequired": 2,
"MinMemoryRequiredInMb": 1024
}
},
RuntimeConfig={"CopyCount": 1},
)
# 针对 FLAN-T5 XXL 的推理组件
sm_client.create_inference_component(
InferenceComponentName="IC-flan-t5-xxl",
EndpointName=endpoint_name,
VariantName=variant_name,
Specification={
"ModelName": "flan-t5-xxl",
"ComputeResourceRequirements": {
"NumberOfAcceleratorDevicesRequired": 2,
"NumberOfCpuCoresRequired": 1,
"MinMemoryRequiredInMb": 1024
}
},
RuntimeConfig={"CopyCount": 1},
)
成功部署推理组件后,您就可以调用模型了。
运行推理
要在端点上调用模型,请指定相应的推理组件。
import json
sm_runtime_client = boto3.client(service_name="sagemaker-runtime")
payload = {"inputs": "Why is California a great place to live?"}
response_dolly = sm_runtime_client.invoke_endpoint(
EndpointName=endpoint_name,
InferenceComponentName = "IC-dolly-v2-7b",
ContentType="application/json",
Accept="application/json",
Body=json.dumps(payload),
)
response_flant5 = sm_runtime_client.invoke_endpoint(
EndpointName=endpoint_name,
InferenceComponentName = "IC-flan-t5-xxl",
ContentType="application/json",
Accept="application/json",
Body=json.dumps(payload),
)
result_dolly = json.loads(response_dolly['Body'].read().decode())
result_flant5 = json.loads(response_flant5['Body'].read().decode())
接下来,通过注册扩展目标,并将扩展策略应用至推理组件,您可以为每个模型定义单独的扩展策略。如需详细说明,请查阅《SageMaker 开发人员指南》。
新的推理功能提供每个模型的 CloudWatch 指标和 CloudWatch 日志,并且可以在基于 SageMaker CPU 和 GPU 的计算实例中,与任何 SageMaker 兼容的容器镜像一起使用。在容器镜像的支持下,您还可以使用响应流。
现已推出
新的 Amazon SageMaker 推理功能现已在以下AWS 区域推出:美国东部(俄亥俄州、弗吉尼亚州北部)、美国西部(俄勒冈州)、亚太地区(雅加达、孟买、首尔、新加坡、悉尼、东京)、加拿大(中部)、欧洲地区(法兰克福、爱尔兰、伦敦、斯德哥尔摩)、中东地区(阿联酋)和南美洲(圣保罗)。有关定价的详细信息,请访问 Amazon SageMaker 定价。要了解更多信息,请访问 Amazon SageMaker。
开始使用
立即登录 AWS 管理控制台,使用新的 SageMaker 推理功能部署您的 FM!
— Antje