[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GFJB2J6GNKWXNN7AEXABCY":3,"skill-same:01M6GFJB2J6GNKWXNN7AEXABCY":84},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":62,"commitSha":63,"skillDirectory":64,"forksCount":65,"repositoryHtmlUrl":66,"repositoryHomepageUrl":6,"ownerHtmlUrl":67,"ownerBlogUrl":6,"ownerDescription":68,"updatedAt":69,"install":70,"resources":83},"01M6GFJB2J6GNKWXNN7AEXABCY","weights-and-biases",null,"Track ML experiments with automatic logging, visualize training in real-time, optimize hyperparameters with sweeps, and manage model registry with W&B - collaborative MLOps platform","zapabob\u002FSkills","zapabob","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F130830376?v=4","01M6DBMYZAGRTFQDSQYW3W764P","峯岸 亮","01M6DBMZ3GKDSJ01NZ9XTZD7JD",2,"MIT","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002Fda\u002Fdafe030deff56c6aacae3adf5c61b780ef7a97757c550df7052dc8baf7aaa9f6\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"weights and biases","experiment","Real-Time Visualization","WandB","Hyperparameter Tuning","Model Registry","Experiment Tracking","platform","time","optimize","visualize","model","tuning","logging","registry","visualization","training","pytorch","experiments","tensorflow","2026-11-10 10:12:30",false,"---\r\nname: weights-and-biases\r\ndescription: Track ML experiments with automatic logging, visualize training in real-time, optimize hyperparameters with sweeps, and manage model registry with W&B - collaborative MLOps platform\r\nversion: 1.0.0\r\nauthor: Orchestra Research\r\nlicense: MIT\r\ndependencies: [wandb]\r\nmetadata:\r\n  hermes:\r\n    tags: [MLOps, Weights And Biases, WandB, Experiment Tracking, Hyperparameter Tuning, Model Registry, Collaboration, Real-Time Visualization, PyTorch, TensorFlow, HuggingFace]\r\n\r\n---\r\n\r\n# Weights & Biases: ML Experiment Tracking & MLOps\r\n\r\n## When to Use This Skill\r\n\r\nUse Weights & Biases (W&B) when you need to:\r\n- **Track ML experiments** with automatic metric logging\r\n- **Visualize training** in real-time dashboards\r\n- **Compare runs** across hyperparameters and configurations\r\n- **Optimize hyperparameters** with automated sweeps\r\n- **Manage model registry** with versioning and lineage\r\n- **Collaborate on ML projects** with team workspaces\r\n- **Track artifacts** (datasets, models, code) with lineage\r\n\r\n**Users**: 200,000+ ML practitioners | **GitHub Stars**: 10.5k+ | **Integrations**: 100+\r\n\r\n## Installation\r\n\r\n```bash\r\n# Install W&B\r\npip install wandb\r\n\r\n# Login (creates API key)\r\nwandb login\r\n\r\n# Or set API key programmatically\r\nexport WANDB_API_KEY=[REDACTED]\r\n```\r\n\r\n## Quick Start\r\n\r\n### Basic Experiment Tracking\r\n\r\n```python\r\nimport wandb\r\n\r\n# Initialize a run\r\nrun = wandb.init(\r\n    project=\"my-project\",\r\n    config={\r\n        \"learning_rate\": 0.001,\r\n        \"epochs\": 10,\r\n        \"batch_size\": 32,\r\n        \"architecture\": \"ResNet50\"\r\n    }\r\n)\r\n\r\n# Training loop\r\nfor epoch in range(run.config.epochs):\r\n    # Your training code\r\n    train_loss = train_epoch()\r\n    val_loss = validate()\r\n\r\n    # Log metrics\r\n    wandb.log({\r\n        \"epoch\": epoch,\r\n        \"train\u002Floss\": train_loss,\r\n        \"val\u002Floss\": val_loss,\r\n        \"train\u002Faccuracy\": train_acc,\r\n        \"val\u002Faccuracy\": val_acc\r\n    })\r\n\r\n# Finish the run\r\nwandb.finish()\r\n```\r\n\r\n### With PyTorch\r\n\r\n```python\r\nimport torch\r\nimport wandb\r\n\r\n# Initialize\r\nwandb.init(project=\"pytorch-demo\", config={\r\n    \"lr\": 0.001,\r\n    \"epochs\": 10\r\n})\r\n\r\n# Access config\r\nconfig = wandb.config\r\n\r\n# Training loop\r\nfor epoch in range(config.epochs):\r\n    for batch_idx, (data, target) in enumerate(train_loader):\r\n        # Forward pass\r\n        output = model(data)\r\n        loss = criterion(output, target)\r\n\r\n        # Backward pass\r\n        optimizer.zero_grad()\r\n        loss.backward()\r\n        optimizer.step()\r\n\r\n        # Log every 100 batches\r\n        if batch_idx % 100 == 0:\r\n            wandb.log({\r\n                \"loss\": loss.item(),\r\n                \"epoch\": epoch,\r\n                \"batch\": batch_idx\r\n            })\r\n\r\n# Save model\r\ntorch.save(model.state_dict(), \"model.pth\")\r\nwandb.save(\"model.pth\")  # Upload to W&B\r\n\r\nwandb.finish()\r\n```\r\n\r\n## Core Concepts\r\n\r\n### 1. Projects and Runs\r\n\r\n**Project**: Collection of related experiments\r\n**Run**: Single execution of your training script\r\n\r\n```python\r\n# Create\u002Fuse project\r\nrun = wandb.init(\r\n    project=\"image-classification\",\r\n    name=\"resnet50-experiment-1\",  # Optional run name\r\n    tags=[\"baseline\", \"resnet\"],    # Organize with tags\r\n    notes=\"First baseline run\"      # Add notes\r\n)\r\n\r\n# Each run has unique ID\r\nprint(f\"Run ID: {run.id}\")\r\nprint(f\"Run URL: {run.url}\")\r\n```\r\n\r\n### 2. Configuration Tracking\r\n\r\nTrack hyperparameters automatically:\r\n\r\n```python\r\nconfig = {\r\n    # Model architecture\r\n    \"model\": \"ResNet50\",\r\n    \"pretrained\": True,\r\n\r\n    # Training params\r\n    \"learning_rate\": 0.001,\r\n    \"batch_size\": 32,\r\n    \"epochs\": 50,\r\n    \"optimizer\": \"Adam\",\r\n\r\n    # Data params\r\n    \"dataset\": \"ImageNet\",\r\n    \"augmentation\": \"standard\"\r\n}\r\n\r\nwandb.init(project=\"my-project\", config=config)\r\n\r\n# Access config during training\r\nlr = wandb.config.learning_rate\r\nbatch_size = wandb.config.batch_size\r\n```\r\n\r\n### 3. Metric Logging\r\n\r\n```python\r\n# Log scalars\r\nwandb.log({\"loss\": 0.5, \"accuracy\": 0.92})\r\n\r\n# Log multiple metrics\r\nwandb.log({\r\n    \"train\u002Floss\": train_loss,\r\n    \"train\u002Faccuracy\": train_acc,\r\n    \"val\u002Floss\": val_loss,\r\n    \"val\u002Faccuracy\": val_acc,\r\n    \"learning_rate\": current_lr,\r\n    \"epoch\": epoch\r\n})\r\n\r\n# Log with custom x-axis\r\nwandb.log({\"loss\": loss}, step=global_step)\r\n\r\n# Log media (images, audio, video)\r\nwandb.log({\"examples\": [wandb.Image(img) for img in images]})\r\n\r\n# Log histograms\r\nwandb.log({\"gradients\": wandb.Histogram(gradients)})\r\n\r\n# Log tables\r\ntable = wandb.Table(columns=[\"id\", \"prediction\", \"ground_truth\"])\r\nwandb.log({\"predictions\": table})\r\n```\r\n\r\n### 4. Model Checkpointing\r\n\r\n```python\r\nimport torch\r\nimport wandb\r\n\r\n# Save model checkpoint\r\ncheckpoint = {\r\n    'epoch': epoch,\r\n    'model_state_dict': model.state_dict(),\r\n    'optimizer_state_dict': optimizer.state_dict(),\r\n    'loss': loss,\r\n}\r\n\r\ntorch.save(checkpoint, 'checkpoint.pth')\r\n\r\n# Upload to W&B\r\nwandb.save('checkpoint.pth')\r\n\r\n# Or use Artifacts (recommended)\r\nartifact = wandb.Artifact('model', type='model')\r\nartifact.add_file('checkpoint.pth')\r\nwandb.log_artifact(artifact)\r\n```\r\n\r\n## Hyperparameter Sweeps\r\n\r\nAutomatically search for optimal hyperparameters.\r\n\r\n### Define Sweep Configuration\r\n\r\n```python\r\nsweep_config = {\r\n    'method': 'bayes',  # or 'grid', 'random'\r\n    'metric': {\r\n        'name': 'val\u002Faccuracy',\r\n        'goal': 'maximize'\r\n    },\r\n    'parameters': {\r\n        'learning_rate': {\r\n            'distribution': 'log_uniform',\r\n            'min': 1e-5,\r\n            'max': 1e-1\r\n        },\r\n        'batch_size': {\r\n            'values': [16, 32, 64, 128]\r\n        },\r\n        'optimizer': {\r\n            'values': ['adam', 'sgd', 'rmsprop']\r\n        },\r\n        'dropout': {\r\n            'distribution': 'uniform',\r\n            'min': 0.1,\r\n            'max': 0.5\r\n        }\r\n    }\r\n}\r\n\r\n# Initialize sweep\r\nsweep_id = wandb.sweep(sweep_config, project=\"my-project\")\r\n```\r\n\r\n### Define Training Function\r\n\r\n```python\r\ndef train():\r\n    # Initialize run\r\n    run = wandb.init()\r\n\r\n    # Access sweep parameters\r\n    lr = wandb.config.learning_rate\r\n    batch_size = wandb.config.batch_size\r\n    optimizer_name = wandb.config.optimizer\r\n\r\n    # Build model with sweep config\r\n    model = build_model(wandb.config)\r\n    optimizer = get_optimizer(optimizer_name, lr)\r\n\r\n    # Training loop\r\n    for epoch in range(NUM_EPOCHS):\r\n        train_loss = train_epoch(model, optimizer, batch_size)\r\n        val_acc = validate(model)\r\n\r\n        # Log metrics\r\n        wandb.log({\r\n            \"train\u002Floss\": train_loss,\r\n            \"val\u002Faccuracy\": val_acc\r\n        })\r\n\r\n# Run sweep\r\nwandb.agent(sweep_id, function=train, count=50)  # Run 50 trials\r\n```\r\n\r\n### Sweep Strategies\r\n\r\n```python\r\n# Grid search - exhaustive\r\nsweep_config = {\r\n    'method': 'grid',\r\n    'parameters': {\r\n        'lr': {'values': [0.001, 0.01, 0.1]},\r\n        'batch_size': {'values': [16, 32, 64]}\r\n    }\r\n}\r\n\r\n# Random search\r\nsweep_config = {\r\n    'method': 'random',\r\n    'parameters': {\r\n        'lr': {'distribution': 'uniform', 'min': 0.0001, 'max': 0.1},\r\n        'dropout': {'distribution': 'uniform', 'min': 0.1, 'max': 0.5}\r\n    }\r\n}\r\n\r\n# Bayesian optimization (recommended)\r\nsweep_config = {\r\n    'method': 'bayes',\r\n    'metric': {'name': 'val\u002Floss', 'goal': 'minimize'},\r\n    'parameters': {\r\n        'lr': {'distribution': 'log_uniform', 'min': 1e-5, 'max': 1e-1}\r\n    }\r\n}\r\n```\r\n\r\n## Artifacts\r\n\r\nTrack datasets, models, and other files with lineage.\r\n\r\n### Log Artifacts\r\n\r\n```python\r\n# Create artifact\r\nartifact = wandb.Artifact(\r\n    name='training-dataset',\r\n    type='dataset',\r\n    description='ImageNet training split',\r\n    metadata={'size': '1.2M images', 'split': 'train'}\r\n)\r\n\r\n# Add files\r\nartifact.add_file('data\u002Ftrain.csv')\r\nartifact.add_dir('data\u002Fimages\u002F')\r\n\r\n# Log artifact\r\nwandb.log_artifact(artifact)\r\n```\r\n\r\n### Use Artifacts\r\n\r\n```python\r\n# Download and use artifact\r\nrun = wandb.init(project=\"my-project\")\r\n\r\n# Download artifact\r\nartifact = run.use_artifact('training-dataset:latest')\r\nartifact_dir = artifact.download()\r\n\r\n# Use the data\r\ndata = load_data(f\"{artifact_dir}\u002Ftrain.csv\")\r\n```\r\n\r\n### Model Registry\r\n\r\n```python\r\n# Log model as artifact\r\nmodel_artifact = wandb.Artifact(\r\n    name='resnet50-model',\r\n    type='model',\r\n    metadata={'architecture': 'ResNet50', 'accuracy': 0.95}\r\n)\r\n\r\nmodel_artifact.add_file('model.pth')\r\nwandb.log_artifact(model_artifact, aliases=['best', 'production'])\r\n\r\n# Link to model registry\r\nrun.link_artifact(model_artifact, 'model-registry\u002Fproduction-models')\r\n```\r\n\r\n## Integration Examples\r\n\r\n### HuggingFace Transformers\r\n\r\n```python\r\nfrom transformers import Trainer, TrainingArguments\r\nimport wandb\r\n\r\n# Initialize W&B\r\nwandb.init(project=\"hf-transformers\")\r\n\r\n# Training arguments with W&B\r\ntraining_args = TrainingArguments(\r\n    output_dir=\".\u002Fresults\",\r\n    report_to=\"wandb\",  # Enable W&B logging\r\n    run_name=\"bert-finetuning\",\r\n    logging_steps=100,\r\n    save_steps=500\r\n)\r\n\r\n# Trainer automatically logs to W&B\r\ntrainer = Trainer(\r\n    model=model,\r\n    args=training_args,\r\n    train_dataset=train_dataset,\r\n    eval_dataset=eval_dataset\r\n)\r\n\r\ntrainer.train()\r\n```\r\n\r\n### PyTorch Lightning\r\n\r\n```python\r\nfrom pytorch_lightning import Trainer\r\nfrom pytorch_lightning.loggers import WandbLogger\r\nimport wandb\r\n\r\n# Create W&B logger\r\nwandb_logger = WandbLogger(\r\n    project=\"lightning-demo\",\r\n    log_model=True  # Log model checkpoints\r\n)\r\n\r\n# Use with Trainer\r\ntrainer = Trainer(\r\n    logger=wandb_logger,\r\n    max_epochs=10\r\n)\r\n\r\ntrainer.fit(model, datamodule=dm)\r\n```\r\n\r\n### Keras\u002FTensorFlow\r\n\r\n```python\r\nimport wandb\r\nfrom wandb.keras import WandbCallback\r\n\r\n# Initialize\r\nwandb.init(project=\"keras-demo\")\r\n\r\n# Add callback\r\nmodel.fit(\r\n    x_train, y_train,\r\n    validation_data=(x_val, y_val),\r\n    epochs=10,\r\n    callbacks=[WandbCallback()]  # Auto-logs metrics\r\n)\r\n```\r\n\r\n## Visualization & Analysis\r\n\r\n### Custom Charts\r\n\r\n```python\r\n# Log custom visualizations\r\nimport matplotlib.pyplot as plt\r\n\r\nfig, ax = plt.subplots()\r\nax.plot(x, y)\r\nwandb.log({\"custom_plot\": wandb.Image(fig)})\r\n\r\n# Log confusion matrix\r\nwandb.log({\"conf_mat\": wandb.plot.confusion_matrix(\r\n    probs=None,\r\n    y_true=ground_truth,\r\n    preds=predictions,\r\n    class_names=class_names\r\n)})\r\n```\r\n\r\n### Reports\r\n\r\nCreate shareable reports in W&B UI:\r\n- Combine runs, charts, and text\r\n- Markdown support\r\n- Embeddable visualizations\r\n- Team collaboration\r\n\r\n## Best Practices\r\n\r\n### 1. Organize with Tags and Groups\r\n\r\n```python\r\nwandb.init(\r\n    project=\"my-project\",\r\n    tags=[\"baseline\", \"resnet50\", \"imagenet\"],\r\n    group=\"resnet-experiments\",  # Group related runs\r\n    job_type=\"train\"             # Type of job\r\n)\r\n```\r\n\r\n### 2. Log Everything Relevant\r\n\r\n```python\r\n# Log system metrics\r\nwandb.log({\r\n    \"gpu\u002Futil\": gpu_utilization,\r\n    \"gpu\u002Fmemory\": gpu_memory_used,\r\n    \"cpu\u002Futil\": cpu_utilization\r\n})\r\n\r\n# Log code version\r\nwandb.log({\"git_commit\": git_commit_hash})\r\n\r\n# Log data splits\r\nwandb.log({\r\n    \"data\u002Ftrain_size\": len(train_dataset),\r\n    \"data\u002Fval_size\": len(val_dataset)\r\n})\r\n```\r\n\r\n### 3. Use Descriptive Names\r\n\r\n```python\r\n# ✅ Good: Descriptive run names\r\nwandb.init(\r\n    project=\"nlp-classification\",\r\n    name=\"bert-base-lr0.001-bs32-epoch10\"\r\n)\r\n\r\n# ❌ Bad: Generic names\r\nwandb.init(project=\"nlp\", name=\"run1\")\r\n```\r\n\r\n### 4. Save Important Artifacts\r\n\r\n```python\r\n# Save final model\r\nartifact = wandb.Artifact('final-model', type='model')\r\nartifact.add_file('model.pth')\r\nwandb.log_artifact(artifact)\r\n\r\n# Save predictions for analysis\r\npredictions_table = wandb.Table(\r\n    columns=[\"id\", \"input\", \"prediction\", \"ground_truth\"],\r\n    data=predictions_data\r\n)\r\nwandb.log({\"predictions\": predictions_table})\r\n```\r\n\r\n### 5. Use Offline Mode for Unstable Connections\r\n\r\n```python\r\nimport os\r\n\r\n# Enable offline mode\r\nos.environ[\"WANDB_MODE\"] = \"offline\"\r\n\r\nwandb.init(project=\"my-project\")\r\n# ... your code ...\r\n\r\n# Sync later\r\n# wandb sync \u003Crun_directory>\r\n```\r\n\r\n## Team Collaboration\r\n\r\n### Share Runs\r\n\r\n```python\r\n# Runs are automatically shareable via URL\r\nrun = wandb.init(project=\"team-project\")\r\nprint(f\"Share this URL: {run.url}\")\r\n```\r\n\r\n### Team Projects\r\n\r\n- Create team account at wandb.ai\r\n- Add team members\r\n- Set project visibility (private\u002Fpublic)\r\n- Use team-level artifacts and model registry\r\n\r\n## Pricing\r\n\r\n- **Free**: Unlimited public projects, 100GB storage\r\n- **Academic**: Free for students\u002Fresearchers\r\n- **Teams**: $50\u002Fseat\u002Fmonth, private projects, unlimited storage\r\n- **Enterprise**: Custom pricing, on-prem options\r\n\r\n## Resources\r\n\r\n- **Documentation**: https:\u002F\u002Fdocs.wandb.ai\r\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fwandb\u002Fwandb (10.5k+ stars)\r\n- **Examples**: https:\u002F\u002Fgithub.com\u002Fwandb\u002Fexamples\r\n- **Community**: https:\u002F\u002Fwandb.ai\u002Fcommunity\r\n- **Discord**: https:\u002F\u002Fwandb.me\u002Fdiscord\r\n\r\n## See Also\r\n\r\n- `references\u002Fsweeps.md` - Comprehensive hyperparameter optimization guide\r\n- `references\u002Fartifacts.md` - Data and model versioning patterns\r\n- `references\u002Fintegrations.md` - Framework-specific examples\r\n","# Weights & Biases: ML Experiment Tracking & MLOps\r\n\r\n## When to Use This Skill\r\n\r\nUse Weights & Biases (W&B) when you need to:\r\n- **Track ML experiments** with automatic metric logging\r\n- **Visualize training** in real-time dashboards\r\n- **Compare runs** across hyperparameters and configurations\r\n- **Optimize hyperparameters** with automated sweeps\r\n- **Manage model registry** with versioning and lineage\r\n- **Collaborate on ML projects** with team workspaces\r\n- **Track artifacts** (datasets, models, code) with lineage\r\n\r\n**Users**: 200,000+ ML practitioners | **GitHub Stars**: 10.5k+ | **Integrations**: 100+\r\n\r\n## Installation\r\n\r\n```bash\r\n# Install W&B\r\npip install wandb\r\n\r\n# Login (creates API key)\r\nwandb login\r\n\r\n# Or set API key programmatically\r\nexport WANDB_API_KEY=[REDACTED]\r\n```\r\n\r\n## Quick Start\r\n\r\n### Basic Experiment Tracking\r\n\r\n```python\r\nimport wandb\r\n\r\n# Initialize a run\r\nrun = wandb.init(\r\n    project=\"my-project\",\r\n    config={\r\n        \"learning_rate\": 0.001,\r\n        \"epochs\": 10,\r\n        \"batch_size\": 32,\r\n        \"architecture\": \"ResNet50\"\r\n    }\r\n)\r\n\r\n# Training loop\r\nfor epoch in range(run.config.epochs):\r\n    # Your training code\r\n    train_loss = train_epoch()\r\n    val_loss = validate()\r\n\r\n    # Log metrics\r\n    wandb.log({\r\n        \"epoch\": epoch,\r\n        \"train\u002Floss\": train_loss,\r\n        \"val\u002Floss\": val_loss,\r\n        \"train\u002Faccuracy\": train_acc,\r\n        \"val\u002Faccuracy\": val_acc\r\n    })\r\n\r\n# Finish the run\r\nwandb.finish()\r\n```\r\n\r\n### With PyTorch\r\n\r\n```python\r\nimport torch\r\nimport wandb\r\n\r\n# Initialize\r\nwandb.init(project=\"pytorch-demo\", config={\r\n    \"lr\": 0.001,\r\n    \"epochs\": 10\r\n})\r\n\r\n# Access config\r\nconfig = wandb.config\r\n\r\n# Training loop\r\nfor epoch in range(config.epochs):\r\n    for batch_idx, (data, target) in enumerate(train_loader):\r\n        # Forward pass\r\n        output = model(data)\r\n        loss = criterion(output, target)\r\n\r\n        # Backward pass\r\n        optimizer.zero_grad()\r\n        loss.backward()\r\n        optimizer.step()\r\n\r\n        # Log every 100 batches\r\n        if batch_idx % 100 == 0:\r\n            wandb.log({\r\n                \"loss\": loss.item(),\r\n                \"epoch\": epoch,\r\n                \"batch\": batch_idx\r\n            })\r\n\r\n# Save model\r\ntorch.save(model.state_dict(), \"model.pth\")\r\nwandb.save(\"model.pth\")  # Upload to W&B\r\n\r\nwandb.finish()\r\n```\r\n\r\n## Core Concepts\r\n\r\n### 1. Projects and Runs\r\n\r\n**Project**: Collection of related experiments\r\n**Run**: Single execution of your training script\r\n\r\n```python\r\n# Create\u002Fuse project\r\nrun = wandb.init(\r\n    project=\"image-classification\",\r\n    name=\"resnet50-experiment-1\",  # Optional run name\r\n    tags=[\"baseline\", \"resnet\"],    # Organize with tags\r\n    notes=\"First baseline run\"      # Add notes\r\n)\r\n\r\n# Each run has unique ID\r\nprint(f\"Run ID: {run.id}\")\r\nprint(f\"Run URL: {run.url}\")\r\n```\r\n\r\n### 2. Configuration Tracking\r\n\r\nTrack hyperparameters automatically:\r\n\r\n```python\r\nconfig = {\r\n    # Model architecture\r\n    \"model\": \"ResNet50\",\r\n    \"pretrained\": True,\r\n\r\n    # Training params\r\n    \"learning_rate\": 0.001,\r\n    \"batch_size\": 32,\r\n    \"epochs\": 50,\r\n    \"optimizer\": \"Adam\",\r\n\r\n    # Data params\r\n    \"dataset\": \"ImageNet\",\r\n    \"augmentation\": \"standard\"\r\n}\r\n\r\nwandb.init(project=\"my-project\", config=config)\r\n\r\n# Access config during training\r\nlr = wandb.config.learning_rate\r\nbatch_size = wandb.config.batch_size\r\n```\r\n\r\n### 3. Metric Logging\r\n\r\n```python\r\n# Log scalars\r\nwandb.log({\"loss\": 0.5, \"accuracy\": 0.92})\r\n\r\n# Log multiple metrics\r\nwandb.log({\r\n    \"train\u002Floss\": train_loss,\r\n    \"train\u002Faccuracy\": train_acc,\r\n    \"val\u002Floss\": val_loss,\r\n    \"val\u002Faccuracy\": val_acc,\r\n    \"learning_rate\": current_lr,\r\n    \"epoch\": epoch\r\n})\r\n\r\n# Log with custom x-axis\r\nwandb.log({\"loss\": loss}, step=global_step)\r\n\r\n# Log media (images, audio, video)\r\nwandb.log({\"examples\": [wandb.Image(img) for img in images]})\r\n\r\n# Log histograms\r\nwandb.log({\"gradients\": wandb.Histogram(gradients)})\r\n\r\n# Log tables\r\ntable = wandb.Table(columns=[\"id\", \"prediction\", \"ground_truth\"])\r\nwandb.log({\"predictions\": table})\r\n```\r\n\r\n### 4. Model Checkpointing\r\n\r\n```python\r\nimport torch\r\nimport wandb\r\n\r\n# Save model checkpoint\r\ncheckpoint = {\r\n    'epoch': epoch,\r\n    'model_state_dict': model.state_dict(),\r\n    'optimizer_state_dict': optimizer.state_dict(),\r\n    'loss': loss,\r\n}\r\n\r\ntorch.save(checkpoint, 'checkpoint.pth')\r\n\r\n# Upload to W&B\r\nwandb.save('checkpoint.pth')\r\n\r\n# Or use Artifacts (recommended)\r\nartifact = wandb.Artifact('model', type='model')\r\nartifact.add_file('checkpoint.pth')\r\nwandb.log_artifact(artifact)\r\n```\r\n\r\n## Hyperparameter Sweeps\r\n\r\nAutomatically search for optimal hyperparameters.\r\n\r\n### Define Sweep Configuration\r\n\r\n```python\r\nsweep_config = {\r\n    'method': 'bayes',  # or 'grid', 'random'\r\n    'metric': {\r\n        'name': 'val\u002Faccuracy',\r\n        'goal': 'maximize'\r\n    },\r\n    'parameters': {\r\n        'learning_rate': {\r\n            'distribution': 'log_uniform',\r\n            'min': 1e-5,\r\n            'max': 1e-1\r\n        },\r\n        'batch_size': {\r\n            'values': [16, 32, 64, 128]\r\n        },\r\n        'optimizer': {\r\n            'values': ['adam', 'sgd', 'rmsprop']\r\n        },\r\n        'dropout': {\r\n            'distribution': 'uniform',\r\n            'min': 0.1,\r\n            'max': 0.5\r\n        }\r\n    }\r\n}\r\n\r\n# Initialize sweep\r\nsweep_id = wandb.sweep(sweep_config, project=\"my-project\")\r\n```\r\n\r\n### Define Training Function\r\n\r\n```python\r\ndef train():\r\n    # Initialize run\r\n    run = wandb.init()\r\n\r\n    # Access sweep parameters\r\n    lr = wandb.config.learning_rate\r\n    batch_size = wandb.config.batch_size\r\n    optimizer_name = wandb.config.optimizer\r\n\r\n    # Build model with sweep config\r\n    model = build_model(wandb.config)\r\n    optimizer = get_optimizer(optimizer_name, lr)\r\n\r\n    # Training loop\r\n    for epoch in range(NUM_EPOCHS):\r\n        train_loss = train_epoch(model, optimizer, batch_size)\r\n        val_acc = validate(model)\r\n\r\n        # Log metrics\r\n        wandb.log({\r\n            \"train\u002Floss\": train_loss,\r\n            \"val\u002Faccuracy\": val_acc\r\n        })\r\n\r\n# Run sweep\r\nwandb.agent(sweep_id, function=train, count=50)  # Run 50 trials\r\n```\r\n\r\n### Sweep Strategies\r\n\r\n```python\r\n# Grid search - exhaustive\r\nsweep_config = {\r\n    'method': 'grid',\r\n    'parameters': {\r\n        'lr': {'values': [0.001, 0.01, 0.1]},\r\n        'batch_size': {'values': [16, 32, 64]}\r\n    }\r\n}\r\n\r\n# Random search\r\nsweep_config = {\r\n    'method': 'random',\r\n    'parameters': {\r\n        'lr': {'distribution': 'uniform', 'min': 0.0001, 'max': 0.1},\r\n        'dropout': {'distribution': 'uniform', 'min': 0.1, 'max': 0.5}\r\n    }\r\n}\r\n\r\n# Bayesian optimization (recommended)\r\nsweep_config = {\r\n    'method': 'bayes',\r\n    'metric': {'name': 'val\u002Floss', 'goal': 'minimize'},\r\n    'parameters': {\r\n        'lr': {'distribution': 'log_uniform', 'min': 1e-5, 'max': 1e-1}\r\n    }\r\n}\r\n```\r\n\r\n## Artifacts\r\n\r\nTrack datasets, models, and other files with lineage.\r\n\r\n### Log Artifacts\r\n\r\n```python\r\n# Create artifact\r\nartifact = wandb.Artifact(\r\n    name='training-dataset',\r\n    type='dataset',\r\n    description='ImageNet training split',\r\n    metadata={'size': '1.2M images', 'split': 'train'}\r\n)\r\n\r\n# Add files\r\nartifact.add_file('data\u002Ftrain.csv')\r\nartifact.add_dir('data\u002Fimages\u002F')\r\n\r\n# Log artifact\r\nwandb.log_artifact(artifact)\r\n```\r\n\r\n### Use Artifacts\r\n\r\n```python\r\n# Download and use artifact\r\nrun = wandb.init(project=\"my-project\")\r\n\r\n# Download artifact\r\nartifact = run.use_artifact('training-dataset:latest')\r\nartifact_dir = artifact.download()\r\n\r\n# Use the data\r\ndata = load_data(f\"{artifact_dir}\u002Ftrain.csv\")\r\n```\r\n\r\n### Model Registry\r\n\r\n```python\r\n# Log model as artifact\r\nmodel_artifact = wandb.Artifact(\r\n    name='resnet50-model',\r\n    type='model',\r\n    metadata={'architecture': 'ResNet50', 'accuracy': 0.95}\r\n)\r\n\r\nmodel_artifact.add_file('model.pth')\r\nwandb.log_artifact(model_artifact, aliases=['best', 'production'])\r\n\r\n# Link to model registry\r\nrun.link_artifact(model_artifact, 'model-registry\u002Fproduction-models')\r\n```\r\n\r\n## Integration Examples\r\n\r\n### HuggingFace Transformers\r\n\r\n```python\r\nfrom transformers import Trainer, TrainingArguments\r\nimport wandb\r\n\r\n# Initialize W&B\r\nwandb.init(project=\"hf-transformers\")\r\n\r\n# Training arguments with W&B\r\ntraining_args = TrainingArguments(\r\n    output_dir=\".\u002Fresults\",\r\n    report_to=\"wandb\",  # Enable W&B logging\r\n    run_name=\"bert-finetuning\",\r\n    logging_steps=100,\r\n    save_steps=500\r\n)\r\n\r\n# Trainer automatically logs to W&B\r\ntrainer = Trainer(\r\n    model=model,\r\n    args=training_args,\r\n    train_dataset=train_dataset,\r\n    eval_dataset=eval_dataset\r\n)\r\n\r\ntrainer.train()\r\n```\r\n\r\n### PyTorch Lightning\r\n\r\n```python\r\nfrom pytorch_lightning import Trainer\r\nfrom pytorch_lightning.loggers import WandbLogger\r\nimport wandb\r\n\r\n# Create W&B logger\r\nwandb_logger = WandbLogger(\r\n    project=\"lightning-demo\",\r\n    log_model=True  # Log model checkpoints\r\n)\r\n\r\n# Use with Trainer\r\ntrainer = Trainer(\r\n    logger=wandb_logger,\r\n    max_epochs=10\r\n)\r\n\r\ntrainer.fit(model, datamodule=dm)\r\n```\r\n\r\n### Keras\u002FTensorFlow\r\n\r\n```python\r\nimport wandb\r\nfrom wandb.keras import WandbCallback\r\n\r\n# Initialize\r\nwandb.init(project=\"keras-demo\")\r\n\r\n# Add callback\r\nmodel.fit(\r\n    x_train, y_train,\r\n    validation_data=(x_val, y_val),\r\n    epochs=10,\r\n    callbacks=[WandbCallback()]  # Auto-logs metrics\r\n)\r\n```\r\n\r\n## Visualization & Analysis\r\n\r\n### Custom Charts\r\n\r\n```python\r\n# Log custom visualizations\r\nimport matplotlib.pyplot as plt\r\n\r\nfig, ax = plt.subplots()\r\nax.plot(x, y)\r\nwandb.log({\"custom_plot\": wandb.Image(fig)})\r\n\r\n# Log confusion matrix\r\nwandb.log({\"conf_mat\": wandb.plot.confusion_matrix(\r\n    probs=None,\r\n    y_true=ground_truth,\r\n    preds=predictions,\r\n    class_names=class_names\r\n)})\r\n```\r\n\r\n### Reports\r\n\r\nCreate shareable reports in W&B UI:\r\n- Combine runs, charts, and text\r\n- Markdown support\r\n- Embeddable visualizations\r\n- Team collaboration\r\n\r\n## Best Practices\r\n\r\n### 1. Organize with Tags and Groups\r\n\r\n```python\r\nwandb.init(\r\n    project=\"my-project\",\r\n    tags=[\"baseline\", \"resnet50\", \"imagenet\"],\r\n    group=\"resnet-experiments\",  # Group related runs\r\n    job_type=\"train\"             # Type of job\r\n)\r\n```\r\n\r\n### 2. Log Everything Relevant\r\n\r\n```python\r\n# Log system metrics\r\nwandb.log({\r\n    \"gpu\u002Futil\": gpu_utilization,\r\n    \"gpu\u002Fmemory\": gpu_memory_used,\r\n    \"cpu\u002Futil\": cpu_utilization\r\n})\r\n\r\n# Log code version\r\nwandb.log({\"git_commit\": git_commit_hash})\r\n\r\n# Log data splits\r\nwandb.log({\r\n    \"data\u002Ftrain_size\": len(train_dataset),\r\n    \"data\u002Fval_size\": len(val_dataset)\r\n})\r\n```\r\n\r\n### 3. Use Descriptive Names\r\n\r\n```python\r\n# ✅ Good: Descriptive run names\r\nwandb.init(\r\n    project=\"nlp-classification\",\r\n    name=\"bert-base-lr0.001-bs32-epoch10\"\r\n)\r\n\r\n# ❌ Bad: Generic names\r\nwandb.init(project=\"nlp\", name=\"run1\")\r\n```\r\n\r\n### 4. Save Important Artifacts\r\n\r\n```python\r\n# Save final model\r\nartifact = wandb.Artifact('final-model', type='model')\r\nartifact.add_file('model.pth')\r\nwandb.log_artifact(artifact)\r\n\r\n# Save predictions for analysis\r\npredictions_table = wandb.Table(\r\n    columns=[\"id\", \"input\", \"prediction\", \"ground_truth\"],\r\n    data=predictions_data\r\n)\r\nwandb.log({\"predictions\": predictions_table})\r\n```\r\n\r\n### 5. Use Offline Mode for Unstable Connections\r\n\r\n```python\r\nimport os\r\n\r\n# Enable offline mode\r\nos.environ[\"WANDB_MODE\"] = \"offline\"\r\n\r\nwandb.init(project=\"my-project\")\r\n# ... your code ...\r\n\r\n# Sync later\r\n# wandb sync \u003Crun_directory>\r\n```\r\n\r\n## Team Collaboration\r\n\r\n### Share Runs\r\n\r\n```python\r\n# Runs are automatically shareable via URL\r\nrun = wandb.init(project=\"team-project\")\r\nprint(f\"Share this URL: {run.url}\")\r\n```\r\n\r\n### Team Projects\r\n\r\n- Create team account at wandb.ai\r\n- Add team members\r\n- Set project visibility (private\u002Fpublic)\r\n- Use team-level artifacts and model registry\r\n\r\n## Pricing\r\n\r\n- **Free**: Unlimited public projects, 100GB storage\r\n- **Academic**: Free for students\u002Fresearchers\r\n- **Teams**: $50\u002Fseat\u002Fmonth, private projects, unlimited storage\r\n- **Enterprise**: Custom pricing, on-prem options\r\n\r\n## Resources\r\n\r\n- **Documentation**: https:\u002F\u002Fdocs.wandb.ai\r\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fwandb\u002Fwandb (10.5k+ stars)\r\n- **Examples**: https:\u002F\u002Fgithub.com\u002Fwandb\u002Fexamples\r\n- **Community**: https:\u002F\u002Fwandb.ai\u002Fcommunity\r\n- **Discord**: https:\u002F\u002Fwandb.me\u002Fdiscord\r\n\r\n## See Also\r\n\r\n- `references\u002Fsweeps.md` - Comprehensive hyperparameter optimization guide\r\n- `references\u002Fartifacts.md` - Data and model versioning patterns\r\n- `references\u002Fintegrations.md` - Framework-specific examples\r\n",{"name":5,"author":49,"license":15,"version":50,"metadata":51,"description":7,"dependencies":60},"Orchestra Research","1.0.0",{"hermes":52},{"tags":53},[54,55,27,30,28,29,56,26,57,58,59],"MLOps","Weights And Biases","Collaboration","PyTorch","TensorFlow","HuggingFace",[61],"wandb","main","0d1434f89f4bc6b07e9d272accd8c1013768820f","archive\u002Fskill-md-reviewed\u002Fsha256\u002Fda\u002Fdafe030deff56c6aacae3adf5c61b780ef7a97757c550df7052dc8baf7aaa9f6",0,"https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills","https:\u002F\u002Fgithub.com\u002Fzapabob","The Open University of JAPAN　2019-now\r\n\r\nTokyo University of Science　2007-2010","2026-10-26 16:29:01",{"source":8,"skillName":5,"commands":71,"prompt":81,"zipAvailable":82},[72,75,78],{"tool":73,"command":74},"npx","npx skills add zapabob\u002FSkills --skill weights-and-biases",{"tool":76,"command":77},"bunx","bunx skills add zapabob\u002FSkills --skill weights-and-biases",{"tool":79,"command":80},"pnpm","pnpm dlx skills add zapabob\u002FSkills --skill weights-and-biases","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002Fda\u002Fdafe030deff56c6aacae3adf5c61b780ef7a97757c550df7052dc8baf7aaa9f6\u002FSKILL.md",true,[],[85,121,156,182,192,209],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":102,"publishedAt":44},"01M6GJTE1GESGGF9K028Y7753E","xurl","X\u002FTwitter via xurl CLI: post, search, DM, media, v2 API.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fxurl\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[91,94,97],{"categoryNo":92,"categoryName":93,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":95,"categoryName":96,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[87,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,62,118,119,120],"openclaw","macos","cli","github","linux","windows","official","search","https","social-media","api","Media","hermes","hermes agent","twitter","social","via","post",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":138,"publishedAt":44},"01M6GJT8S1PXQ8WPXT1HSNBWH2","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwriting-plans\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[127,130,133,134,135],{"categoryNo":128,"categoryName":129,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":131,"categoryName":132,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":95,"categoryName":96,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},{"categoryNo":136,"categoryName":137,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000036","内容创作者",[139,140,141,142,104,143,107,144,108,145,146,147,148,149,150,151,152,153,154,155],"writing","writing plans","plans","design","review","workflow","documentation","tasks","development","code","planning","code-review","subagent","write","superpowers","paths","test-driven-development",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":165,"publishedAt":44},"01M6GJST0H5X7WHBJ3BZK0DVKH","whisper","OpenAI's general-purpose speech recognition model. Supports 99 languages, transcription, translation to English, and language identification. Six model sizes from tiny (39M params) to large (1550M params). Use for speech-to-text, podcast transcription, or multilingual audio processing. Best for robust, multilingual ASR.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwhisper\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[162],{"categoryNo":163,"categoryName":164,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[158,104,107,166,167,168,169,170,171,172,35,173,174,175,176,177,178,179,180,181],"openai","speech","multimodal","Transformers","ASR","Audio","text","speech recognition","use","general","multilingual","translation","english","identification","processing","Audio Processing",{"skillNo":183,"name":5,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":188,"publishedAt":44},"01M6GJSMRQ8EETZTYMG72P70EA","W&B: log ML experiments, sweeps, model registry, dashboards.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fweights-and-biases\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[187],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[24,104,43,42,108,41,39,38,189,36,190,35,25,191,32,30,29,28,27,26],"real-time","dashboards","log",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":199,"publishedAt":44},"01M6GJS19KDPRY112JTR326S06","watchers","Poll RSS, JSON APIs, and GitHub with watermark dedup.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwatchers\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[198],{"categoryNo":95,"categoryName":96,"taxonomyType":21,"taxonomyTypeDesc":22},[194,104,200,106,107,201,202,203,204,205,206,115,116,207,208],"terminal","automation","http","monitoring","cron","json","rss","devops","with",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":217,"publishedAt":44},"01M6GJRHJD2A6Q830SWF9W48BC","serving-llms-vllm","vLLM: high-throughput LLM serving, OpenAI API, quantization.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fvllm\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[215,216],{"categoryNo":92,"categoryName":93,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},[218,219,220,107,221,166,222,223,224,169,225,113,226,227,228,229,230,231,232,233],"llms","vLLM","serving llms vllm","research","openai api","tensor","Inference Serving","Production","llm serving","High Throughput","PagedAttention","Continuous Batching","Quantization","Tensor Parallelism","high-throughput","throughput"]