Skip to main content

加速

Hugging Face的Accelerate库简化了深度学习模型的训练和推理。ClearML是Accelerate中支持的一个跟踪器:它会自动记录实验环境信息,例如所需的包和未提交的更改,并支持报告标量、参数、调试样本和图表。

设置

要使用Accelerate的ClearML跟踪器,请确保clearml已在您的环境中安装并设置,并在实例化Accelerator时使用log_with参数:

from accelerate import Accelerator

accelerator = Accelerator(log_with="all") # For all available trackers in the environment
accelerator = Accelerator(log_with="clearml") # For the ClearML tracker only

在实验开始时添加 Accelerator.init_trackers()。在 project_name 参数中指定应保存 ClearML 任务的项目,并在 config 参数中添加要记录的任何实验超参数。

以下代码初始化了ClearML任务,它将捕获所有环境细节,例如所需的包和未提交的代码。记录的超级参数显示在实验的超级参数标签中:

hps = {"lr": 0.03, "num_epochs": 3, "seed": 42, "batch_size": 64, "image_size": 224}
accelerator.init_trackers(project_name="my_project", config=hps)
tip

你也可以通过向Accelerator.init_trackers()init_kwargs参数添加一个嵌套字典来传递参数给Task.init():使用"clearml"作为键,参数名称/参数值对的字典作为值。例如,以下代码为你的任务添加标签:

accelerator.init_trackers(
project_name="my_project",
configs=hp,
init_kwargs={"clearml": {"tags": ["tag_a", "tag_b"]}}
)

加速参数

日志记录

标量

要记录标量,请使用Accelerator.log()。在values下指定名称-值对的字典,并在step下指定步骤编号。

values字典中,每个名称-值对中的名称是一个字符串,表示标量的标题(指标)和系列(变体)。eval_test_train_名称前缀将导致标量记录在相应的evaltesttrain标题下,名称的其余部分将记录为系列。如果没有使用这些前缀,则整个字符串将用作系列,标题将默认为train

如果未指定step,则标量将作为单值标量报告。

accelerator.log(values={"accuracy": accuracy}, step=epoch)

标量显示在实验的标量标签中。

图像和表格绘图

要向您的实验添加图像或表格图,您可以分别使用ClearMLTracker.log_images()ClearMLTracker.log_table()

首先实例化ClearMLTracker。如果您已经在脚本中运行了Accelerator.init_trackers(),这意味着已经初始化了一个ClearML任务,因此通过跟踪器记录的任何内容都将记录到现有任务中。
否则,只需在run_name下指定实验名称以及任何要传递给Task.init()的关键字参数:

from accelerate.tracking import ClearMLTracker

clearml_tracker= ClearMLTracker(run_name="Example experiment")

记录图像

要记录图像,请使用ClearMLTracker.log_images()。在values下指定名称-图像对的字典,并在step下指定步骤编号。

values字典中,每个名称-图像对中的名称应该是一个字符串,表示图像的标题(指标)和系列(变体)。eval_test_train_名称前缀将导致图像记录在相应的evaltesttrain标题下,名称的其余部分将记录为系列。如果未使用这些前缀,则整个字符串将用作系列,标题将默认为train。名称-图像对中的图像应该是numpy数组或PIL.Image对象。

clearml_tracker.log_images(values={"test_cat_siamese":[image_obect]})

图像将在实验的调试样本中显示

记录图表

要记录图表,请使用ClearMLTracker.log_table()。在dataframedata参数下指定数据。在columns下列出列名,否则将使用data中的第一个条目作为列名。

图表将显示在实验的图表标签中。

额外的日志选项

为了增强其自动日志记录功能,ClearML 还提供了一个显式的日志记录接口。

查看有关显式记录信息到ClearML任务的更多信息:

参见 显式报告教程

关闭任务

训练完成后,请确保运行Accelerator.end_training(),以便ClearML可以将任务标记为已完成。

accelerator.end_training()