MLOps简介:机器学习的实验跟踪

MLOps简介:机器学习的实验跟踪

这篇文章最初于2022年12月16日发表在Weights & Biases的博客“Fully Connected”上。

想象一下,你正在尝试开发一种最好的巧克力饼干的食谱。第一次尝试后,你可能会增加面粉的量。有一次,你可能会加更多的巧克力片。下次你可以试着加点核桃。最后,你可能尝试了十几种食谱,但哪一种是最好的呢?

我相信你也同意在这个过程中做笔记是个好主意。你应该写下每道菜的配料,以及做出来的饼干味道如何。

作者使用DALLE2创建的图像,提示“在实验室进行化学实验的疯狂猫科学家的油画,非常详细。”

这种方法也适用于开发机器学习(ML)模型。开发一个ML模型需要进行多次实验,因为输入中的微小变化,比如成分,会对结果产生巨大影响(比如饼干的味道)。因此,跟踪你的实验是一个好主意,以避免忽视哪些是有效的,哪些是无效的。

本文讨论:

  1. 什么是机器学习中的实验跟踪?
  2. 为什么你需要跟踪你的ML实验?
  3. 如何跟踪ML实验?
  • 手动实验跟踪
  • 没有实验跟踪工具的自动化实验跟踪
  • 自动实验跟踪与实验跟踪工具

如果你想了解更多关于数据科学的相关内容,可以阅读以下这些文章:
打好数据科学和机器学习的基础——6本书带你学数学
数据科学面试中的机器学习问题类型以及如何准备这些问题?
Google Sheets引入简易ML(机器学习)
七个实用的Python机器学习库

什么是机器学习中的实验跟踪?

在机器学习工作流程中,实验跟踪是为每个实验保存相关元数据并组织实验的过程。在这种情况下,ML实验是一种测试假设的系统方法,其相关元数据包含实验的输入和输出。

例如:

  • 假设——如果我增加epochs的数量,验证准确性将会提高。
  • 输入——代码、数据集或超参数。
  • 输出——度量和模型。

ML模型的开发旨在根据你的约束条件找到有关指标、资源使用情况或推理时间的最佳模型。这个迭代的开发过程包括运行许多实验,分析并将其结果与其他实验进行比较,并尝试新的想法来开发性能最佳的配置。

为此,我们跟踪输入,例如:

  • 编码
  • 训练和验证数据(包括不同的特征和数据增强)
  • 模型结构和模型超参数

ML实验的输出,例如:

  • 评价标准
  • 和模型重量

为什么你需要跟踪你的ML实验?

由于输入的微小变化可能会导致完全不同的结果,因此你将运行许多实验来开发最佳ML模型。如果不记录输入和输出并组织实验,你可能很快就会忘记哪些是有效的,哪些是无效的。

因此,以一种有组织的方式跟踪你的ML实验可以在以下方面帮助你:

  • 概述:做了多少实验,做了什么实验?
  • 细节和可重复性:实验的细节是什么,我们如何重现结果?
  • 比较:哪些想法和变化导致了改进?

有了这些信息,你可以专注于新的方法和改进原型,而不是试图理解大量无组织的实验。

如何跟踪ML实验?

你可以在不同工具的帮助下手动或自动跟踪ML实验。你可以用纸和笔手动跟踪你的实验,也可以在文本文件或电子表格中进行数字记录。或者,你可以通过在代码中添加日志功能或使用现代实验跟踪工具来自动完成这项任务。

对于每种方法,我们将介绍如何设置该方法、记录输入和输出以及检索信息的三个步骤。

手动实验跟踪

假设你自己或在一个小团队中开发ML模型,并且只运行可管理数量的实验。在这种情况下,你可以轻松地用笔和纸、文本文件或电子表格轻松地手动跟踪你的实验。

这种方法很简单,而且是一种在开始时跟踪实验的好方法。

然而,它有相当多的缺点:首先,手动记录实验的所有相关元数据需要训练和时间。其次,在人工记录过程中出错是不可避免的。第三,如果你丢失了手动记录的实验笔记(类似于不使用版本控制而丢失了代码),你可能不得不重新运行许多(如果不是全部的话)你的实验。最后,除了这个乏味的任务被做成自动化之外,当你需要运行大量实验时,这种方法不能很好地扩展。

例如,让我们粗略地运行一下纸笔手工跟踪实验的工作流程。

1 设置

拿起一支笔和一个笔记本,一切准备就绪!

图片来自Andrew Neel,作者Unsplash

2 记录输入和输出

简而言之,你写下你为每个实验做了什么。这可以是一个简单的表格,你可以在其中写下模型的超参数和它们产生的模型的性能,也可以是每个实验的条目集合,其中包含更多细节,比如训练期间每个时期的指标。

3 信息检索

