利用权阈的报告做调试的科学
引言
在隐空间方面,我们正建立第一个完全由人工智能渲染的三维引擎。为了实现该目标,我们这一支专注的研究人员与工程师团队,正开拓生成模型的前沿领域。
我们把权阈(Weights & Biases)作为传播成果和学问的方法,这样我们就能在别人成果的基础上进一步发展。对于我们这个团队来说,权阈报告的特征最为重要,因为在我们看来,报告就是展示成果的小型研究论文(有时候一批报告真的会成为一篇论文!)。尤其是,在我们的日常工作流程中,使用报告有助于快速找到问题并调试模型。
在本报告中,我们将展示如何利用权阈的报告来快速识别、沟通以及反复调试我们的模型。大家将看到两个指标,即定性指标和定量指标,我们在训练一个小小的生成模型时观察这两个指标,大家还将看到,其中一个运行是如何在这两个指标上不同于基准的。在报告结尾大家将看到,除了报告之外,我们如何利用权阈的日志功能诊断、调试我们的模型,以及传播结果。
故障:训练起初明显(迭代100次)
本报告由两组运行组成,一个基准(蓝色)和一个试验(红色)。我们在试验中改进了一个模块,该模块本不应该影响训练质量,事实上,我们在开始前就知道,试验和基准应该是同等的。然而,我们很快就发觉训练动力学发生了变化——好像是个故障!🐛
当监视其中一个正则项时,这一点很明显。如图1所示,问题很明显,因为试验运行比基准大一个数量级。
在图2中,与基准比起来,试验运行看起来更饱和。这非常可疑。
调试
故障@2000次迭代(表现出更长的运行时间)
看起来这里很可能出了问题。
为了看到更直观的结果,我们的运行时间更长了一点。定量指标和前面表现一样,但在这个问题上,定性指标给出了更高的分辨率。
This technique shows Multi-Scale Gradients 1 which replaces progressive growing . 该方法显示出多尺度梯度1取代了渐进增长2。
如图4所示,基准类别在每个层上都有差异,但通过一些训练后,从最低分辨率渐渐变化到最高分辨率。
而在试验运行组,差异自始至终保持在最低层上,所以我们无法了解高层特征,只能了解低层特征(主要是红绿蓝RGB)。
大家可以自己试一下,调节进度滑块,并观察从迭代0次到2000次激活发生的变化。
结论
修复后@迭代2000次(表现出更长时间的运行)
然后我们运行修复后的试验,并与基准比较。大家可以看到基准与试验两组运行在定性和定量指标上有完全一样的轨迹表现。🎉
通过使用权阈报告,我们有了快速的反馈回路并能准确地看到/分享问题之所在,从而能够立即锁定故障并在几分钟内得到修复!不是所有故障都能这么快锁定,这就是为什么我们积极记录大量定性、定量指标,目的就是尽力捕捉培训体系中的任何新表现。
权阈(Weights & Biases)是个很好的平台,让我们可以作为一个团队分享我们的工作成果,这是深度学习领域开发和研究的空间,在这个快速发展、特别详尽的空间中,我们可以在别人知识成果的基础上向前发展。