作者 | 邱锡鹏
本文介绍一个复旦NLP实验室内部使用的调参利器fitlog,开源地址:
https://github.com/fastnlp/fitlog
figlog原本是作为fastNLP的一部分开发,后来分为一个单独项目。
这里有个简单的介绍:使用fitlog 辅助 fastNLP 进行科研
https://fastnlp.readthedocs.io/zh/latest/tutorials/extend_3_fitlog.html
但实际功能远远多于介绍里的功能,有兴趣的同学可以挖掘下。
下面是开发小组提供的简洁版说明。
1、Tabular显示实验结果,方便不同超参数之间的对比。以下一行是一次实验。
(1.1) 支持group操作,方便查看某种特定数据集或参数的性能 (1.2) 支持排序,谁是最强超参一目了然 (1.3) 支持column顺序、显示自定义,拯救强迫症
(1.4) 支持针对某条实验自定义备忘
(1.5) 支持前端加入别人的实验performance,再也不用一边看paper一边check是否已经超过sota结果。
(1.6) 支持计算平均值、标准差,还有比这个更实用的吗?
(1.7) 实验结果不理想?我们支持前端操作删除、隐藏记录 (1.8) 实在有分析需求,无法满足?我们支持导出excel、csv、txt、json等格式,总有一款适合你 (1.9) 还有什么比看到loss快速下降,evaluation快速上升更让人开心的事?
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也不是十全十美的,对标其它的类似框架,我们为了轻量级,以下的东西目前没有支持: