实验设置如下。每次运行我都使用相同的训练数据,并在相同的测试集中评估结果。我要比较一下F1的分数为不同运行之间的植物。我设置了一些以SGD为求解器的运行,并从0-0.99扫过动量值(当使用动量时,任何大于1.0的数值都会导致求解器发散)。我设置了10次运行,动量值从0到0.9,增量为0.1。
接下来,我执行了另一组10次运行,这次的动量值介于0.90和0.99之间,增量为1。在查看这些结果之后,我还在动量值为0.999和0.9999的情况下运行了一组实验。每次运行都使用不同的随机种子,并在《W&B》中获得“SGD Sweep”的标签。结果如图1所示。

图1:在左边的x轴上显示了作物的f1得分,y轴上显示了运行名称。在右手边显示了作为动量值的函数的植物f1得分。资料来源:蓝河科技
从图1中可以很清楚地看出,动量值越大,f1得分越高。0.9447的最佳值出现在动量值为0.999时,在动量值为0.9999时下降到0.9394。值如下表所示。

表1:每次运行显示为上表中的一行。最后一列是运行的动量设置。F1得分,精度和回忆2类(作物)显示。资料来源:蓝河科技
这些结果与亚当相比如何?为了测试这一点,我使用torch. optimal . adam运行了10次相同的运行,只使用默认参数。我用W&B中的"亚当跑"标签来识别这些跑。我还标记了每组SGD运行以进行比较。由于每次运行使用不同的随机种子,求解器每次初始化都不同,最后一个epoch的权重也不同。这在每次运行的测试集中会得到稍微不同的结果。为了比较它们,我需要衡量Adam和SGD运行值的传播。在W&B中用标签分组的箱形图很容易做到这一点。

图2:Adam和SGD的价值分布。亚当跑在图的左边用绿色表示。新加坡元运行显示为棕色(0.999),蓝绿色(0-0.99),蓝色(0.9999)和黄色(0.95)。资料来源:蓝河科技
结果如图2以图表形式显示,表2以表格形式显示。的完整的报告也可以在网上找到.你可以看到,我无法通过调整SGD的动量值来打败Adam。0.999的动量设置给出了非常具有可比性的结果,但Adam运行的方差更小,平均值也更高。所以亚当似乎是一个很好的选择解决我们的植物分割问题!

表2:运行表显示f1得分,优化器和势头值为每次运行。资料来源:蓝河科技
PyTorch可视化
通过PyTorch集成,W&B在每一层拾取渐变,让我们在训练期间检查网络。
W&B实验跟踪还可以使PyTorch模型在训练期间很容易可视化,因此您可以在中央仪表板上实时看到损失曲线。我们在团队会议中使用这些可视化工具来讨论最新的结果并分享更新。
当图像通过我们的PyTorch模型时,我们将预测无缝地记录到Weights & Biases以可视化模型训练的结果。在这里我们可以看到预测、基本事实和标签。这使得识别模型性能不符合我们期望的场景变得很容易。
在这里我们可以快速浏览真相,预测和两者之间的区别。我们给庄稼标上了绿色,给杂草标上了红色。如你所见,该模型在识别图像中的作物和杂草方面做得相当不错。
可再生的模型
可再现性和可追溯性是任何ML系统的关键特性,很难做到正确。当比较不同的网络架构和超参数时,输入数据需要相同,以使运行具有可比性。通常,ML团队中的个人实践者会保存YAML或JSON配置文件——要找到团队成员的运行情况,并费力地遍历他们的配置文件,以找出使用了什么训练集和超参数,这是非常痛苦的。我们都这样做过,我们都讨厌这样做。

基本事实,预测和两者之间的区别。庄稼用绿色表示,而杂草用红色表示。蓝河科技
W&B刚刚发布的一个新特性解决了这个问题。工件允许我们跟踪培训和评估运行的输入和输出。这对我们的重现性和可追溯性有很大帮助。通过检查W&B中运行的Artifacts部分,我可以知道使用了哪些数据集来训练模型,产生了哪些模型(来自多次运行),以及模型评估的结果。
一个典型的用例如下。数据暂存流程下载最新和最大的数据,并将其暂存到磁盘上进行训练和测试(每种数据都有单独的数据集)。这些数据集被指定为工件。训练运行将训练集工件作为输入,并将训练模型作为输出工件输出。评估过程将测试集工件作为输入,以及经过训练的模型工件,并输出可能包括一组指标或图像的评估。在W&B中形成了一个有向无环图(DAG)。这是很有帮助的,因为跟踪在生产中发布机器学习模型所涉及的工件是非常重要的。像这样的DAG很容易形成:

资料来源:蓝河科技
工件特性的一大优点是,您可以选择上传所有工件(数据集、模型、评估),或者您可以选择只上传对工件的引用。这是一个很好的特性,因为移动大量数据既费时又慢。对于数据集工件,我们只需在W&B中存储对这些工件的引用。这使我们能够保持对数据的控制(并避免长时间的传输),同时在机器学习中仍然获得可追溯性和重现性。
领先的ML团队
回顾我领导机器学习工程师团队的这些年,我发现了一些常见的挑战:
- 效率:在开发新模式时,我们需要迅速进行试验并分享结果。PyTorch使我们能够轻松快速地添加新特性,Weights & Biases给我们提供调试和改进模型所需的可视性。
- 灵活性:与我们的客户在田间工作,每一天都可以带来新的挑战。我们的团队需要能够跟上我们不断变化需求的工具,这就是为什么我们选择PyTorch作为其蓬勃发展的生态系统,而选择W&B作为轻量级、模块化集成的工具。
- 性能:在一天结束的时候,我们需要为我们的野外机器建立最精确和最快的模型。PyTorch使我们能够快速迭代,然后产品化模型并将其部署到现场。在与W&B的开发过程中,我们有充分的可见性和透明度,便于识别性能最好的模型。
我希望你喜欢这个简短的旅程,我的团队如何使用PyTorch和Weights and Biases实现下一代智能农业机器!
关于作者
Chris Padwick是蓝河技术计算机视觉和机器学习总监。公司是2017年被约翰迪尔公司以3.05亿美元收购.
告诉我们你的想法!