Hydra 用于深度学习实现管理
在深度学习实验中设置参数的痛点
- 参数没有结构,检查查看不方便
- 不同的模块,例如:loss,需要的参数不同,每次修改loss,连带着改参数;更好的方案是,只修改lossname,其他参数跟着上来就行
- 不同实验只需修改少量参数,但是需要**检查是否有参数在其他组的实验修改,费时;**更好的方案是,一些常用的模式固定下来,例如local_train,server_train等
学习Hydra
基础内容
一个基础的hello world程序,包含两个文件config.yaml 和 my_app.py,然后执行 python my_app.py
即可输出参数配置。
然后看一下参数组,就是我们经常遇到的场景,有多个模型,每个模型都有配置文件,怎么办?那就建立一个文件夹model/,文件夹下有多个模型的配置文件 model/m1.yaml model/m2.yaml,即可以了。
这里第一次没有输出内容,是因为没有默认的配置文件。可以在conf文件夹下,建立一个文件config.py。就像 ⬇️
扩展配置
- 我们可以设置一个默认参数yaml,然后再产生一份基于默认参数的修改或增加yaml。场景:对模型的调参数时,新实验不想直接改旧实验(或当前最优实验参数),那么可以建立一个dev_版本的yaml,用于调整参数。
- 上面的层级结构在python重展现时dict嵌套,例如对于参数host:
args['db']['host']='3370'
,有时我们希望直接拿到参数和参数值,不要经过'db'
这一层,直接args['db']='3370'
,可以用:- 注意里面的 here 是单下划线
配置实验
从上面两个图可以看出来,这个就和深度学习实验的续期很像了,这个文档下面还有一些关于如何调参的设置,就是一个参数多个值,然后跑多个实验。
有个以上两个座位基础,其实就是利用Hydra进行实验的配置了:
其他文档及应用场景:
场景:参数自动影响参数
- 例如,如果数据集A使用模型M,是5层;如果模型B使用模型M,是7层。
- 例如,如果重新训练=True,使用损失A;如果重新训练=False(即增量训练模式),使用损失B
文档:
场景:直接给python类的参数赋值 🎉
场景:根据需要输出日志文件名称
修改输出log文件名称和位置
场景:默认参数优先级更高
场景:类 argparser 改造成args.para
文章来源:https://www.toymoban.com/news/detail-404425.html
示例:
config/config.yaml
config/init.py
config/db/postgresql.yaml
config/db/mysql.yaml
main_conf.py文章来源地址https://www.toymoban.com/news/detail-404425.html
到了这里,关于Hydra 用于深度学习实验管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!