Skip to main content

任务

ClearML 任务 是 ClearML 实验管理器的核心。

任务是一个单一的代码执行会话,它可以代表一个实验、工作流程中的一个步骤、工作流程控制器,或者您选择的任何自定义实现。

要将现有脚本转换为ClearML任务,请调用Task.init()方法 并指定任务名称及其项目。这将创建一个任务对象,自动捕获代码执行信息以及执行输出。

任务捕获的所有信息默认上传到ClearML Server, 并且可以在ClearML WebApp (UI)中可视化。ClearML 还可以配置为上传 模型检查点、工件和图表到云存储(参见存储)。此外, 您可以在离线模式下处理任务,其中所有信息都保存在本地文件夹中(参见 离线存储任务数据)。

任务被分组到一个项目层次结构中,类似于文件文件夹。用户可以决定如何分组任务,尽管不同的模型或目标通常被分组到不同的项目中。

任务可以通过代码访问和利用。访问任务通过指定项目名称和任务名称的组合或通过唯一ID。

您可以创建任务的副本(克隆),然后使用 ClearML Agent 执行它们。当代理执行任务时,它会使用指定的配置来:

  • 安装所需的Python包
  • 应用代码补丁
  • 设置超参数和运行时配置值

修改任务克隆的配置将使执行的ClearML代理覆盖原始值:

  • 修改后的包要求将使实验脚本使用更新的包运行
  • 修改后的记录命令行参数将使ClearML代理注入新值以替代它们
  • 使用Task.connect进行代码级配置将被修改的超参数覆盖

任务

任务部分

ClearML任务的各个部分由任务捕获和存储的信息组成,这些信息包括代码执行细节和执行输出。这些信息用于跟踪和可视化结果、重现、调整和比较实验,以及执行工作流程。

捕获的代码执行信息包括:

  • Git 信息
  • Uncommitted code changes
  • Python 环境
  • 执行配置 和超参数

捕获的执行输出包括:

有关每个任务部分的更深入描述,请参见跟踪实验和可视化结果

执行配置

ClearML 记录任务作为命令行参数、环境或代码级别变量指定的超参数。这使得实验可以重现,并且它们的超参数和结果可以被保存和比较,这是理解模型行为的关键。

超参数可以从代码的任何地方添加,ClearML 提供了多种记录它们的方法。如果您使用流行的 Python 包(如 argparseclick)指定参数,您只需要 初始化 一个任务,ClearML 将自动记录这些参数。ClearML 还提供了显式报告参数的方法。

当通过ClearML代理执行任务时,您的代码的ClearML工具允许使用ClearML UI来覆盖您参数的原始指定值。

查看超参数以获取更多信息。

工件

ClearML 允许轻松存储实验的输出产品作为工件,这些工件以后可以通过 web UI 或以编程方式轻松访问和使用。

ClearML 提供了方法来轻松跟踪实验执行过程中生成的文件,例如:

  • Numpy 对象
  • Pandas 数据框
  • PIL
  • 文件和文件夹
  • Python 对象
  • 还有更多!

最重要的是,ClearML 还会记录实验的输入和输出模型以及中间模型快照(参见 Models)。

记录工件

ClearML 提供了一个明确的日志记录接口,支持手动报告各种工件。任何类型的工件都可以使用 Task.upload_artifact() 记录到任务中。更多详细信息请参见 工件报告示例

ClearML 可以配置为将工件上传到任何支持的存储类型,包括本地和共享文件夹、AWS S3 存储桶、Google 云存储和 Azure 存储。有关更多信息,请参阅 存储

Debug Sample Storage

调试样本的处理方式不同,请参见Logger.set_default_upload_destination

访问工件

已记录的工件可以通过其他任务通过任务访问它们所附加的工件,然后使用以下方法之一检索工件:

  • get_local_copy() - 缓存文件以供以后使用,并返回缓存文件的路径。
  • get() - 用于Python对象。返回Python对象的方法。

