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

Sagemaker脚本模式(本地)下,修改inference.py后如何快速更新端点?

快速更新SageMaker本地模式推理端点(无需重建容器)

首次部署(仅执行一次)

先按原有流程完成首次部署,确保容器启动并安装好所有依赖:

from sagemaker.pytorch import PyTorchModel
from sagemaker.serializers import JSONSerializer
from sagemaker.deserializers import JSONDeserializer

# 首次创建模型并部署
model_instance = PyTorchModel(
    model_data=model_tar_path,
    role=role,
    source_dir="code",
    entry_point="inference.py",
    framework_version="1.8",
    py_version="py3"
)

predictor = model_instance.deploy(
    initial_instance_count=1,
    endpoint_name='some_name',
    instance_type=instance_type,
    serializer=JSONSerializer(),
    deserializer=JSONDeserializer()
)

修改推理脚本后的快速更新

当你修改inference.py或code目录下的其他文件后,无需重新构建容器,只需执行以下步骤:

  1. 创建新的PyTorchModel实例(指向更新后的代码)
  2. 调用update_endpoint方法复用现有容器更新端点

代码示例:

# 创建新的模型实例(仅更新代码部分,模型数据不变)
updated_model = PyTorchModel(
    model_data=model_tar_path,  # 复用原模型数据,无需重新打包
    role=role,
    source_dir="code",  # 指向修改后的代码目录
    entry_point="inference.py",  # 修改后的入口脚本
    framework_version="1.8",
    py_version="py3"
)

# 更新端点,复用现有容器
predictor = updated_model.update_endpoint(
    endpoint_name='some_name',
    initial_instance_count=1,
    instance_type=instance_type
)

关键注意事项

  • 模型数据复用:保持model_data路径不变,SageMaker只会更新推理代码,不会重新处理模型文件
  • 本地容器缓存:本地模式下Docker容器会保留已安装的依赖,更新时仅同步新代码到容器内,避免重复安装依赖
  • 端点名称一致:必须使用和首次部署相同的endpoint_name,才能覆盖现有端点
  • 验证更新:更新后调用一次预测请求,确认新的推理逻辑生效

额外优化:本地代码热加载(可选)

若想实现实时修改实时生效,可直接将本地修改的文件同步到运行中的Docker容器:

  1. 查看运行中的SageMaker推理容器ID:docker ps
  2. 将修改后的文件复制到容器内的代码目录(默认路径为/opt/ml/model/code/):
docker cp ./code/inference.py <container_id>:/opt/ml/model/code/
  1. 若服务未自动生效,重启容器内的推理服务:
docker exec <container_id> sudo service nginx restart
docker exec <container_id> sudo supervisorctl restart sagemaker-inference

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:41:04