当前位置: 首页 > 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.xdnf.cn/news/1313209.html

相关文章:

  • 《A Practical Guide to Building Agents》文档学习
  • 写一个linux脚本,要求实现查找9010端口,如果端口存在则kill,否则不处理,返回对应的提示
  • 24. async await 原理是什么,会编译成什么
  • Linux系统top命令详细指南
  • 安卓11 12系统修改定制化_____如何去除安卓11 12的系统签名验证
  • 基于Transformer的机器翻译——模型篇
  • 《后室Backrooms》中文版,购物误入异空间,怪物追逐,第一人称冒险逃生
  • 安卓11 12系统修改定制化_____修改系统 解锁system分区 去除data加密 自由删减系统应用
  • 服务器配置开机自启动服务
  • 线程池与异步编程——语法归纳
  • 存算分离与云原生:数据平台的新基石
  • 机器学习的特征工程(特征构造、特征选择、特征转换和特征提取)详解
  • 探秘gRPC——gRPC原理详解
  • 胶质母细胞瘤对化疗的敏感性由磷脂酰肌醇3-激酶β选择性调控
  • 【CV 目标检测】Fast RCNN模型①——与R-CNN区别
  • 软件需求管理过程详解
  • 11、软件需求工程
  • 基于 LoRA的广义知识蒸馏(GKD)训练
  • Java基础 8.16
  • 一汽红旗7月销量37324辆 同比增长21.1%
  • ESP32 C3 开发板使用教程 01-测试显示屏
  • k8sday08深入控制器(3/3)
  • 【数据分析】比较SparCC、Pearson和Spearman相关性估计方法在合成组学数据上的表现
  • 从频繁告警到平稳发布:服务冷启动 CPU 风暴优化实践00
  • MATLAB基础训练实验
  • XSS攻击:从原理入门到实战精通详解
  • 数据结构初阶(16)排序算法——归并排序
  • Python入门第5课:如何定义和使用函数,提升代码复用性
  • PHP反序列化的CTF题目环境和做题复现第1集
  • 软件的终极:为70亿人编写70亿个不同的软件