Trains 应该如何与 Ray Tune 等超参数优化工具一起使用?

How should Trains be used with hyper-param optimization tools like RayTune?

什么是合理的设置?我可以在同一执行中多次调用 Task.init() 吗?

免责声明:我是 allegro.ai 培训团队的一员

一种解决方案是继承 trains.automation.optimization.SearchStrategy and extend the functionality. This is similar to the Optuna 集成,其中 Optuna 用于贝叶斯优化,而 Trains 执行 hyper-parameter 设置、启动实验和检索性能指标。

另一个选项(不可扩展但可能更容易开始)是使用 RayTuner 运行 你的代码(显然设置环境/git repo / docker 等在用户身上),让你的训练代码看起来像:

# create new experimnt
task = Task.init('hp optimization', 'ray-tuner experiment', reuse_last_task_id=False)
# store the hyperparams (assuming hparam is a dict) 
task.connect(hparam) 
# training loop here
# ...
# shutdown experimnt
task.close()

这意味着每次 RayTuner 执行脚本时,都会创建一个新的实验,使用一组新的超参数(假设 haparm 是一个字典,它将在实验中注册为 hyper-parameters)