Skip to main content

PyTorch Ignite

tip

如果您尚未使用ClearML,请参阅入门指南以获取设置说明。

PyTorch Ignite 是一个用于在 PyTorch 中训练和评估神经网络的库。你可以使用 Ignite 内置的记录器将 ClearML 集成到你的代码中:TensorboardLoggerClearMLLogger

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:

  1. 创建一个 ClearMLLogger 对象:

    from ignite.contrib.handlers.clearml_logger import *

    clearml_logger = ClearMLLogger(task_name="ignite", project_name="examples")

    这将在examples项目中创建一个名为igniteClearML任务,该任务捕获您的脚本信息,包括Git详细信息、未提交的代码、python环境。

    你也可以向ClearMLLogger对象传递以下参数:

    • task_type – 实验的类型(参见任务类型)。
    • report_freq – 直方图处理频率(每X次调用处理程序时处理直方图值)。影响 GradsHistHandlerWeightsHistHandler(默认值:100)。
    • histogram_update_freq_multiplier – 直方图报告频率(首先报告前X个直方图,之后每X个报告报告一次)(默认值:10)。
    • histogram_granularity - 直方图采样粒度(默认值:50)。
  2. 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),
    )
  3. ClearMLLogger对象附加到辅助处理程序以记录实验输出。Ignite支持以下用于ClearML的辅助处理程序:

    • ClearMLSaver - 将输入的快照保存为ClearML工件。
    • GradsHistHandlerWeightsHistHandler - 分别记录模型的梯度和权重为直方图。
    • GradsScalarHandlerWeightsScalarHandler - 分别将梯度和权重记录为标量。
    • 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 的图像。它们会出现在实验的 调试样本 中。

调试示例