【问题标题】:SageMaker Managed Spot Training with Object Detection algorithmSageMaker 使用对象检测算法管理 Spot 训练
【发布时间】:2020-01-30 07:38:23
【问题描述】:

我正在尝试使用新的 Managed Spot Training 功能从现有模型开始训练对象检测模型,创建我的 Estimator 时使用的参数如下:

od_model = sagemaker.estimator.Estimator(get_image_uri(sagemaker.Session().boto_region_name, 'object-detection', repo_version="latest"),
                                         Config['role'],
                                         train_instance_count = 1,
                                         train_instance_type = 'ml.p3.16xlarge',
                                         train_volume_size = 50,
                                         train_max_run = (48 * 60 * 60),
                                         train_use_spot_instances = True,
                                         train_max_wait = (72 * 60 * 60),
                                         input_mode = 'File',
                                         checkpoint_s3_uri = Config['train_checkpoint_uri'],
                                         output_path = Config['s3_output_location'],
                                         sagemaker_session = sagemaker.Session()
                                         )

(上面对Config的引用是我用来提取/集中一些参数的配置数据结构)

当我运行上述程序时,我得到以下异常:

botocore.exceptions.ClientError:调用 CreateTrainingJob 操作时发生错误 (ValidationException):给定算法不支持 MaxWaitTimeInSeconds 高于 3600。

如果我将 train_max_wait 更改为 3600,我会得到这个异常:

botocore.exceptions.ClientError:调用 CreateTrainingJob 操作时发生错误 (ValidationException):MaxWaitTimeInSeconds 无效。它必须存在并且大于或等于 MaxRuntimeInSeconds

但是,将 max_run_time 更改为 3600 或更低对我来说不起作用,因为我预计这个模型需要几天的时间来训练(大型数据集),实际上单个 epoch 需要一个多小时。

AWS blog post on Managed Spot TrainingMaxWaitTimeInSeconds 被限制为 60 分钟:

对于不使用检查点的内置算法和 AWS Marketplace 算法,我们将最大训练时间强制为 60 分钟(MaxWaitTimeInSeconds 参数)。

之前,同一篇博文说:

内置算法:计算机视觉算法支持检查点(对象检测、语义分割和很快的图像分类)。

所以我不认为我的算法不支持检查点。事实上,该博客文章使用对象检测和 48 小时的最大运行时间。所以我不认为这是算法限制。

正如您在上面看到的,我为检查点设置了一个 S3 URL。 S3 存储桶确实存在,并且训练容器可以访问它(它与放置训练数据和模型输出的存储桶相同,并且在打开现场训练之前访问这些存储桶没有问题。

我的 boto 和 sagemaker 库是当前版本:

boto3 (1.9.239)
botocore (1.12.239)
sagemaker (1.42.3)

从阅读各种文档中可以看出,我已经正确设置了所有内容。我的用例几乎与上面链接的博客文章中描述的完全一样,但我使用的是 SageMaker Python SDK 而不是控制台。

我真的很想尝试 Managed Spot Training 以节省一些钱,因为我即将进行很长时间的训练。但是将超时限制为一个小时对我的用例来说是行不通的。有什么建议吗?

更新:如果我注释掉 train_use_spot_instancestrain_max_wait 选项以在常规按需实例上进行训练,我的训练作业将成功创建。如果我尝试使用控制台克隆作业并在克隆上打开 Spot 实例,我会得到相同的 ValidationException。

【问题讨论】:

    标签: python amazon-web-services object-detection amazon-sagemaker


    【解决方案1】:

    我今天再次运行我的脚本,它运行良好,没有botocore.exceptions.ClientError 异常。鉴于此问题同时影响了 Sagemaker 的 Python SDK 和控制台,我怀疑这可能是后端 API 的问题,而不是我的客户端代码。

    无论如何,它现在正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-22
      • 2019-09-20
      • 2020-06-18
      • 2020-06-17
      • 2019-03-12
      • 2018-12-07
      • 2014-06-22
      • 2018-12-28
      相关资源
      最近更新 更多