监控

DeepSpeed 的监控模块可以将训练详情记录到兼容 Tensorboard 的文件、WandB 或简单的 CSV 文件中。以下是 DeepSpeed 将自动记录的数据概述。

自动记录数据

字段

描述

条件

Train/Samples/train_loss

训练损失。

Train/Samples/lr

训练期间的学习率。

Train/Samples/loss_scale

使用 fp16 训练时的损失缩放。

必须启用 fp16

Train/Eigenvalues/ModelBlockParam_{i}

每个参数块的特征值。

必须启用 eigenvalue

Train/Samples/elapsed_time_ms_forward

前向传播的全局持续时间。

flops_profiler.enabledwall_clock_breakdown

Train/Samples/elapsed_time_ms_backward

前向传播的全局持续时间。

flops_profiler.enabledwall_clock_breakdown

Train/Samples/elapsed_time_ms_backward_inner

不包括梯度归约时间的后向时间。仅在梯度归约未重叠的情况下,如果重叠,则内部时间应与整个后向时间大致相同。

flops_profiler.enabledwall_clock_breakdown

Train/Samples/elapsed_time_ms_backward_allreduce

Allreduce 操作的全局持续时间。

flops_profiler.enabledwall_clock_breakdown

Train/Samples/elapsed_time_ms_step

优化器步进时间。

flops_profiler.enabledwall_clock_breakdown

TensorBoard

class deepspeed.monitor.config.TensorBoardConfig[source]

设置 TensorBoard 监控器的参数。

enabled: bool = False

是否启用 Tensorboard 日志记录。需要安装 tensorboard 包。

output_path: str = ''

Tensorboard 日志的写入路径。如果未提供,输出路径将设置在训练脚本的启动路径下。

job_name: str ='DeepSpeedJobName'

当前作业的名称。这将在 output_path 内创建一个新目录。

WandB

class deepspeed.monitor.config.WandbConfig[source]

设置 WandB 监控器的参数。

enabled: bool = False

是否启用 WandB 日志记录。需要安装 wandb 包。

group: Optional[str] = None

WandB 组的名称。可用于将多个运行分组。

team: Optional[str] = None

WandB 团队的名称。

project: str = 'deepspeed'

WandB 项目的名称。

Comet

class deepspeed.monitor.config.CometConfig[source]

设置 Comet 监控器的参数。Comet 使用实验对象来记录数据。https://www.comet.com/docs/v2/api-and-sdk/python-sdk/reference/Experiment/

enabled: bool = False

是否启用 Comet 日志记录。需要安装 comet_ml 包。

samples_log_interval: int = 100

指标将在每处理 samples_log_interval 个样本后提交到 Comet。

project: Optional[str] = None

Comet 项目名称。可通过 .comet.config 文件或环境变量 COMET_PROJECT_NAME 设置。https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options

workspace: Optional[str] = None

Comet 工作区名称。可通过 .comet.config 文件或环境变量 COMET_WORKSPACE 设置。https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options

api_key: Optional[str] = None

Comet API 密钥。可通过 .comet.config 文件或环境变量 COMET_API_KEY 设置。https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options

experiment_name: Optional[str] = None

用于日志记录的 Comet 实验名称。可通过 .comet.config 文件或环境变量 COMET_EXPERIMENT_NAME 设置。https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options

experiment_key: Optional[str] = None

用于日志记录的 Comet 实验密钥。必须是长度在 32 到 50 个字符之间的字母数字字符串。可通过 .comet.config 文件或环境变量 COMET_EXPERIMENT_KEY 设置。https://www.comet.com/docs/v2/guides/experiment-management/configure-sdk/#explore-comet-configuration-options

online: Optional[bool] = None

如果为 True,数据将记录到 Comet 服务器,否则将本地存储在离线实验中。默认为 True。

mode: Optional[str] = None
控制 Comet 实验的启动方式,有 3 种选项:
  • “get”:继续记录到由 experiment_key 值标识的现有实验。

  • “create”:总是创建一个新实验,适用于 HPO 扫描。

  • “get_or_create”(默认):如果需要,启动一个新的实验,或者继续记录到现有实验。

CSV 监控器

class deepspeed.monitor.config.CSVConfig[source]

设置 CSV 监控器的参数。

enabled: bool = False

是否启用本地 CSV 文件日志记录。

output_path: str = ''

CSV 文件的写入路径。如果未提供,输出路径将设置在训练脚本的启动路径下。

job_name: str = 'DeepSpeedJobName'

当前作业的名称。这将在 output_path 内创建一个新目录。