跳到主要内容

PyTorch Ignite

提示

如果您尚未使用 ClearML,请参阅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) 选项卡中查看保存的模型快照。

Model snapshots Model snapshots

标量

在任务的标量 (SCALARS) 选项卡中查看标量。

Scalars Scalars

调试样本

ClearML 自动跟踪记录到 TensorboardLogger 的图像。它们显示在任务的调试样本 (DEBUG SAMPLES) 中。

Debug Samples Debug Samples