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