是否可为sagemaker.sklearn.estimator的SKLearn指定自定义S3存储桶?
SageMaker训练任务指定自定义S3输出桶解决方案
你可以通过在初始化SKLearn估计器时配置output_path参数解决这个问题,这是官方推荐的标准方案:
在创建SKLearn estimator实例时,直接传入output_path参数,值为你自定义的S3路径前缀即可,示例代码如下:
from sagemaker.sklearn import SKLearn sklearn = SKLearn( entry_point="train.py", # 替换为你的训练脚本名称 role=role, # 替换为你的SageMaker执行角色ARN instance_type="ml.m5.xlarge", instance_count=1, framework_version="0.23-1", # 替换为你实际使用的scikit-learn框架版本 # 新增以下参数指定自定义输出路径 output_path="s3://<你的自定义桶名称>/<自定义输出目录前缀>/" )
配置完成后再调用sklearn.fit({"train": preprocessed_training_data}),训练生成的模型文件、任务输出产物都会自动上传到你指定的S3路径下,不会再写入默认S3桶。
补充说明
- 如果需要自定义单次训练任务的输出子路径,可在调用fit时指定
job_name参数,最终输出路径会拼接为${output_path}/${job_name}/output/model.tar.gz,方便按任务维度管理产物 - 确保你使用的SageMaker执行角色已配置自定义S3桶的
s3:PutObject、s3:ListBucket等必要权限,避免任务运行时报权限错误 - 如果你的训练脚本中手动指定了
model_dir参数存储模型,优先级会高于estimator配置的output_path,注意保持两边路径一致避免冲突
内容的提问来源于stack exchange,提问作者Zhao Li
相关产品推荐
相关产品推荐

