Skip to main content

最佳实践

本节讨论了我们设计ClearML的原因以及它如何反映在AI工作流程中。 虽然ClearML被设计为适应任何工作流程,但下面描述的实践从组织工作流程到长期扩展准备带来了许多优势。

important

以下仅为个人观点。ClearML 旨在适应任何工作流程,无论其是否符合我们的方式!

本地开发

在一台易于管理的机器上工作!

在模型开发的早期阶段,当代码仍在大量修改时,这是我们期望数据科学家使用的常见设置:

  • 本地开发机器,通常是一台笔记本电脑(通常仅使用CPU),使用部分数据集以加快迭代速度。使用本地机器编写、训练和调试管道代码。
  • 带GPU的工作站,通常内存有限,适用于小批量训练。使用此工作站训练模型,并确保选择的模型合理且训练过程有效。可用于提供初始模型进行测试。

这些设置可以相互折叠,这太棒了!如果每个研究人员都有一台GPU机器,那就太棒了! 这个阶段的目标是获取代码、数据集和环境设置,这样你就可以开始挖掘以找到最佳模型!

  • ClearML SDK 应该集成到你的代码中(查看 入门指南)。 这有助于可视化结果和跟踪进度。
  • ClearML Agent 帮助您将工作转移到其他机器上,而无需每次重建环境的麻烦, 同时创建一个简单的队列界面,让您可以轻松地将实验放入队列中逐一执行 (非常适合确保GPU在周末期间持续工作)。
  • ClearML 会话 帮助在远程机器上进行开发,就像在本地笔记本电脑上开发一样!

远程训练

在这个阶段,您将扩大训练规模,并尝试找到最佳的代码/参数/数据组合,以生成最适合您任务的高性能模型!

  • 实际的训练(通常)不应该在你的开发机器上执行。
  • 培训课程应从网络用户界面启动和监控。
  • You should continue coding while the experiment is running, without interrupting them.
  • 停止因为机器性能不足而优化代码,转而在一台更强大的机器(云/本地)上运行它。

可视化和比较仪表板帮助您保持理智!在这个阶段,您通常已经拥有了一个包含所有所需二进制文件的docker容器。

  • ClearML SDK 确保所有指标、参数和模型都被自动记录,并且以后可以访问比较跟踪
  • ClearML Agent 负责繁重的工作。它重现执行环境,克隆你的代码,应用代码补丁,管理参数(包括即时覆盖它们),执行代码,并排队多个任务。它甚至可以构建 docker 容器!
  • ClearML Pipelines 确保步骤以相同的顺序运行,通过编程方式将任务链接在一起,同时提供执行管道状态的概览。

您的整个环境应该神奇地能够在任何机器上运行,而无需您费力。

跟踪一切

跟踪一切——从晦涩的参数到奇怪的指标,你永远不知道什么最终会改善你的结果!

  • 确保实验是可重复的!ClearML 将代码、参数和环境记录在一个易于搜索的地方。
  • 开发不是线性的。配置/参数不应存储在您的git中,因为它们是临时的并且不断变化。它们仍然需要被记录,因为谁知道呢,有一天...
  • 未提交的代码更改应存储以备日后分析,以防那个神奇的数字真的拯救了局面。并非每一行更改都应提交。
  • 标记潜在的良好实验,使其成为新的比较基准。

可见性很重要

虽然你可以用一个工具跟踪实验,用另一个工具进行管道处理,但将所有内容放在同一个平台下有其好处!

能够跟踪实验进度并比较实验,并在此基础上将实验发送到远程机器上执行(这些机器也会自行构建环境),在可见性和集成便利性方面具有巨大的优势。

能够在您的管道中拥有可见性,同时使用平台上已定义的实验, 使用户能够更清晰地了解管道的状态, 并通过简化链式任务,使在流程早期开始使用管道变得更加容易。

使用管理实验的相同工具和API来管理数据集也降低了进入实验和数据溯源的障碍。