我将在此教程之后进行跟踪,并想知道是否可以将脚本模式与超参数调优结合起来。如果我尝试这样做,HPT.fit()会一次又一次地运行我的脚本( main()函数,然后是_xgb_train()),但是我不知道如何将算法为我选择的超参数传递给train函数。有什么想法吗?
发布于 2022-07-27 22:55:53
不确定我是否完全解决了问题,如果您能够粘贴HPO设置所遵循的代码,这将是有帮助的。同时,您可以查看下面的示例,其中解释了如何设置超参数调优。虽然这不使用脚本模式,但是进程应该保持不变。
发布于 2022-07-28 08:25:57
是的,可以在超参数调优作业中使用脚本模式。教程使用SageMaker TensorFlow容器进行超参数优化提供了一个具体的示例,说明了它是如何工作的。
总的来说,这些步骤如下所示,我将引用本教程中的示例来澄清我的答案:
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,
},
)from sagemaker.tuner import ContinuousParameter, HyperparameterTuner
hyperparamter_range = {"learning-rate": ContinuousParameter(1e-4, 1e-3)}metric_definitions包含一个或多个正则表达式,SageMaker用于解析培训日志并提取要优化的度量:
objective_metric_name = "average test loss"
objective_type = "Minimize"
metric_definitions = [
{
"Name": "average test loss",
"Regex": "Test Loss: ([0-9\\.]+)",
}
]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)我链接到的教程提供了一个关于所有这些步骤是如何协同工作的可复制的示例。您可以定制它以满足您的需要。
https://stackoverflow.com/questions/73144411
复制相似问题