【问题标题】:Sagemaker Hyperparameter Tuning Job MechanismSagemaker 超参数调优工作机制
【发布时间】:2022-08-19 22:42:46
【问题描述】:

有谁知道 AWS Sagemaker 中超参数调整工作背后的机制是什么?

具体来说,我正在尝试执行以下操作:

  1. 带上我自己的容器
  2. 最小化交叉熵损失(这将是调谐器的客观指标)

    我的问题是当我们在HyperParameterTuner 类中定义超参数时,它会被复制到/opt/ml/input/config/hyperparameters.json 中吗?

    如果是这样,是否应该调整训练图像以使其使用来自/opt/ml/input/config/hyperparameters.json 的超参数?

    编辑:我查看了 AWS 提供的一些示例 HPO 笔记本,它们似乎让我更加困惑。有时他们会使用argparser 传递HP。它是如何传递到训练代码中的?

    标签: amazon-sagemaker


    【解决方案1】:

    如果自带容器,可以考虑pip安装SageMaker Training Toolkit。这将允许您接收超参数作为训练脚本的命令行参数(使用argparser 处理)。这将使您无需自己阅读和解析/opt/ml/input/config/hyperparameters.json

    【讨论】:

    • 我对此感到非常困惑。对于普通的 Sagemaker-Training Job,超参数被写入/opt/ml/input/config/hyperparameters.json。但是对于这个 Tuning Jobs,我们有 staticdynamic 超参数。而且它们都没有写给/opt/ml/input/config/hyperparameters.json。该文件对我来说不存在..
    • 调优工作是一系列训练工作的引擎,所以最终它只是一个训练工作。确保您使用 SageMaker 培训工具包,它应该让您免于像这个 json 文件这样的低级细节(您将收到来自环境变量和命令行参数的输入,而不是)。
    • 感谢您的反馈!我会试试的。但是,当我在这里查看实现时:github.com/aws/sagemaker-training-toolkit/blob/master/src/… 我认为这无济于事。 read_hyperparameters() 试图完全打开这个 .json 文件。
    【解决方案2】:

    所以我终于想通了,而且一直都错了。

    文件/opt/ml/input/config/hyperparameters.json 在那里。与常规培训工作相比,它的内容略有不同。要调整的参数和静态参数都包含在那里。以及指标名称。

    所以这是结构,我希望它有所帮助:

    {
        '_tuning_objective_metric': 'your-metric', 
        'dynamic-param1': '0.3', 
        'dynamic-param2': '1',
        'static-param1': 'some-value', 
        'static-paramN': 'another-value'
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-10
      • 2021-02-11
      • 1970-01-01
      • 2020-05-21
      • 2020-01-20
      • 1970-01-01
      • 2020-09-30
      • 2021-06-08
      相关资源
      最近更新 更多