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

问题描述 投票:0回答:1

我试图更好地理解 SageMaker 中发生的训练和推理过程,所以如果我错了,请原谅我。我一直在学习 SageMaker 对象检测教程,在每个教程中我都看到高级函数将

entry_point
设置为脚本。我在下面添加了两个函数,分别将
entry_point
设置为“inference.py”和“transfer_learning.py”,在此 JumpStart 示例中:

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. 如果是这样,有什么方法可以访问它们吗?

根据 API 文档,它指出

entry_point
是“本地 Python 源文件的绝对或相对路径”,这会让我认为 1) 的答案是“否”。但是,每个 JumpStart 示例都引用这些脚本,而当我创建项目或运行该项目时,目录中不存在此类脚本。 此外,在估算器上运行
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
脚本。

amazon-web-services amazon-sagemaker
1个回答
0
投票

这些默认文件是否存储在 SDK 中的某个位置?

不完全是。在您的 Jumpstart 示例中,您可以看到它使用 SDK 类来获取存储脚本的公共 S3 URI。该 URI 将被传递到模型上的

source_dir
属性。

Jumpstart 通过为您提供带有入口点脚本的预制、预托管源目录来简化事情。

如果是这样,有什么方法可以访问它们吗?

deploy_source_uri
将有一个公共 S3 位置,您可以在其中查看脚本,但无法更新它们。

Jumpstart 试图让事情变得简单,但这样做隐藏了一些细节。通常的工作方式是,您有一个本地源目录(例如,在您的笔记本实例中),其中包含您的入口点脚本、依赖项等。您将该本地路径传递给模型,然后 SDK 会在其中执行上传工作到S3。

© www.soinside.com 2019 - 2024. All rights reserved.