PyTorch Ignite
如果您尚未使用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
的图像。它们会出现在实验的 调试样本 中。