【机器学习工具】Weights Biases
目录
- Weights & Biases
- 核心功能模块
- Python 中应用
- 与主流框架集成示例
- 参考
在机器学习(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: lossgoal: minimize
parameters:learning_rate:min: 0.0001max: 0.1batch_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, TrainingArgumentstraining_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 PromptTemplateweave.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】机器学习中的最佳实践与工具