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

如何访问SageMaker API的entry_point脚本(如transfer_learning.py等)

SageMaker JumpStart 默认 Entry Point 脚本访问问题

背景

我正在深入理解SageMaker的训练与推理流程,学习目标检测教程时发现,所有JumpStart示例的高阶函数都会指定entry_point为特定脚本,比如以下代码分别指定了inference.py和transfer_learning.py:

部署模型代码示例

model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

训练估计器代码示例

od_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
    base_job_name=training_job_name,
    metric_definitions=training_metric_definitions,
)

疑问

  1. 这些默认脚本是否存储在SDK中?
  2. 如果存在,有没有办法访问它们?

补充说明

根据SageMaker API文档,entry_point定义为“本地Python源文件的绝对或相对路径”,这似乎说明这些文件不在SDK里,但所有JumpStart示例都引用了这些脚本,而我本地目录里并没有这些文件。另外,运行estimator的fit方法时,容器日志显示transfer_learning.py被正常调用且无报错:

/usr/local/bin/python3.9 transfer_learning.py --batch_size 16 --beta_1 0.9 --beta_2 0.999 --early_stopping True --early_stopping_min_delta 0.0 --early_stopping_patience 5 --epochs 40 --epsilon 1e-07 --initial_accumulator_value 0.1 --learning_rate 0.002 --model_dir s3://my-bucket/model --momentum 0.9 --optimizer adam --reinitialize_top_layer Auto --rho 0.95 --train_only_top_layer True

我之前基于模板创建entry_point脚本训练部署过多个非目标检测模型,要是这些默认脚本能访问到,我想以此为起点优化模型(比如添加TensorBoard日志),同时也需要目标检测任务entry_point脚本的开发资源。


回答

脚本存储位置说明

这些默认脚本不在SageMaker Python SDK本地包中,而是存储在JumpStart对应模型的镜像内部,或是通过source_dir参数指向的S3存储位置(即示例中的deploy_source_uri和train_source_uri)。JumpStart会预先将这些脚本打包到模型镜像或关联的S3资源中,因此你本地目录无需存在这些文件,运行时容器会自动获取并执行。

访问脚本的具体方法

  1. 从容器中提取

    • 启动与目标JumpStart模型同版本的容器,进入内部查看并复制脚本:
      docker run -it --rm <train_image_uri> /bin/bash
      
      进入容器后,可在工作目录或/opt/ml/code路径下找到transfer_learning.py、inference.py等脚本,直接复制到本地修改使用。
    • 若已运行过训练任务,也可在训练输出的S3路径中找到脚本副本(部分任务会将代码打包上传至输出目录),或通过SageMaker控制台查看训练任务日志获取脚本内容片段。
  2. 通过SDK获取S3路径并下载
    JumpStart模型元数据包含脚本的S3路径,可通过SDK获取后下载:

    from sagemaker.jumpstart.notebook_utils import list_jumpstart_models
    from sagemaker.jumpstart.utils import get_jumpstart_model_artifacts
    
    # 筛选目标检测模型,以YOLOv5为例
    model_id = "object-detection-yolov5"
    model_version = "*"
    
    # 获取训练和推理脚本的S3路径
    train_source_uri = get_jumpstart_model_artifacts(model_id=model_id, model_version=model_version, artifact_type="training_script")
    deploy_source_uri = get_jumpstart_model_artifacts(model_id=model_id, model_version=model_version, artifact_type="inference_script")
    

    使用AWS CLI下载到本地:

    aws s3 cp <train_source_uri> ./local_train_script/ --recursive
    
  3. SageMaker Studio导出代码
    在SageMaker Studio中打开JumpStart目标检测模型示例,选择「导出代码」选项,可直接将包含entry_point脚本的完整项目下载到本地,便于基于现有脚本修改优化。

目标检测Entry Point脚本开发建议

  • 提取到的默认脚本通常包含完整的训练/推理逻辑:
    • 训练脚本:数据加载、模型初始化、训练循环、指标计算、模型保存
    • 推理脚本:模型加载、输入预处理、推理计算、输出后处理
  • 若要添加TensorBoard日志,只需在训练脚本中引入torch.utils.tensorboard或tensorflow.summary模块,在训练循环中记录损失、精度等指标,并将日志目录指定为S3路径,SageMaker会自动同步日志到TensorBoard控制台。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:23:22