当前位置: 首页 > news >正文

模型训练监控:TensorBoard与Weights Biases (WB) 使用详解

文章目录

    • 一、核心工具对比
    • 二、TensorBoard 全流程实战
      • 2.1 安装与基础配置
      • 2.2 在PyTorch中的集成
      • 2.3 启动可视化服务
      • 2.4 高级功能
    • 三、Weights & Biases 深度集成
      • 3.1 安装与初始化
      • 3.2 基础监控实现
      • 3.3 控制台与云端看板
    • 四、高级功能
    • 五、机器翻译完整监控

在机器翻译等复杂模型训练过程中,实时监控训练动态、分析指标变化、记录超参数和实验配置至关重要。TensorBoard和Weights & Biases (W&B) 是当前最主流的训练监控工具。

一、核心工具对比

功能TensorBoardWeights & Biases
开发方GoogleOpenAI生态支持
部署方式本地/服务器云端+本地
实时性需手动刷新实时同步
超参数记录支持强支持(自动对比)
协作功能多用户项目管理
可视化定制中等高度灵活
资源监控需插件内置CPU/GPU监控
模型版本管理集成Artifacts

二、TensorBoard 全流程实战

2.1 安装与基础配置

pip install tensorboard

2.2 在PyTorch中的集成

from torch.utils.tensorboard import SummaryWriter
import torch# 初始化写入器(日志目录为./runs)
writer = SummaryWriter()# 训练循环示例
for epoch in range(100):loss = torch.randn(1).item() * 0.1 + 1/(epoch+1)  # 模拟损失acc = 1 - loss  # 模拟准确率# 记录标量数据writer.add_scalar('Loss/train', loss, epoch)writer.add_scalar('Accuracy/train', acc, epoch)# 记录直方图writer.add_histogram('param/grad', torch.randn(100), epoch)writer.close()  # 关闭写入器

2.3 启动可视化服务

tensorboard --logdir=./runs --port=6006

访问 http://localhost:6006 可查看:

  • Scalars:损失/准确率曲线
  • Graphs:模型计算图
  • Distributions:参数分布变化

2.4 高级功能

1、超参数记录

from torch.utils.tensorboard.plugins.hparams import api as hp# 定义超参数空间
HP_LR = hp.HParam('learning_rate', hp.Discrete([0.001, 0.0005]))
HP_BS = hp.HParam('batch_size', hp.Discrete([32, 64]))# 记录实验配置
with tf.summary.create_file_writer('logs/hparam_tuning').as_default():hp.hparams_config(hparams=[HP_LR, HP_BS], metrics=[hp.Metric('val_accuracy')])

2、嵌入可视化

# 记录词向量(适用于NLP模型)
writer.add_embedding(torch.randn(100, 256), metadata=vocab)

三、Weights & Biases 深度集成

3.1 安装与初始化

pip install wandb
wandb login  # 登录账户(需API Key)

3.2 基础监控实现

import wandb# 初始化项目
wandb.init(project="machine-translation", config={"learning_rate": 0.001,"architecture": "Transformer","dataset": "WMT2020"})# 模拟训练循环
for epoch in range(100):loss = 1/(epoch+1) + 0.1 * torch.randn(1).item()acc = 0.9 - loss/10# 记录指标wandb.log({"epoch": epoch,"loss": loss,"accuracy": acc,"lr": 0.001 * (0.99 ** epoch)})# 记录模型参数if epoch % 10 == 0:torch.save(model.state_dict(), f"model_{epoch}.pt")wandb.save(f"model_{epoch}.pt")wandb.finish()  # 结束记录

3.3 控制台与云端看板

执行脚本后自动生成云端看板:

  • 系统资源:实时GPU显存、CPU利用率
  • 自定义图表:拖拽式构建对比视图
  • 超参数对比:平行坐标轴可视化

!https://wandb.ai/_images/reference/parallel.gif

四、高级功能

1、超参数扫描

sweep_config = {'method': 'bayes','parameters': {'lr': {'min': 1e-5, 'max': 1e-3},'batch_size': {'values': [32, 64, 128]}}
}sweep_id = wandb.sweep(sweep_config, project="mt-sweeps")
wandb.agent(sweep_id, train_function)  # 自动运行超参数搜索

2、数据集与模型版本管理

# 记录数据集
artifact = wandb.Artifact('wmt2020', type='dataset')
artifact.add_dir('data/processed/')
wandb.log_artifact(artifact)# 记录模型
model_artifact = wandb.Artifact('transformer-en-zh', type='model')
model_artifact.add_file('model_final.pt')
wandb.log_artifact(model_artifact)

3、报告生成

# 在Notebook中直接插入可视化
wandb.log({"examples": [wandb.Image("sample.png")]})

五、机器翻译完整监控

# 结合TensorBoard和W&B的混合方案
def train():# 初始化wandb.init()tb_writer = SummaryWriter()for epoch in range(epochs):# 训练步骤...loss = model.train_step()# 双平台记录wandb.log({"loss": loss})tb_writer.add_scalar('Loss/train', loss, epoch)# 验证集评估if epoch % 5 == 0:bleu = evaluate()wandb.log({"bleu": bleu})tb_writer.add_scalar('Metrics/bleu', bleu, epoch)# 保存最终模型wandb.save("model_final.pt")tb_writer.add_graph(model)

总结

  • TensorBoard:轻量级本地解决方案,适合基础监控和模型调试
  • Weights & Biases:全功能云端平台,支持从实验跟踪到团队协作的全生命周期管理
  • 混合使用:在关键实验中可同时集成两者,利用TensorBoard的细粒度分析和W&B的协作优势

对于长期项目,建议将W&B作为主平台,配合TensorBoard进行深度调试,最终实现高效可复现的模型训练流程。

http://www.dtcms.com/a/334870.html

相关文章:

  • CVE-2024-28752漏洞复现
  • 电子电气架构 --- 软件项目配置管理
  • 序列晋升7:架构原则三十诫
  • 内网穿透实战笔记 1panel 面板部署 frps,Windows 部署 frpc
  • 程序设计|C语言教学——C语言基础3:函数、数组、指针
  • Python虚拟环境与包管理工具(uv、Conda)
  • 一汽红旗7月销量37324辆 同比增长21.1%
  • B站 韩顺平 笔记 (Day 20)
  • P2169 正则表达式
  • 如何运用好DeepSeek为自己服务:智能增强的范式革命 1.1 认知增强的三次浪潮
  • 项目管理进阶——解读大型IT系统集成项目实施要点培训【附全文阅读】
  • GLM-4-Flash:智谱AI推出的首个免费API服务,支持128K上下文
  • 制作 Windows 11 启动U盘
  • Redis缓存
  • Win11和Win10共享打印机提示709用添加Windows凭据来解决的小方法
  • select、poll 和 epoll
  • Python入门第5课:如何定义和使用函数,提升代码复用性
  • Jenkins Pipeline中参数化构建
  • 【wmi异常】关于taskkill命令提示“错误:找不到” 以及无法正常获取设备机器码的处理办法
  • 读书是一场最低成本的高级成长
  • 嵌入式硬件篇---运算放大器
  • OpenCV 图像处理基础操作指南(二)
  • NetBIOS 设置
  • MySQL的索引优化与查询优化:
  • AI搜索引擎下的内容优化新范式:GEO的关键技术解析
  • 12V电压控制小板
  • EXTI配置流程
  • Day15 Docker
  • 软件I2C实现(2):I2C协议实现
  • 小迪安全v2023学习笔记(六十三讲)—— JS加密断点调试