SuperAPI AI 工具集

mlops-weights-and-biases

数据与分析

查看项目

更新于 10-28 01:17

技能介绍

用途

Weights & Biases(W&B)用于机器学习实验跟踪与 MLOps。当你需要跟踪 ML 实验并自动记录指标、在实时仪表盘中可视化训练、跨超参数与配置对比运行结果、使用自动化 sweeps 优化超参数、通过版本与血缘管理模型注册表、在团队工作区中协作 ML 项目,或跟踪数据集、模型、代码等工件及其血缘时,可以使用该技能。

主要能力

  • 实验跟踪:通过 wandb.init 初始化运行,使用 wandb.log 记录标量、媒体(图像、音频、视频)、直方图和表格等指标。
  • 配置跟踪:在 wandb.init 的 config 中记录超参数,并在训练中通过 wandb.config 访问。
  • 模型检查点:使用 wandb.save 上传检查点,或使用 Artifacts 记录模型。
  • 超参数 Sweeps:支持 grid、random、bayes 三种搜索方法,通过 sweep_config 定义指标目标与参数分布,使用 wandb.sweep 初始化、wandb.agent 运行试验。
  • Artifacts:创建并记录数据集、模型等工件,支持 add_file、add_dir、use_artifact、download 等操作,并保留血缘。
  • 模型注册表:将模型工件记录并链接到模型注册表,支持别名(如 best、production)。
  • 集成:提供 HuggingFace Transformers、PyTorch Lightning、Keras/TensorFlow 等框架的集成示例。
  • 可视化与分析:支持自定义图表、混淆矩阵,以及在 W&B UI 中创建可分享报告。
  • 团队协作:运行结果可通过 URL 分享,支持团队项目、团队级工件与模型注册表。

使用方式

安装:

pip install wandb

登录(创建 API key):

wandb login

或以编程方式设置 API key:

export WANDB_API_KEY=your_api_key_here

基础实验跟踪示例:

import wandb

run = wandb.init(
    project="my-project",
    config={
        "learning_rate": 0.001,
        "epochs": 10,
        "batch_size": 32,
        "architecture": "ResNet50"
    }
)

for epoch in range(run.config.epochs):
    train_loss = train_epoch()
    val_loss = validate()

    wandb.log({
        "epoch": epoch,
        "train/loss": train_loss,
        "val/loss": val_loss,
        "train/accuracy": train_acc,
        "val/accuracy": val_acc
    })

wandb.finish()

Sweep 配置示例:

sweep_config = {
    'method': 'bayes',
    'metric': {
        'name': 'val/accuracy',
        'goal': 'maximize'
    },
    'parameters': {
        'learning_rate': {
            'distribution': 'log_uniform',
            'min': 1e-5,
            'max': 1e-1
        },
        'batch_size': {
            'values': [16, 32, 64, 128]
        },
        'optimizer': {
            'values': ['adam', 'sgd', 'rmsprop']
        },
        'dropout': {
            'distribution': 'uniform',
            'min': 0.1,
            'max': 0.5
        }
    }
}

sweep_id = wandb.sweep(sweep_config, project="my-project")

运行 sweep:

wandb.agent(sweep_id, function=train, count=50)

Artifacts 记录示例:

artifact = wandb.Artifact(
    name='training-dataset',
    type='dataset',
    description='ImageNet training split',
    metadata={'size': '1.2M images', 'split': 'train'}
)
artifact.add_file('data/train.csv')
artifact.add_dir('data/images/')
wandb.log_artifact(artifact)

模型注册表示例:

model_artifact = wandb.Artifact(
    name='resnet50-model',
    type='model',
    metadata={'architecture': 'ResNet50', 'accuracy': 0.95}
)
model_artifact.add_file('model.pth')
wandb.log_artifact(model_artifact, aliases=['best', 'production'])
run.link_artifact(model_artifact, 'model-registry/production-models')

离线模式:

import os
os.environ["WANDB_MODE"] = "offline"
wandb.init(project="my-project")
# 之后同步:wandb sync <run_directory>

适用场景

  • 需要自动记录训练指标并实时可视化训练过程的 ML 实验。
  • 需要跨不同超参数与配置对比多次运行结果。
  • 需要自动化超参数搜索(grid、random、bayes)。
  • 需要管理数据集、模型、代码等工件的版本与血缘。
  • 需要模型注册表与别名管理(如 best、production)。
  • 需要团队协作、共享运行结果与报告。
  • 使用 HuggingFace Transformers、PyTorch Lightning、Keras/TensorFlow 等框架并希望集成实验跟踪。

限制

资料未提供关于该技能在具体平台、运行环境或性能方面的限制说明。资料中提及的定价信息为:Free 版提供无限公开项目与 100GB 存储;Academic 版对学生/研究者免费;Teams 版为 $50/seat/month,含私有项目与无限存储;Enterprise 版为定制定价并支持本地部署选项。