更多详情请参见使用Artifacts示例

任务类型

任务有一个类型属性,表示它们的用途。这有助于进一步组织项目并确保任务易于搜索和查找。可用的任务类型有:

  • 训练 (默认) - 训练模型
  • 测试 - 测试一个组件,例如模型性能
  • inference - 模型推理任务(例如离线/批量模型执行)
  • controller - 一个任务,用于布置其他任务交互的逻辑,无论是手动还是自动(例如管道控制器)
  • optimizer - 用于优化任务的特定类型控制器(例如 超参数优化
  • service - 长期或重复的服务(例如服务器清理、自动入口、同步服务等)
  • monitor - 一种特定类型的监控服务
  • application - 一个实现自定义应用逻辑的任务,如 autoscalerclearml-session
  • data_processing - 任何数据输入/预处理(参见 ClearML 数据
  • qc - 质量控制(例如,评估模型性能与盲数据集)
  • 自定义 - 一个不符合上述任何条件的任务

任务生命周期

ClearML 任务通过以下方法之一创建:

  • 手动运行使用ClearML SDK检测并调用Task.init的代码。
  • 克隆现有任务。
  • 通过CLI使用clearml-task创建任务。

记录任务信息

记录ClearML任务信息图

上图描述了在使用ClearML进行代码插桩时,如何记录执行信息:

  1. 一旦ClearML任务初始化,ClearML会自动记录完整的环境信息 包括:
    • Source Code
    • Python环境
    • Configuration Parameters
  2. 随着执行的进行,任何产生的输出都会被记录下来,包括:
    • Console Log
    • 指标和图表
    • 模型和其他工件
  3. 脚本一旦终止,任务的状态将更改为CompletedFailedAborted(请参阅下面的任务状态)。

所有记录的信息都可以在任务详情界面中查看。

克隆任务

ClearML任务生命周期图

上图展示了如何将先前运行的任务用作实验的基线:

  1. 先前运行的任务被克隆,创建一个新任务,处于Draft模式(见下面的任务状态)。
    新任务保留源任务的所有配置。原始任务的输出不会被继承。
  2. 新任务的配置被修改以反映新执行的所需参数。
  3. 新任务已加入队列等待执行。
  4. 一个clearml-agent服务队列拉取新任务并执行它(其中ClearML再次记录所有执行输出)。

任务状态

任务的状态代表了它在任务生命周期中的阶段。它指示任务是可读写(可编辑)还是只读。对于每个状态,状态转换指示可以在实验上执行哪些操作,以及执行操作后的新状态。

下表描述了任务状态和状态转换。

StateDescription / UsageState Transition
DraftThe experiment is editable. Only experiments in Draft mode are editable. The experiment is not running locally or remotely.If the experiment is enqueued for a worker to fetch and execute, the state becomes Pending.
PendingThe experiment was enqueued and is waiting in a queue for a worker to fetch and execute it.If the experiment is dequeued, the state becomes Draft.
RunningThe experiment is running locally or remotely.If the experiment is manually or programmatically terminated, the state becomes Aborted.
CompletedThe experiment ran and terminated successfully.If the experiment is reset or cloned, the state of the cloned experiment or newly cloned experiment becomes Draft. Resetting deletes the logs and output of a previous run. Cloning creates an exact, editable copy.
FailedThe experiment ran and terminated with an error.The same as Completed.
AbortedThe experiment ran, and was manually or programmatically terminated. The server's non-responsive task monitor aborts a task automatically after no activity has been detected for a specified time interval (configurable).The same as Completed.
PublishedThe experiment is read-only. Publish an experiment to prevent changes to its inputs and outputs.A Published experiment cannot be reset. If it is cloned, the state of the newly cloned experiment becomes Draft.

SDK 接口

请参阅任务SDK接口以了解如何使用Task类的最基本Python方法。 请参阅任务参考页面以获取可用方法的完整列表。