使用对象检测算法进行 SageMaker 托管 Spot 训练

2024-02-17

我正在尝试使用新的托管点训练功能从现有模型开始训练对象检测模型,创建估计器时使用的参数如下:

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):给定算法不支持大于 3600 的 MaxWaitTimeInSeconds。

如果我改变train_max_wait到 3600 我得到这个异常:

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

然而变化max_run_time到 3600 或更少对我来说不起作用,因为我预计这个模型需要几天的时间来训练(大数据集),事实上一个 epoch 需要一个多小时。

The 有关 Managed Spot Training 的 AWS 博客文章 https://aws.amazon.com/blogs/aws/managed-spot-training-save-up-to-90-on-your-amazon-sagemaker-training-jobs/比如说MaxWaitTimeInSeconds仅限 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,而不是控制台。

我真的很想尝试托管现场培训以节省一些钱,因为我即将进行很长的培训。但将超时限制为一小时并不适合我的用例。有什么建议么?

Update:如果我注释掉train_use_spot_instances and train_max_wait在常规按需实例上进行培训的选项 我的培训作业已成功创建。如果我随后尝试使用控制台克隆作业并在克隆上打开 Spot 实例,我会得到相同的 ValidationException。


我今天再次运行我的脚本,效果很好,不botocore.exceptions.ClientError例外情况。鉴于此问题同时影响了 Sagemaker 的 Python SDK 和控制台,我怀疑这可能是后端 API 的问题,而不是我的客户端代码的问题。

不管怎样,它现在正在发挥作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用对象检测算法进行 SageMaker 托管 Spot 训练 的相关文章

  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • pyspark 数据框中的自定义排序

    是否有推荐的方法在 pyspark 中实现分类数据的自定义排序 我理想地寻找 pandas 分类数据类型提供的功能 因此 给定一个数据集Speed列 可能的选项是 Super Fast Fast Medium Slow 我想实现适合上下文的
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 搜索多个字段

    我想我没有正确理解 django haystack 我有一个包含多个字段的数据模型 我希望搜索其中两个字段 class UserProfile models Model user models ForeignKey User unique
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • 推送到 ECR 存储库的图像达到最大数量后会发生什么

    根据Amazon ECR 服务限制 http docs aws amazon com AmazonECR latest userguide service limits html 每个存储库的最大图像数量为 1 000 超过此限制后 最旧的
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • 返回表示每组内最大值的索引的一系列数字位置

    考虑一下这个系列 np random seed 3 1415 s pd Series np random rand 100 pd MultiIndex from product list ABDCE list abcde One Two T
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud

随机推荐