PyTorch Ignite
如果您尚未使用 ClearML,请参阅ClearML 安装说明。
PyTorch Ignite 是一个用于在 PyTorch 中训练和评估神经网络的库。您可以使用 Ignite 的内置日志记录器将 ClearML 集成到您的代码中:TensorboardLogger 和 ClearMLLogger。
TensorboardLogger
ClearML 与 TensorboardLogger 无缝集成,并自动捕获通过处理程序记录的所有信息:指标、参数、图像和梯度。
您只需在脚本中添加两行代码
from clearml import Task
task = Task.init(task_name="<task_name>", project_name="<project_name>")
这将创建一个ClearML 任务,用于捕获您的脚本信息,包括 Git 详情、未提交的代码、Python 环境、通过 TensorboardLogger
记录的所有信息等等。
在 ClearML 的WebApp 中任务页面上可视化所有捕获的信息。
请参阅代码示例此处。
ClearMLLogger
PyTorch Ignite 支持 ClearML Logger,用于在训练和验证期间记录指标、文本、模型/优化器参数、图表和模型检查点。
按以下步骤集成 ClearML
-
创建一个
ClearMLLogger
对象from ignite.contrib.handlers.clearml_logger import *
clearml_logger = ClearMLLogger(task_name="ignite", project_name="examples")这会在
examples
项目中创建一个名为ignite
的ClearML 任务,用于捕获您的脚本信息,包括 Git 详情、未提交的代码、Python 环境。您还可以将以下参数传递给
ClearMLLogger
对象task_type
– 任务类型(请参阅任务类型)。report_freq
– 直方图处理频率(每 X 次调用处理程序时处理直方图值)。影响GradsHistHandler
和WeightsHistHandler
(默认值:100)。histogram_update_freq_multiplier
– 直方图报告频率(报告前 X 个直方图,之后每 X 次报告一次)(默认值:10)。histogram_granularity
- 直方图采样粒度(默认值:50)。
-
将
ClearMLLogger
附加到输出处理程序以记录指标# Attach the logger to the trainer to log training loss
clearml_logger.attach_output_handler(
trainer,
event_name=Events.ITERATION_COMPLETED(every=100),
tag="training",
output_transform=lambda loss: {"batchloss": loss},
)
# Attach the logger to log loss and accuracy for both training and validation
for tag, evaluator in [("training metrics", train_evaluator), ("validation metrics", validation_evaluator)]:
clearml_logger.attach_output_handler(
evaluator,
event_name=Events.EPOCH_COMPLETED,
tag=tag,
metric_names=["loss", "accuracy"],
global_step_transform=global_step_from_engine(trainer),
) -
将
ClearMLLogger
对象附加到辅助处理程序以记录任务输出。Ignite 支持以下 ClearML 辅助处理程序- ClearMLSaver - 将输入快照保存为 ClearML 工件。
- GradsHistHandler 和 WeightsHistHandler - 分别将模型的梯度和权重记录为直方图。
- GradsScalarHandler 和 WeightsScalarHandler - 分别将梯度和权重记录为标量。
- OptimizerParamsHandler - 记录优化器参数
# Attach the logger to the trainer to log model's weights norm
clearml_logger.attach(
trainer, log_handler=WeightsScalarHandler(model), event_name=Events.ITERATION_COMPLETED(every=100)
)
# Attach the logger to the trainer to log model's weights as a histogram
clearml_logger.attach(trainer, log_handler=WeightsHistHandler(model), event_name=Events.EPOCH_COMPLETED(every=100))
# Attach the logger to the trainer to log model's gradients as scalars
clearml_logger.attach(
trainer, log_handler=GradsScalarHandler(model), event_name=Events.ITERATION_COMPLETED(every=100)
)
#Attach the logger to the trainer to log model's gradients as a histogram
clearml_logger.attach(trainer, log_handler=GradsHistHandler(model), event_name=Events.EPOCH_COMPLETED(every=100))
handler = Checkpoint(
{"model": model},
ClearMLSaver(),
n_saved=1,
score_function=lambda e: e.state.metrics["accuracy"],
score_name="val_acc",
filename_prefix="best",
global_step_transform=global_step_from_engine(trainer),
)
validation_evaluator.add_event_handler(Events.EPOCH_COMPLETED, handler)
# Attach the logger to the trainer to log optimizer's parameters, e.g. learning rate at each iteration
clearml_logger.attach(
trainer,
log_handler=OptimizerParamsHandler(optimizer),
event_name=Events.ITERATION_STARTED
)
在 ClearML 的WebApp 中任务页面上可视化所有捕获的信息。
有关更多信息,请参阅ignite 文档。
请参阅代码示例此处。
WebApp
ClearML 捕获的所有任务信息都可以在WebApp 中查看
模型
在工件 (ARTIFACTS) 选项卡中查看保存的模型快照。
标量
在任务的标量 (SCALARS) 选项卡中查看标量。
调试样本
ClearML 自动跟踪记录到 TensorboardLogger
的图像。它们显示在任务的调试样本 (DEBUG SAMPLES) 中。