在机器学习(ML)和深度学习(DL)的快速发展中,数据科学家和研究人员面临着巨大的挑战:如何有效地管理实验、调优模型以及跟踪训练过程中的每一个细节。为了应对这些挑战, Weights & Biases(简称 W&B) 应运而生,成为了开发者和研究人员必不可少的工具之一。

Weights & Biases

Weights & Biases (W&B) 是一个 AI 开发平台,广泛用于:

  • 机器学习实验管理
  • 模型性能追踪与可视化
  • LLM 应用开发与监控(如 RAG, agent, prompt 调试)
  • MLOps 落地实践(如模型注册、监控、超参优化等)

在这里插入图片描述

它支持从模型训练到部署的全流程,并与主流框架(如 PyTorch、TensorFlow、Transformers、Langchain 等)深度集成。

核心功能模块

模型开发相关(MLOps)

  • Experiments:实验追踪与可视化
  • Sweeps:自动超参数搜索
  • Tables:数据可视化与交互式分析
  • Artifacts:模型与数据版本管理
  • Reports:生成结果可视化报告
  • Registry:模型与数据注册与共享

LLM 应用相关(LLMOps)

  • Weave:构建和调试基于 LLM 的 AI 应用(如 RAG、Agent)
  • Traces:可视化 LLM 调用路径
  • Evaluations:对 LLM 应用进行系统评估
  • Agents:Agent 系统的可观测性工具
  • Guardrails:安全控制,防止 prompt 攻击与有害输出
  • Playground:可视化 prompt 实验环境

Python 中应用

1. 安装
使用 Weights & Biases 的第一步是安装 W&B 库。可以通过以下命令进行安装:

pip install wandb

在使用 W&B 之前,需要在 W&B 的官网注册一个账户:官网-wandb。注册完成后,你将获得一个 API 密钥。使用以下命令登录:

wandb login

执行这个命令后,会要求输入 API 密钥。可以在 W&B 的网站上找到这个密钥。登录后,就可以将本地的实验数据与 W&B 的云平台同步了。


2. 初始化并记录实验

import wandb

# 初始化项目
run = wandb.init(project="my-project", name="run-name")

# 设置超参数
config = run.config
config.learning_rate = 0.001
config.epochs = 10

# 日志记录
for epoch in range(config.epochs):
    loss = 0.1 * epoch  # 假设的损失值
    wandb.log({"epoch": epoch, "loss": loss})

run.finish()

3. 可视化模型结构、梯度和指标

model = MyModel()  # 假设定义好的模型
wandb.watch(model, log="all")  # 记录模型权重、梯度等

4. 保存模型或数据作为 Artifact

artifact = wandb.Artifact("model", type="model")
artifact.add_file("model.pt")
run.log_artifact(artifact)

5. 超参数搜索(Sweeps)

创建 sweep.yaml 文件:

method: bayes
metric:
  name: loss
  goal: minimize
parameters:
  learning_rate:
    min: 0.0001
    max: 0.1
  batch_size:
    values: [16, 32, 64]

然后运行:

wandb sweep sweep.yaml
wandb agent <sweep-id>

与主流框架集成示例

1、PyTorch

import wandb
run = wandb.init(project="pytorch-example")

for batch_idx, (data, target) in enumerate(train_loader):
    output = model(data)
    loss = loss_fn(output, target)
    loss.backward()
    optimizer.step()
    wandb.log({"loss": loss.item()})

2、Transformers + Hugging Face

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=16,
    report_to="wandb",  # 关键设置
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_data,
    eval_dataset=eval_data,
)

trainer.train()

3、Langchain + Weave

import weave
from langchain_openai import ChatOpenAI
from langchain_core.prompts import PromptTemplate

weave.init("langchain-demo")

llm = ChatOpenAI()
prompt = PromptTemplate.from_template("1 + {number} = ")

llm_chain = prompt | llm
output = llm_chain.invoke({"number": 2})

print(output)

参考

1、CSDN博客-【Weights & Biases】机器学习中的最佳实践与工具

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