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

自定义容器场景下,如何向AWS SageMaker训练传入配置文件?

解决方案:传递配置文件并指定训练参数的无依赖方案

方案一:通过SageMaker Inputs自动上传+Hyperparameters指定参数

这个方案无需修改自定义容器的原有配置,也不依赖本地额外入口文件,步骤如下:

1. 配置训练输入,自动上传本地配置文件

修改estimator.fit()调用,利用TrainingInput让SageMaker自动将EC2本地的配置文件上传到S3,并挂载到训练实例的指定目录:

from sagemaker.inputs import TrainingInput

# 定义输入:指定本地配置文件路径,设置训练实例上的挂载方式
training_input = TrainingInput(
    s3_data=f"file:///home/ubuntu/train_config_mmaction2.py",
    content_type="application/python",
    input_mode="File"
)

2. 通过Hyperparameters传递配置文件路径

在PyTorch Estimator初始化时添加hyperparameters参数,将训练实例上的配置文件路径传给train.py——SageMaker会自动把Hyperparameters转为命令行参数格式,匹配mmaction2的调用要求:

estimator = PyTorch(
    role='sagemaker_role',
    image_uri="path_in_ecr",
    instance_count=1,
    instance_type="ml.g4dn.xlarge",
    volume_size=40,
    output_path=f"s3://{bucket}/{prefix_output}/",
    sagemaker_session=sagemaker_session,
    max_run=3600 * 2,
    # 传递配置文件路径作为命令行参数
    hyperparameters={
        "config": "/opt/ml/input/data/config/train_config_mmaction2.py"
    }
)

# 启动训练并传入配置文件输入
estimator.fit(inputs={"config": training_input})

方案优势

  • 保留原有Dockerfile中SAGEMAKER_PROGRAM的配置,无需修改容器入口逻辑
  • 无需依赖本地额外入口文件,仅需传递目标配置文件,SageMaker自动完成上传、挂载流程
  • Hyperparameters自动转为train.py的命令行参数,最终训练命令为python tools/train.py --config /opt/ml/input/data/config/train_config_mmaction2.py,完全符合mmaction2的调用规范

备选方案:复用S3存储的配置文件

如果配置文件需要重复使用,可以先手动将其上传到S3固定路径,再通过TrainingInput直接指定S3地址,避免每次训练重复上传本地文件:

training_input = TrainingInput(
    s3_data=f"s3://{bucket}/{prefix_config}/train_config_mmaction2.py",
    content_type="application/python",
    input_mode="File"
)

后续训练只需直接调用这个S3路径即可,同样无需依赖本地入口文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:45:27