根据你在开发阶段做笔记的整洁程度,你可能很快就能找到信息,也可能不会很快找到信息。

如果你在文本文件或电子表格等数字工件中手动跟踪你的实验,你还可以搜索特定的术语或筛选和排序列。

没有实验跟踪工具的自动化实验跟踪

跟踪ML实验的一种流行方法是,通过在代码中加入日志功能,使记录所有可能重要的内容的繁琐工作自动化。

虽然这种方法比手动实验跟踪需要花更多的精力来设置,但这种方法易于实现,直截了当,并且从长远来看节省了你的时间,因为它不像手动实验跟踪那样容易出错(例如,在手动记录时出错,丢失笔记等)

例如,让我们通过编写代码将信息记录到电子表格来运行自动化实验跟踪的粗略工作流程。

1 设置

设置一个电子表格。有多种不同的方法可以向代码中添加日志功能。在这个例子中,我们将把电子表格读取到pandas DataFrame中,并为每个实验添加一个新行。

import pandas as pd
log_df = pd.read_csv('log.csv')

2 记录输入或输出

接下来,将所有相关的实验元数据记录到一个字典中。然后,你可以将实验的字典作为新行附加到pandas DataFrame中。最后,你可以将pandas DataFrame保存回电子表格。

# Setup a new run
experiment = {'Experiment ID': 1}

# Log inputs, such as hyperparameters
experiment['learning_rate'] = 1e-3

# Model development here
# ...

# Log outputs, such as metrics
experiment['val_acc'] = val_accuracy

# ...

# Save experiment details
log_df = log_df.append(experiment, ignore_index = True)
log_df.to_csv('log.csv', index = False)

你还可以自动将相关图保存到专用文件夹中。

3 信息检索

在你的电子表格中,你现在可以搜索、过滤和排序来自不同实验的结果。

无需实验跟踪工具的自动化实验跟踪:登录到电子表格(图片由作者提供)

自动实验跟踪与实验跟踪工具

最后,还有现代实验跟踪工具,它们是专门为跟踪、组织和比较实验而构建的解决方案。还有一些流行的选择,例如:

  • CometML
  • MLFlow
  • Neptune
  • TensorBoard, and
  • Weights and Biases

例如,让我们通过权重和偏差浏览一下自动实验跟踪的粗略工作流程。

你可以在我的Kaggle笔记本中找到相关代码,在我的W&B仪表板中找到实验。

1 设置

在Python中导入wandb库,并在代码开始时使用 wandb.init()初始化一次新的运行。

import wandb

# Setup a new run
wandb.init(project="MyProject")

2 记录输入和输出

为了能够区分输入和输出,它们以不同的方式记录下来。为了记录输入,请使用wandb.config对象来保存你的训练配置。要记录输出,可以调用wandb.log(dict)来记录指标、媒体或自定义对象的字典到一个步骤。

# Log inputs, such as hyperparameters
config = wandb.config
config.learning_rate = 1e-3

# Model development here
# ...

# Log outputs, such as metrics
wandb.log({'acc' : accuracy})

3 信息检索

你可以在W&B仪表板中获得概览,该仪表板是组织你的ML实验的中心位置,无论你在哪里训练模型(本地计算机、实验室集群、云中的竞价实例)。在这个仪表板中,你可以搜索、过滤、排序和分组来自不同实验的结果,甚至可以将所选的实验相互比较。

实验跟踪工具的自动实验跟踪:实验概述的W&B仪表板(图片由作者提供)

你还可以在这个仪表板中比较记录的值,如度量。

使用实验跟踪工具进行自动实验跟踪:用于比较不同运行的W&B仪表板(图片由作者提供)

此外,在W&B实验仪表板中,你可以看到实验的详细信息和元数据。

使用实验跟踪工具进行自动实验跟踪:W&B实验详细信息仪表板(图片由作者提供)

4 结论

无论你是使用笔和纸还是使用实验跟踪工具跟踪ML实验,在开发ML模型时,跟踪你的实验都可以为你节省大量时间和麻烦。

。。。在开发ML模型时,跟踪你的实验可以为你节省大量时间和麻烦。

我们已经讨论过跟踪你的输入(例如,代码、数据集或超参数)对于重现结果并了解哪些有效,哪些无效是非常重要的。保存输出(例如,指标和模型)同样重要,因为你需要根据约束条件(例如性能)比较结果以找到最佳模型。

此外,我们回顾了三种不同的ML实验跟踪方法:手动和自动(有和没有ML跟踪工具)

感谢阅读!你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Leonie Monigatti
翻译作者:马薏菲
美工编辑:过儿
校对审稿:Chuang
原文链接:https://medium.com/@iamleonie/intro-to-mlops-experiment-tracking-for-machine-learning-858e432bd133