SwanLab
SwanLab copied to clipboard
[ADVICE] 好是好,但是我觉得wandb有个最关键的功能是支持调参(sweep),swanlab似乎还没有这个功能
🤪 Features description [Please make everyone to understand it]
我想要用swanlab替代wandb,但是我发现替代不了,因为没有我最需要的sweep功能。
👍 What problem does this feature solve
增加一个接口 swanlab sweep,读取某种配置文件或者python文件(我觉得python文件最好,有dataclass可以限定强类型,参考meta的hydra库里面的 structured config ),然后根据文件指定的超参数分布信息来调参
👾 What does the proposed API look like
类似wandb的sweep 但是我认为我们可以做得更好,我们是开源的,wandb是封闭的无法修改的调参算法,只支持少量的受限的算法。 我觉得既然swanlab主打开源,应该接入optuna、ray tune、hebo、nevergrad、geatpy等开源的调参库,这些库算法很丰富,如果接入成功,我们就可以超过wandb。
wandb有个比较有趣的设计是,一开始不自动调参可以先人工跑实验,记录下运行效果;然后用户觉得要开始sweep了,wandb可以自动推荐一个sweep的配置,根据之前人工实验记录下来的参数。
🚑 Any additional [like screenshots]
可以参考 谷歌调参手册 https://github.com/schrodingercatss/tuning_playbook_zh_cn 里面的哲学来设计。
这本手册里面提到,调参是在探索与利用的平衡,我们有一个swanlab这样的记录机器学习参数和性能的软件,其实就是为了探索清楚这背后的自变量和因变量的关系,获得更多的实验insight。
这本手册指出了三类变量,固定超参(比如batch size应该根据硬件允许的范围设置最大,后续实验保持不变)、冗余超参(优化到最优)和自变量超参(实验研究的目标,比如选择我的方法还是其他人的方法,我自己的方法ablation study选择哪个参数)
你的建议非常好与珍贵!我们会积极采纳你的建议,在合适的时机推出我们的“swanlab sweep”。 也希望更多开发者能为我们贡献sweep这块的建议和指引,让更多人调参体验更好