近日,复旦大学邱锡鹏教授在知乎上介绍了一个调参利器——fitlog,fitlog原本是作为fastNLP的一部分开发,后来分为一个单独项目。此外,他还分享了一篇使用fitlog 辅助 fastNLP 进行科研的文章。
关于fitlog的简洁版说明如下:
- Tabular显示实验结果,方便不同超参数之间的对比。以下一行是一次实验。
(1.1) 支持group操作,方便查看某种特定数据集或参数的性能
(1.4) 支持针对某条实验自定义备忘
(1.5) 支持前端加入别人的实验performance,再也不用一边看paper一边check是否已经超过sota结果。
(1.6) 支持计算平均值、标准差,还有比这个更实用的吗?
(1.7) 实验结果不理想?我们支持前端操作删除、隐藏记录
2、想要复现实验结果,超参就够了????No, No, No. 作为一线炼丹师,我们深知调参过程有些神来之笔,例如加入Layer normalization带来的神奇效果并不能很容易体现在超参数中,所以fitlog支持在后台为你自动git commit代码(我们借助git进行代码管理,但与开发者自己管理的git不冲突,是并行的),需要回退到某次实验的代码,直接前端点击,回退,搞定。exactly复原结果不是梦(是的,我们甚至可以帮你管理随机数种子,但pytorch等深度学习框架的本身的随机性无法解决)。
3、 茫茫的超参,哪个才是重要的?经过一夜的搜索,哪些参数搜索还不够?你可能需要这样的可视化。(每条线是一次实验,最左侧是dev上的性能)
4、fitlog是架构无关的,不管tensorflow还是pytorch都可以使用,不管是cv还是nlp也都支持。如果是NLP的任务,配合我们的fastNLP框架,只需要增加三五行代码便可以实现metric,loss的自动记录。
当然fitlog也不是十全十美的,对标其它的类似框架,我们为了轻量级,以下的东西目前没有支持:
- 不支持保存model输出的图片,但是支持查看训练过程中的文本输出。
- 不支持除了loss与metric以外的曲线的展示。
原文链接:
https://www.zhihu.com/question/384519338/answer/1181186086
《使用fitlog 辅助 fastNLP 进行科研》链接:
https://fastnlp.readthedocs.io/zh/latest/tutorials/extend_3_fitlog.html
fitlog开源地址:
https://github.com/fastnlp/fitlog