首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使SageMaker XGBoost超参数调优在脚本模式下工作

如何使SageMaker XGBoost超参数调优在脚本模式下工作
EN

Stack Overflow用户
提问于 2022-07-27 20:44:47
回答 2查看 116关注 0票数 0

我将在此教程之后进行跟踪,并想知道是否可以将脚本模式与超参数调优结合起来。如果我尝试这样做,HPT.fit()会一次又一次地运行我的脚本( main()函数,然后是_xgb_train()),但是我不知道如何将算法为我选择的超参数传递给train函数。有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-07-27 22:55:53

不确定我是否完全解决了问题,如果您能够粘贴HPO设置所遵循的代码,这将是有帮助的。同时,您可以查看下面的示例,其中解释了如何设置超参数调优。虽然这不使用脚本模式,但是进程应该保持不变。

sdk.ipynb

票数 0
EN

Stack Overflow用户

发布于 2022-07-28 08:25:57

是的,可以在超参数调优作业中使用脚本模式。教程使用SageMaker TensorFlow容器进行超参数优化提供了一个具体的示例,说明了它是如何工作的。

总的来说,这些步骤如下所示,我将引用本教程中的示例来澄清我的答案:

  1. 定义一个评估器并指向您的培训脚本(这就是使其成为脚本模式的原因)。
代码语言:javascript
复制
estimator = TensorFlow(
    entry_point="train.py",
    source_dir="code",  # directory of your training script
    role=role,
    framework_version="2.3.1",
    model_dir="/opt/ml/model",
    py_version="py37",
    instance_type="ml.m5.4xlarge",
    instance_count=1,
    volume_size=250,
    hyperparameters={
        "batch-size": 512,
        "epochs": 4,
    },
)
  1. 定义要优化的超参数的范围。
代码语言:javascript
复制
from sagemaker.tuner import ContinuousParameter, HyperparameterTuner

hyperparamter_range = {"learning-rate": ContinuousParameter(1e-4, 1e-3)}
  1. 设置优化目标度量名称、类型和度量定义。

metric_definitions包含一个或多个正则表达式,SageMaker用于解析培训日志并提取要优化的度量:

代码语言:javascript
复制
objective_metric_name = "average test loss"
objective_type = "Minimize"
metric_definitions = [
    {
        "Name": "average test loss",
        "Regex": "Test Loss: ([0-9\\.]+)",
    }
]
  1. 使用所有这些设置和运行调优作业:
代码语言:javascript
复制
tuner = HyperparameterTuner(
    est,
    objective_metric_name,
    hyperparamter_range,
    metric_definitions,
    max_jobs=3,
    max_parallel_jobs=3,
    objective_type=objective_type,
)

tuner.fit(inputs=channels)

我链接到的教程提供了一个关于所有这些步骤是如何协同工作的可复制的示例。您可以定制它以满足您的需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73144411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档