1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 实际上没有特定的模型部署Pipeline步骤。SageMaker Pipeline更多地是关于“批处理模式”,但如果客户确实要求此功能,有可能会添加。 您可以使用Lambda步骤轻松实现它。
首先创建一个Lambda函数来部署/更新模型:
%%writefile deploy_model_lambda.py
"""
This Lambda function deploys the model to SageMaker Endpoint.
If Endpoint exists, then Endpoint will be updated with new Endpoint Config.
"""
import json
import boto3
import time
sm_client = boto3.client("sagemaker")
def lambda_handler(event, context):
print(f"Received Event: {event}")
current_time = time.strftime("%m-%d-%H-%M-%S", time.localtime())
endpoint_instance_type = event["endpoint_instance_type"]
model_name = event["model_name"]
endpoint_config_name = "{}-{}".format(event["endpoint_config_name"], current_time)
endpoint_name = event["endpoint_name"]
# Create Endpoint Configuration
create_endpoint_config_response = sm_client.create_endpoint_config(
EndpointConfigName=endpoint_config_name,
ProductionVariants=[
{
"InstanceType": endpoint_instance_type,
"InitialVariantWeight": 1,
"InitialInstanceCount": 1,
"ModelName": model_name,
"VariantName": "AllTraffic",
}
],
)
print(f"create_endpoint_config_response: {create_endpoint_config_response}")
# Check if an endpoint exists. If no - Create new endpoint, if yes - Update existing endpoint
list_endpoints_response = sm_client.list_endpoints(
SortBy="CreationTime",
SortOrder="Descending",
NameContains=endpoint_name,
)
print(f"list_endpoints_response: {list_endpoints_response}")
if len(list_endpoints_response["Endpoints"]) > 0:
print("Updating Endpoint with new Endpoint Configuration")
update_endpoint_response = sm_client.update_endpoint(
EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name
)
print(f"update_endpoint_response: {update_endpoint_response}")
else:
print("Creating Endpoint")
create_endpoint_response = sm_client.create_endpoint(
EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name
)
print(f"create_endpoint_response: {create_endpoint_response}")
return {"statusCode": 200, "body": json.dumps("Endpoint Created Successfully")}
然后创建Lambda的步骤:
deploy_model_lambda_function_name = "sagemaker-deploy-model-lambda-" + current_time
deploy_model_lambda_function = Lambda(
function_name=deploy_model_lambda_function_name,
execution_role_arn=lambda_role,
script="deploy_model_lambda.py",
handler="deploy_model_lambda.lambda_handler",
)
您可以在此notebook中看到一个完整的工作示例。
相关内容
- AWS 官方已更新 4 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前