Amazon SageMaker 新增有助于减少基础模型部署成本和延迟的推理功能

re:Invent
Amazon SageMaker
Amazon Management Console
0
0
今天,我们宣布 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 新增推理功能,有助于为您优化部署成本并减少延迟。利用新增的推理功能,您可以在同一 SageMaker 端点上部署一个或多个基础模型( FM ),并控制为每个 FM 保留的加速器数量和内存量。这有助于提高资源利用率,将模型部署成本平均降低 50% ,并使您可以根据用例扩展端点。 您可以针对每个基础模型( FM )定义单独的扩展策略,以适应模型使用模式,并进一步优化基础设施成本。此外, SageMaker 会主动监控处理推理请求的实例,并根据可用的实例智能路由请求,从而将推理延迟平均降低 20% 。 ##### 关键组件 新增的推理功能建立在 SageMaker 实时推理端点的基础上。如前所述,您使用定义端点的实例类型和初始实例计数的端点配置创建 SageMaker 端点。该模型配置在一个新的结构中,即在推理组件中。您可以在这里指定要分配给模型每个副本的加速器数量和内存量,以及要部署的模型工件、容器映像和模型副本数量。 ![屏幕截图 2023-12-26 202649.png](https://dev-media.amazoncloud.cn/2b28e510ba5e4a00a316b98060f6d09f_%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-12-26%20202649.png "屏幕截图 2023-12-26 202649.png") 让我来为您展示这个工作原理。 正在运行的新增推理功能 您可以开始使用 [SageMaker Studio](https://aws.amazon.com/cn/sagemaker/studio/?trk=cndc-detail) 、 [SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/?trk=cndc-detail) 、[Amazon SDKs ](https://aws.amazon.com/cn/developer/tools/?trk=cndc-detail) 和 [Amazon Command Line Interface (Amazon CLI)](https://aws.amazon.com/cn/cli/?trk=cndc-detail) 中的新增推理功能。它们也由 Amazon CloudFormation 提供支持。 在这个演示中,我使用 [Amazon SDK For Python(Boto3)](https://aws.amazon.com/cn/sdk-for-python/?trk=cndc-detail),在 SageMaker 实时端点上使用新的推理功能部署 [Dolly v2 7B](https://huggingface.co/databricks/dolly-v2-7b?trk=cndc-detail) 模型的副本和 [Hugging Face](https://huggingface.co/models?trk=cndc-detail) 模型中心的 [FLAN-T5 XXL](https://huggingface.co/google/flan-t5-xxl?trk=cndc-detail) 模型的副本。 创建 SageMaker 端点配置 ```Python 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 端点 ```Python sm_client.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name, ) ``` 在创建推理组件之前,您需要创建一个与 SageMaker 兼容的模型,并指定要使用的容器映像。这两种模型我都使用了 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 的 [Hugging Face LLM Inference Container](https://huggingface.co/blog/sagemaker-huggingface-llm?trk=cndc-detail) 。这些深度学习容器( DLC )包含在 SageMaker 上托管大型模型所需的组件、库和驱动程序。 准备 Dolly v2 模型 ```Python from sagemaker.huggingface import get_huggingface_llm_image_uri # Retrieve the container image URI hf_inference_dlc = get_huggingface_llm_image_uri( "huggingface", version="0.9.3" ) # Configure model container dolly7b = { 'Image': hf_inference_dlc, 'Environment': { 'HF_MODEL_ID':'databricks/dolly-v2-7b', 'HF_TASK':'text-generation', } } # Create SageMaker Model sagemaker_client.create_model( ModelName = "dolly-v2-7b", ExecutionRoleArn = role, Containers = [dolly7b] ) ``` 准备 FLAN-T5 XXL 模型 ```Python # Configure model container flant5xxlmodel = { 'Image': hf_inference_dlc, 'Environment': { 'HF_MODEL_ID':'google/flan-t5-xxl', 'HF_TASK':'text-generation', } } # Create SageMaker Model sagemaker_client.create_model( ModelName = "flan-t5-xxl", ExecutionRoleArn = role, Containers = [flant5xxlmodel] ) ``` 现在,您已经为创建推理组件做好准备。 **针对每个模型创建一个推理组件** 针对要在端点上部署的每个模型指定一个推理组件。推理组件能够让您指定与 SageMaker 兼容的模型以及要分配的计算和内存资源。对于 CPU 工作负载,请定义要分配的内核数。对于加速器工作负载,请定义加速器的数量。`RuntimeConfig` 定义要部署的模型副本数。 ```Python # Inference compoonent for 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}, ) # Inference component for 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}, ) ``` 成功部署推理组件之后,就可以调用模型。 运行推理 要在端点上调用模型,请指定相应的推理组件。 ```Python 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 开发者指南](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deploy-models.html?trk=cndc-detail),获取详细的说明。 新增的推断功能提供了每个模型的 CloudWatch 指标和 CloudWatch 日志,并可与 SageMaker CPU 和 GPU 计算实例上的任何 SageMaker 兼容的容器镜像一起使用。如果容器镜像支持,您还可以使用响应流式传输。 ##### 现已上线 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 新增的推理功能现已在下列亚马逊云科技区域上线——美国东部(俄亥俄州、北弗吉尼亚州)、美国西部(俄勒冈州)、亚太地区(雅加达、孟买、首尔、新加坡、悉尼、东京)、加拿大(中部)、欧洲(法兰克福、爱尔兰、伦敦、斯德哥尔摩)、中东(阿联酋)和南美(圣保罗)。请访问亚马逊 [Amazon SageMaker Pricing](https://aws.amazon.com/cn/sagemaker/pricing/?trk=cndc-detail) 了解有关定价的详细信息。请访问 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 了解更多信息。 ##### 入门 立即登录 [Amazon Management Console](https://console.aws.amazon.com/sagemaker/home?trk=cndc-detail) 并使用新增的 SageMaker 推理功能部署您的 FM! 【文章来源:https://aws.amazon.com/blogs/aws/amazon-sagemaker-adds-new-inference-capabilities-to-help-reduce-foundation-model-deployment-costs-and-latency?trk=cndc-detail/】 — [Antje](https://www.linkedin.cn/incareer/in/antje-barth/?trk=cndc-detail)
0
目录
关闭