加速
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)
你也可以通过向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_
名称前缀将导致标量记录在相应的eval
、test
或train
标题下,名称的其余部分将记录为系列。如果没有使用这些前缀,则整个字符串将用作系列,标题将默认为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_
名称前缀将导致图像记录在相应的eval
、test
或train
标题下,名称的其余部分将记录为系列。如果未使用这些前缀,则整个字符串将用作系列,标题将默认为train
。名称-图像对中的图像应该是numpy数组或PIL.Image
对象。
clearml_tracker.log_images(values={"test_cat_siamese":[image_obect]})
图像将在实验的调试样本中显示
记录图表
要记录图表,请使用ClearMLTracker.log_table()
。在dataframe
或data
参数下指定数据。在columns
下列出列名,否则将使用data
中的第一个条目作为列名。
图表将显示在实验的图表标签中。
额外的日志选项
为了增强其自动日志记录功能,ClearML 还提供了一个显式的日志记录接口。
查看有关显式记录信息到ClearML任务的更多信息:
- 模型
- 配置 (例如 参数, 配置文件)
- Artifacts(例如,由任务创建的输出文件或Python对象)
- 标量
- 文本/图表/调试样本
参见 显式报告教程。
关闭任务
训练完成后,请确保运行Accelerator.end_training()
,以便ClearML可以将任务标记为已完成。
accelerator.end_training()