SageMaker Studio Lab部署指南:将训练好的模型无缝集成到AWS服务
SageMaker Studio Lab部署指南:将训练好的模型无缝集成到AWS服务
【免费下载链接】studio-lab-examplesExample notebooks for working with SageMaker Studio Lab. Sign up for an account at the link below!项目地址: https://gitcode.com/gh_mirrors/st/studio-lab-examples
SageMaker Studio Lab是一个免费的机器学习开发环境,特别适合初学者和开发者快速构建、训练和部署机器学习模型。本文将详细介绍如何将在SageMaker Studio Lab中训练好的模型无缝部署到AWS服务,通过Serverless Endpoint实现高效、低成本的模型服务。
为什么选择SageMaker Studio Lab进行模型部署?
SageMaker Studio Lab提供了持续12小时的CPU会话和4小时的GPU会话,非常适合机器学习学习者和开发者进行模型实验和原型开发。当需要将模型公开提供服务时,AWS SageMaker Serverless Endpoint是理想的选择,它可以自动扩展资源,按使用付费,无需管理服务器,完美解决了模型部署的复杂性。
图:SageMaker Serverless Endpoint架构展示,适合不可预测的预测流量,支持自动扩展至零实例
准备工作:环境与工具安装
在开始部署之前,需要确保你的环境中安装了必要的工具和库。以下是基本的准备步骤:
安装AWS SDK和CLI工具
首先,安装boto3(AWS SDK for Python)和AWS CLI,这两个工具将帮助你与AWS服务进行交互:
pip install boto3 pip install awscli配置AWS凭证
配置AWS凭证是连接SageMaker Studio Lab与AWS服务的关键步骤。你需要在IAM控制台中创建用户并获取访问密钥,然后通过以下方式配置:
mkdir ~/.aws创建credentials文件并添加你的AWS访问密钥:
%%writefile ~/.aws/credentials [default] aws_access_key_id = <你的访问密钥> aws_secret_access_key = <你的密钥>创建config文件设置默认区域:
%%writefile ~/.aws/config [default] region=us-east-1创建SageMaker执行角色
SageMaker执行角色是一个IAM角色,用于在AWS硬件上代表你执行操作。你可以通过AWS SageMaker控制台创建此角色,并记录其ARN(Amazon资源名称)。
模型选择与准备:以Hugging Face模型为例
在本指南中,我们将使用Hugging Face上的预训练模型作为示例。Hugging Face是一个开源的机器学习平台,提供了大量预训练的NLP模型。
选择合适的模型
我们选择distilbert-base-uncased-finetuned-sst-2-english模型,这是一个基于DistilBERT的英文文本分类模型,专门用于情感分析任务。你可以在Hugging Face网站上直接测试该模型:
图:Hugging Face模型页面展示,包含模型详情和在线测试功能
本地测试模型
在部署之前,建议先在本地测试模型,确保其正常工作:
from transformers import AutoTokenizer, AutoModelForSequenceClassification from transformers import TextClassificationPipeline tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english") model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english") pipe = TextClassificationPipeline(model=model, tokenizer=tokenizer, return_all_scores=True) pipe("I love Amazon SageMaker Studio Lab!")部署步骤:从模型到Serverless Endpoint
步骤1:连接AWS资源
使用boto3创建SageMaker客户端,连接到AWS资源:
import boto3 sm_client = boto3.client('sagemaker') response = sm_client.list_endpoints()步骤2:创建SageMaker模型
创建模型是部署的第一步。你需要指定使用的容器镜像,对于Hugging Face模型,AWS提供了预构建的深度学习容器:
model_data_url="763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-inference:1.9-transformers4.12-cpu-py38-ubuntu20.04" container_config = { 'Image': model_data_url, 'Mode': 'SingleModel', 'Environment': { 'HF_MODEL_ID': 'distilbert-base-uncased-finetuned-sst-2-english', 'HF_TASK' : 'text-classification', 'SAGEMAKER_REGION' : 'us-east-1' } } response = sm_client.create_model( ModelName=model_name, PrimaryContainer=container_config, ExecutionRoleArn=role, EnableNetworkIsolation=False )步骤3:创建Serverless Endpoint配置
配置Serverless Endpoint,指定内存大小和最大并发数:
endpoint_config_response = sm_client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "ModelName": model_name, "VariantName": "AllTraffic", "ServerlessConfig": { "MemorySizeInMB": 4096, "MaxConcurrency": 10 } } ] )步骤4:创建Endpoint
使用上一步创建的配置创建Endpoint:
endpoint_name = "studio-lab-ep" + timestamp response = sm_client.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name )创建完成后,你可以在AWS SageMaker控制台的"Endpoints"页面查看Endpoint状态。
步骤5:测试Endpoint
Endpoint创建完成后,可以使用SageMaker Runtime客户端进行测试:
import json runtime = boto3.client("sagemaker-runtime") content_type = "application/json" data = { "inputs": "Happy Birthday to you!" } response = runtime.invoke_endpoint( EndpointName=endpoint_name, ContentType=content_type, Body=json.dumps(data) ) print(response["Body"].read().decode())SageMaker Serverless Endpoints工作原理
SageMaker Serverless Endpoints自动管理计算资源,根据流量自动扩展,无需担心服务器管理。其工作流程如下:
图:SageMaker Serverless Endpoints工作流程,展示从请求发送到结果返回的完整过程
- 发送推理请求:从客户端应用或其他AWS服务发送推理请求。
- SageMaker Serverless Inference:处理推理请求,提供完全托管的无服务器端点。
- 自动资源管理:自动配置、扩展和管理计算资源。
- 监控与日志:提供托管的日志和监控功能。
- 按使用付费:仅为实际使用付费,不收取闲置时间费用。
- 返回结果:将模型预测结果返回给最终用户。
清理资源:避免不必要的费用
完成测试后,及时清理创建的资源,避免产生不必要的费用:
sm_client.delete_endpoint(EndpointName=endpoint_name) sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name) sm_client.delete_model(ModelName=model_name)总结
通过本文的指南,你已经了解了如何将SageMaker Studio Lab中训练的模型部署到AWS SageMaker Serverless Endpoint。这种部署方式不仅简单高效,还能根据实际需求自动扩展资源,大大降低了运维成本。无论你是机器学习初学者还是有经验的开发者,SageMaker Studio Lab和AWS Serverless Endpoints的组合都能帮助你快速将模型转化为可用的服务。
如果你想深入了解更多细节,可以参考项目中的详细示例笔记本:Access_AWS_from_Studio_Lab_Deployment.ipynb。开始你的模型部署之旅吧!🚀
【免费下载链接】studio-lab-examplesExample notebooks for working with SageMaker Studio Lab. Sign up for an account at the link below!项目地址: https://gitcode.com/gh_mirrors/st/studio-lab-examples
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
