作者 Victor Sonck,ClearML 开发者推广人
ClearML 现已正式集成到 NVIDIA TAO Toolkit 🎉。
对于那些还不知道的人,NVIDIA TAO Toolkit 构建于 TensorFlow 和 PyTorch 之上,是 NVIDIA TAO 框架的低代码版本,通过抽象 AI/深度学习框架的复杂性来加速模型训练过程。TAO Toolkit 让您能够利用迁移学习的力量,使用您自己的数据对 NVIDIA 预训练模型进行微调,并优化推理——无需 AI 专业知识或大量训练数据集。点击此处前往他们的文档以开始使用!
现在,加入 ClearML 后,您可以使用我们的开源实验管理器更深入地了解训练过程。它实时跟踪传入的指标、模型文件、图表和调试图像,因此您可以随时查看训练任务的进展情况。一旦 ClearML 捕获了所有信息,就可以非常轻松地比较多个不同的实验,以查看哪些参数组合表现更好。
在这篇博文中,我将引导您完成设置 NVIDIA TAO 以使用 ClearML 的过程,并向您展示 ClearML 中的结果是什么样的。系好安全带!
安装 NVIDIA TAO Toolkit
您可以在此处找到有关如何使用 TAO Toolkit 的所有可用信息,但为了让我们入门,我们将在本博文中使用快速入门笔记本。
在快速入门页面上,点击右上角的“下载”以获取相关材料。
您将收到一个 zip 文件,其中包含一些示例笔记本,以向您展示如何使用 TAO Toolkit。在这篇博文中,我们将重点介绍 TAO Launcher,并具体运行位于 notebooks/tao_launcher_starter_kit/detectnet_v2
下的笔记本。
在此示例中,detectnet_v2
笔记本是一个控制平面,我们可以从中配置和运行 NVIDIA TAO Launcher。根据笔记本中指定的配置,launcher 会知道何时做什么,这种格式使我们更容易跟踪各项内容。
仔细阅读笔记本中的说明,有时您可能需要根据您自己的系统编辑一些参数,例如文件夹路径。
总的来说,这个笔记本将引导您完成 TAO Launcher 安装、数据集和预训练模型准备、模型训练、模型优化和模型导出。内容真不少!
启用 ClearML
现已集成的 ClearML 实验管理器在模型训练期间当然最有用,因此这就是我们在这篇博文中将重点介绍的内容。
ClearML 服务器
在训练期间,TAO 将生成许多有用的输出,例如性能指标、控制台日志、图表和调试图像。更不用说我们宝贵的训练模型了!
所有这些输出在训练期间都会发送到 ClearML 服务器。ClearML 是开源的,因此如果您愿意,可以在本地部署自己的服务器,或者您可以使用 app.clear.ml 上的免费托管版本。
在此处注册以获得免费托管服务器。
现在,TAO 需要一些凭据信息才能被允许连接到服务器
获取和初始化凭据
创建凭据非常简单,您可以在此处找到详细说明,但为了节省您的点击,以下是最重要的说明
在浏览器中打开 ClearML Web UI(托管版本是 app.clear.ml)。在 SETTINGS > WORKSPACE 页面上,点击“创建新凭据”。然后点击“Jupyter Notebook”标签页以获取正确格式的凭据。将鼠标悬停在黑色区域上即可复制所有内容。
现在我们回到 detectnet_v2
笔记本,并将这些凭据添加到正确的单元格中。在 0.
部分下,您会找到一个名为 A. Third Party MLOPS integration
的小节。取消注释 ClearML 单元格,然后将您的新凭据粘贴到该单元格中。不用担心格式问题,os.environ
和复制的 %env
效果相同。该单元格应如下所示
或者这样也可以
设置完成后,您就可以开始了!按照笔记本中的其余说明准备数据并开始训练。
训练配置
如果您现在继续训练流程,您应该会在控制台(在 Tensorflow 日志之间)和 webUI 中看到新创建的 ClearML 任务弹出。所有设置都有相当合理的默认值,但在许多情况下,您可能希望更改一些设置。
上传模型
默认情况下,ClearML 只跟踪模型名称,它不会实际上传模型。当您在本地训练时,这是节省带宽的绝佳方式,但当然在某些情况下您确实希望上传模型。
要执行此操作,请回到笔记本中的 ClearML 单元格并添加以下行
%env CLEARML_DEFAULT_OUTPUT_URI=https://files.clear.ml
这将告诉 ClearML 将捕获到的所有模型直接上传到托管服务器。如果您托管自己的服务器,则应将 URL 调整为您自己的文件端点。
您还可以将 ClearML 配置为将模型存储在 S3 等云存储桶中。这是一个更高级的功能,超出了本博文的范围,但您可以在此处找到有关如何执行此操作的更多信息。
任务配置
在浏览笔记本时,您会看到模型训练使用了一个特定的配置文件。
在这个配置文件中,您会找到很多可以尝试的选项,但我们感兴趣的特定部分位于 training_config > visualizer > clearml_config
下。在这里,您可以为 ClearML Task 设置自定义的项目名称、任务名称和标签。
clearml_config{
project: "TAO Toolkit ClearML Demo"
task: "detectnet_v2_resnet18_clearml"
tags: "detectnet_v2"
tags: "training"
tags: "resnet18"
tags: "unpruned"
}
可视化器配置
在 training_config > visualizer
下,您还会找到频率设置,这些设置告诉 TAO 何时记录多少张可视化图像。将日志记录频率设置为低于默认值 50 的值,将更频繁地向 ClearML 报告图像。
分析结果
实验管理 UI
运行笔记本后,您会看到我们现在有 2 个 ClearML 任务,一个用于正常模型训练,一个用于剪枝模型训练。
在配置下,您会找到训练时使用的配置文件以及其他几个参数。
在 artifacts 标签页中,您会找到用于微调的输入模型和输出模型,其中输出模型是最有趣的文件。
当然,您在这里还会找到可用于调试的一般信息和控制台日志。
scalars 标签页将向您显示 TAO 捕获的不同指标并绘制它们。在左侧,您可以选择隐藏或显示单个 scalar。
plots 部分包含一系列随时间变化的 beta、gamma 和权重分布的三维直方图图表。
最后,还有调试样本可以直观地向您展示进展情况!
比较
最后,您可以使用 webUI 轻松比较多个不同的实验。只需选择 2 个或更多实验,然后点击底部功能区中的“比较”。现在,您可以浏览它们之间的差异,了解参数更改对最终指标有何影响。
结论和后续步骤
如您所见,将 ClearML 集成到 NVIDIA TAO Toolkit 中非常容易。您可以更深入地了解您的训练过程,并允许您更深入、更快地分析您的模型。
结合 TAO Toolkit 这个开箱即用的强大工具,现在没有什么能阻止您创建出色的机器学习模型了!
示例笔记本将允许您训练一个初始的大型模型,然后对其进行剪枝,然后再次重新训练以弥补由于剪枝而损失的性能。ClearML 将捕获两次训练运行。
除了训练之外,该笔记本还允许您将模型导出为可使用 NVIDIA Triton 推理服务器部署的格式。ClearML Serving 基于 NVIDIA Triton 并通过更多 MLOps、面向生产的功能对其进行了扩展。一个好的后续步骤是使用此笔记本中训练的模型,并使用由 NVIDIA Triton 提供支持的 ClearML Serving 进行部署。
您可以在我们的 YouTube 频道此处找到更多关于 ClearML 的深入教程,如果需要任何帮助,我们还有一个非常活跃的 Slack 频道。