TensorBoard可视化训练监控
MindSpore Transformers 支持 TensorBoard 作为可视化工具,用于监控和分析训练过程中的各种指标和信息。TensorBoard 是一个独立的可视化库,需要用户手动安装,它提供了一种交互式的方式来查看训练中的损失、精度、学习率、梯度分布等多种内容。用户在训练yaml
文件中配置 TensorBoard 后,在大模型训练过程中会实时生成并更新事件文件,通过 tensorboard --logdir=/path/to/events.*
命令查看训练数据。
配置说明
在训练yaml
文件中进行如下配置,训练结束后会在配置的保存地址中保存事件文件:
yaml
文件配置样例
seed: 0
output_dir: './output'
tensorboard:
tensorboard_dir: 'worker/tensorboard'
tensorboard_queue_size: 10
log_loss_scale_to_tensorboard: True
log_timers_to_tensorboard: True
参数名称 |
说明 |
类型 |
---|---|---|
tensorboard.tensorboard_dir |
设置 TensorBoard 事件文件的保存路径 |
str |
tensorboard.tensorboard_queue_size |
设置采集队列的最大缓存值,超过该值便会写入事件文件,默认值为10 |
int |
tensorboard.log_loss_scale_to_tensorboard |
设置是否将 loss scale 信息记录到事件文件,默认为 |
bool |
tensorboard.log_timers_to_tensorboard |
设置是否将计时器信息记录到事件文件,计时器信息包含当前训练步骤(或迭代)的时长以及吞吐量,默认为 |
bool |
查看训练数据
进行上述配置后,训练期间将会在路径 ./worker/tensorboard/rank_{id}
下保存每张卡的事件文件,其中 {id}
为实际的rank数。事件文件以 events.*
命名。文件中包含 scalars
和 text
数据,其中 scalars
为训练过程中关键指标的标量,如学习率、损失等; text
为训练任务所有配置的文本数据,如并行配置、数据集配置等。
使用以下命令可以启动 Tensorboard Web 可视化服务:
tensorboard --logdir=/path/to/events.* --host=0.0.0.0 --port=6006
参数名称 |
说明 |
---|---|
logdir |
TensorBoard保存事件文件的文件夹路径 |
host |
默认是 127.0.0.1,表示只允许本机访问;设置为 0.0.0.0 可以允许外部设备访问,请注意信息安全 |
port |
设置服务监听的端口,默认是 6006 |
输入样例中的命令后会显示:
TensorBoard 2.18.0 at http://0.0.0.0:6006/ (Press CTRL+C to quit)
其中 2.18.0
表示 TensorBoard 当前安装的版本号(推荐版本为 2.18.0
), 0.0.0.0
和 6006
分别对应输入的 --host
和 --port
,之后可以在本地PC的浏览器中访问 服务器公共ip:端口号
查看可视化页面,例如服务器的公共IP为 192.168.1.1
,则访问 192.168.1.1:6006
。
标量可视化说明
在 SCALARS 页面中,每个标量(假设名为 scalar_name
)都存在 scalar_name
和 scalar_name-vs-samples
两个下拉标签页。其中 scalar_name
下展示了该标量随训练迭代步数进行变化的折线图; scalar_name-vs-samples
下展示了该标量随样本数进行变化的折线图。如下图所示:
所有标量的名称和说明如下:
标量名 |
说明 |
---|---|
learning-rate |
学习率 |
batch-size |
批次大小 |
loss |
损失 |
loss-scale |
损失缩放因子,记录需要设置 |
grad-norm |
梯度范数 |
iteration-time |
训练迭代所需的时间,记录需要设置 |
through-put |
吞吐量,记录需要设置 |
文本数据可视化说明
在 TEXT 页面中,每个训练配置存在一个标签页,其中记录了该配置的值。如下图所示:
所有配置名和说明如下:
配置名 |
说明 |
---|---|
auto_trans_ckpt |
是否开启自动在线权重切分或转换 |
auto_tune |
是否开启自动数据加速 |
autotune_per_step |
设置自动数据加速的配置调整step间隔 |
callbacks |
回调函数配置 |
context |
环境配置 |
data_size |
数据集长度 |
device_num |
设备数量(卡数) |
do_eval |
是否开启边训练边评估 |
enable_mindio_ttp_save_ckpt |
是否开启临终遗言和UCE故障快恢功能 |
eval_callbacks |
评估回调函数配置 |
exclude_cann_cpu |
不使用CPU |
filepath_prefix |
文件地址前缀 |
infer_precision_sync |
是否开启推理精度同步 |
init_start_profile |
是否在Profiler初始化的时候开启数据采集 |
layer_decay |
层衰减系数 |
layer_scale |
是否启用层衰减 |
load_checkpoint |
加载权重的模型名或权重路径 |
load_ckpt_format |
加载权重的文件格式 |
local_rank |
当前rank |
lr_scale_factor |
学习率缩放系数 |
lr_schedule |
学习率 |
metric |
评估函数 |
micro_batch_interleave_num |
batch_size的拆分份数,多副本并行开关 |
model |
模型配置 |
moe_config |
混合专家配置 |
only_save_strategy |
任务是否仅保存分布式策略文件 |
optimizer |
优化器 |
output_dir |
保存checkpoint、strategy的路径 |
parallel_config |
并行策略配置 |
parallel |
自动并行配置 |
postprocess_use_numpy |
是否在后处理时使用 NumPy |
processor |
推理时的数据处理 |
profile_communication |
是否在多设备训练中收集通信性能数据 |
profile_memory |
是否收集Tensor内存数据 |
profile_start_step |
性能分析开始的step |
profile_stop_step |
性能分析结束的step |
profile |
是否开启性能分析工具 |
rank_id |
当前rank |
recompute_config |
重计算配置 |
remote_save_url |
使用AICC训练作业时,目标桶的回传文件夹路径 |
remove_redundancy |
checkpoint保存时是否去除冗余 |
resume_training |
为True时会加载训练过程信息 |
run_mode |
运行模式 |
runner_config |
运行配置 |
seed |
随机种子 |
src_strategy_path_or_dir |
源权重分布式策略文件路径 |
tensorboard |
TensorBoard配置 |
train_dataset_task |
训练任务配置 |
train_dataset |
训练数据集配置 |
train_percision_sync |
是否开启训练精度同步 |
trainer |
训练流程配置 |
use_gracefule_exit |
是否启用优雅退出机制 |
use_parallel |
是否开启并行 |
上述训练配置来源于:
用户在训练启动命令
run_mindformer.py
中传入的配置参数;用户在训练配置文件
yaml
中设置的配置参数;训练默认的配置参数。
可配置的所有参数请参考配置文件说明。