SuperAPI AI 工具集

tensorboard

数据与分析

查看项目

更新于 10-21 16:20

技能介绍

TensorBoard 是用于机器学习训练过程可视化的工具包。

一、用途 当需要可视化损失、准确率等训练指标随时间的变化,用直方图和分布调试模型,对比多次实验运行,可视化模型计算图与架构,将嵌入投影到低维空间(t-SNE、PCA),跟踪超参数实验,分析性能并定位瓶颈,或在训练过程中可视化图像和文本时,可使用 TensorBoard。

二、安装 安装 TensorBoard: pip install tensorboard

PyTorch 集成: pip install torch torchvision tensorboard

TensorFlow 集成(已包含 TensorBoard): pip install tensorflow

启动 TensorBoard: tensorboard --logdir=runs 访问地址:http://localhost:6006

三、快速开始 PyTorch 示例: from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter('runs/experiment_1') for epoch in range(10): train_loss = train_epoch() val_acc = validate() writer.add_scalar('Loss/train', train_loss, epoch) writer.add_scalar('Accuracy/val', val_acc, epoch) writer.close() 启动:tensorboard --logdir=runs

TensorFlow/Keras 示例: import tensorflow as tf tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir='logs/fit', histogram_freq=1 ) model.fit( x_train, y_train, epochs=10, validation_data=(x_val, y_val), callbacks=[tensorboard_callback] ) 启动:tensorboard --logdir=logs

四、核心概念

  1. SummaryWriter(PyTorch):可创建默认目录 runs/CURRENT_DATETIME、自定义目录或带 comment 的目录;通过 add_scalar 记录数据,使用 flush 和 close 刷新与关闭。
  2. 记录标量:PyTorch 使用 writer.add_scalar 记录损失、准确率、学习率等;TensorFlow 使用 tf.summary.create_file_writer 与 tf.summary.scalar。
  3. 记录多个标量:PyTorch 使用 writer.add_scalars 将相关指标分组,如 Loss 下的 train、validation、test,或 Metrics 下的 accuracy、precision、recall、f1。
  4. 记录图像:PyTorch 使用 writer.add_image,可记录单张图像或用 make_grid 拼接的图像网格;TensorFlow 使用 tf.summary.image 并设置 max_outputs。
  5. 记录直方图:PyTorch 遍历 model.named_parameters() 用 writer.add_histogram 跟踪权重分布与梯度,也可跟踪激活值;TensorFlow 使用 tf.summary.histogram。
  6. 记录模型计算图:PyTorch 使用 writer.add_graph(model, dummy_input);TensorFlow/Keras 通过 TensorBoard 回调设置 write_graph=True 自动记录。

五、高级功能与集成示例 高级功能与集成示例的详细代码和参数表见 references/advanced-features.md 与 references/integration-examples.md,在相应步骤适用时阅读。

六、对比实验 多次运行:用不同配置运行训练脚本并指定不同 logdir,然后 tensorboard --logdir=runs 同时查看所有运行。在 TensorBoard 中所有运行会出现在同一仪表盘,可开关运行进行对比,用正则过滤运行名称,叠加图表比较指标。 组织实验:可采用层级目录,如 runs/baseline/run_1、runs/improved/run_1、runs/final/run_1,并通过 writer = SummaryWriter('runs/baseline/run_1') 记录。

七、最佳实践

  1. 使用描述性运行名称,例如结合时间戳与超参数:runs/resnet50_lr0.001_bs32_{timestamp},避免自动生成的名称。
  2. 分组相关指标,如 Loss/train、Loss/val、Accuracy/train、Accuracy/val,避免扁平命名空间。
  3. 定期记录但不过于频繁:每个 epoch 指标始终记录,batch 指标可每 100 个 batch 记录一次,避免日志文件过大。
  4. 完成后关闭 writer:可使用上下文管理器 with SummaryWriter('runs/exp1') as writer,或手动调用 writer.close()。
  5. 为训练和验证使用单独的 writer 与日志目录。

八、性能分析 TensorFlow Profiler:通过 TensorBoard 回调设置 profile_batch='10,20' 分析第 10 到 20 个 batch,在 TensorBoard 的 Profile 标签页查看 GPU 利用率、内核统计、内存使用和瓶颈。 PyTorch Profiler:使用 torch.profiler.profile,设置 activities 为 CPU 与 CUDA,on_trace_ready 使用 torch.profiler.tensorboard_trace_handler('./runs/profiler'),并设置 record_shapes=True、with_stack=True,在 Profile 标签页查看。

九、资源 文档:https://www.tensorflow.org/tensorboard PyTorch 集成:https://pytorch.org/docs/stable/tensorboard.html GitHub:https://github.com/tensorflow/tensorboard TensorBoard.dev:https://tensorboard.dev(公开分享实验) 另见:references/visualization.md、references/profiling.md、references/integrations.md。

十、代理操作流程 检查环境,确认硬件、框架与服务器版本、模型格式和预期负载;确定输入,从数据或用户处确认格式、标识符和参数,对影响结果的取值应询问而非猜测;先运行小规模版本,在扩展前先端到端服务或记录单个请求或运行;按上述说明和参考执行完整任务;验证结果,对照参考测量延迟、吞吐量和输出正确性,检查资源使用和成本;报告运行内容(版本、命令、参数)、已检查项和仍不确定项。

异常处理:服务器启动失败或 OOM 时,检查模型大小与内存、量化和并行设置;若说明中的函数、标志或端点在当前安装版本中缺失,查阅已安装版本自身的文档(help()、--help、官方文档)并适配,同时告知用户,绝不虚构 API;若必需输入、标识符或参数不明确,询问用户或在运行前明确说明假设。

完整性规则:绝不虚构结果、参数、标识符、引用或统计数据;无法运行或验证时应如实说明;不要公开暴露服务或凭据,配置云资源前确认成本;此处版本相关细节可能过时,应针对已安装版本对照官方文档确认;在涉及费用、占用共享 GPU 或云配额、触及个人或患者数据、或不可撤销的操作前先询问。