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

如何在本地创建SageMaker PipelineModel并运行批量转换任务

SageMaker PipelineModel本地运行批量转换任务说明及报错解决方案

可以创建SageMaker PipelineModel并在本地运行批量转换任务,你遇到的TypeError: create_model() missing 1 required positional argument: 'PrimaryContainer'报错,是本地模式的SageMaker SDK参数校验逻辑和PipelineModel默认配置不匹配导致的。本地模式下的create_model接口强制要求传入PrimaryContainer参数,但PipelineModel默认生成的模型创建请求只携带Containers参数,未填充PrimaryContainer字段,因此触发参数缺失报错。

修复步骤

  • 每个子PyTorchModel需要显式绑定本地会话与执行角色,确保容器配置可以被正常生成
  • 提前构造子模型的容器定义,显式为PipelineModel指定primary_container参数,参数值为pipeline顺序中第一个模型的容器定义
  • 剩余所有模型的容器定义按pipeline执行顺序传入containers参数
  • 本地路径需要添加file://前缀,供本地Docker容器识别挂载

修复后代码示例

from sagemaker.local import LocalSession
from sagemaker.pytorch import PyTorchModel
from sagemaker.pipeline import PipelineModel

sagemaker_session = LocalSession()
sagemaker_session.config = {'local': {'local_code': True}}
# 本地模式下role仅需要符合ARN格式即可,无需真实存在
role = "arn:aws:iam::123456789012:role/SageMakerLocalExecutionRole"

# 子模型显式绑定session和role
model_1 = PyTorchModel(
    model_data="file:///path/to/your/model1.tar.gz",
    entry_point="infer_model1.py",
    role=role,
    sagemaker_session=sagemaker_session,
    framework_version="1.13.1",
    py_version="py39"
)
model_2 = PyTorchModel(
    model_data="file:///path/to/your/model2.tar.gz",
    entry_point="infer_model2.py",
    role=role,
    sagemaker_session=sagemaker_session,
    framework_version="1.13.1",
    py_version="py39"
)

# 预生成子模型的容器定义
container_1 = model_1.prepare_container_def(instance_type="local")
container_2 = model_2.prepare_container_def(instance_type="local")

# 显式传入primary_container和containers参数
pipeline_model = PipelineModel(
    models=[model_1, model_2],
    role=role,
    sagemaker_session=sagemaker_session,
    primary_container=container_1,
    containers=[container_1, container_2]
)

# 初始化Transformer运行批量转换
transformer = pipeline_model.transformer(
    instance_count=1,
    instance_type="local",
    output_path="file:///path/to/your/local/output_dir"
)

transformer.transform(data="file:///path/to/your/local/input_data_dir")
transformer.wait()

注意事项

  • 所有推理代码、模型文件、输入输出目录都需要放在当前工作目录或者可被Docker挂载的本地路径下
  • 如使用自定义推理镜像,需要提前在本地环境完成镜像构建或拉取,避免容器启动失败
  • 本地模式下不需要连接AWS公有云,所有执行逻辑都在本地Docker容器中运行

内容的提问来源于stack exchange,提问作者Dao Kieu Vi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:36:03