You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SageMaker每次新建训练任务时更新自定义模型及原有端点

SageMaker 重训练后更新同一端点的实现方案

SageMaker 中的模型对象本身是不可变的,不需要修改原有模型的artifact配置,通过端点的原生更新能力即可实现同一端点无缝迭代新模型,具体操作步骤如下:

1. 训练完成后注册新模型

在Lambda的训练任务完成回调逻辑中,拿到新生成的模型artifact S3路径后,调用create_model接口注册新的模型对象,模型名可追加时间戳避免重名:

import boto3
from datetime import datetime

sagemaker_client = boto3.client('sagemaker')

# 替换为实际业务参数
new_model_name = f"custom-model-{datetime.now().strftime('%Y%m%d%H%M')}"
role_arn = "arn:aws:iam::你的账号ID:role/SageMaker执行角色名"
inference_image_uri = "你的推理镜像ECR地址"
new_model_data_url = "本次训练输出的model.tar.gz的S3路径"

sagemaker_client.create_model(
    ModelName=new_model_name,
    ExecutionRoleArn=role_arn,
    PrimaryContainer={
        'Image': inference_image_uri,
        'ModelDataUrl': new_model_data_url
    }
)

2. 创建新的端点配置

SageMaker端点通过端点配置(Endpoint Config)关联后端模型,每次模型更新需要新建对应的端点配置,实例规格、数量等参数和原有配置保持一致即可:

new_endpoint_config_name = f"custom-endpoint-config-{datetime.now().strftime('%Y%m%d%H%M')}"
sagemaker_client.create_endpoint_config(
    EndpointConfigName=new_endpoint_config_name,
    ProductionVariants=[
        {
            'VariantName': 'AllTraffic',
            'ModelName': new_model_name,
            'InitialInstanceCount': 1, # 与原有端点配置保持一致
            'InstanceType': 'ml.t2.medium', # 与原有端点配置保持一致
            'InitialVariantWeight': 1.0
        }
    ]
)

3. 触发现有端点更新

调用update_endpoint接口将现有端点关联到新的端点配置,SageMaker会自动完成流量切换,全程不会中断端点的对外服务:

existing_endpoint_name = "你已部署的原有端点名称"
sagemaker_client.update_endpoint(
    EndpointName=existing_endpoint_name,
    EndpointConfigName=new_endpoint_config_name
)

可选优化

  • 如果需要灰度验证新模型效果,可以在创建端点配置时同时添加新旧两个模型的生产变体,通过调整权重逐步切流,验证无误后再全量切换到新模型
  • 不用的历史模型、端点配置可以定期清理,减少资源占用

注意:无需修改或删除原有模型对象,旧模型可作为历史版本留存,新模型出现问题时可以快速切回旧版本配置。

内容的提问来源于stack exchange,提问作者Rahul Misal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:15:00