[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M75CHDWB013P2JKZKHKJ9EGC":3,"skill-same:01M75CHDWB013P2JKZKHKJ9EGC":80},{"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":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":14,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M75CHDWB013P2JKZKHKJ9EGC","weights-and-biases",null,"W&B: log ML experiments, sweeps, model registry, dashboards.","osman-jalloh-lab\u002Fmyos","osman-jalloh-lab","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F197696150?v=4","01M75CAASTD7R8BCGCDJCYFAZG","OSMAN JALLOH","01M75CAATE5G8833499GV57VW0",0,"MIT","https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Fmlops__evaluation__weights-and-biases\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: weights-and-biases\ndescription: \"W&B: log ML experiments, sweeps, model registry, dashboards.\"\nversion: 1.0.0\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=your_api_key_here\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',\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', '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.keras import WandbCallback\n\n# Initialize\nwandb.init(project=\"keras-demo\")\n\n# Add callback\nmodel.fit(\n    x_train, y_train,\n    validation_data=(x_val, y_val),\n    epochs=10,\n    callbacks=[WandbCallback()]  # Auto-logs metrics\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\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=your_api_key_here\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',\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', '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.keras import WandbCallback\n\n# Initialize\nwandb.init(project=\"keras-demo\")\n\n# Add callback\nmodel.fit(\n    x_train, y_train,\n    validation_data=(x_val, y_val),\n    epochs=10,\n    callbacks=[WandbCallback()]  # Auto-logs metrics\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\n\n",{"name":5,"author":24,"license":15,"version":25,"metadata":26,"platforms":40,"description":7,"dependencies":44},"Orchestra Research","1.0.0",{"hermes":27},{"tags":28},[29,30,31,32,33,34,35,36,37,38,39],"MLOps","Weights And Biases","WandB","Experiment Tracking","Hyperparameter Tuning","Model Registry","Collaboration","Real-Time Visualization","PyTorch","TensorFlow","HuggingFace",[41,42,43],"linux","macos","windows",[45],"wandb","main","c2b5af98407b1ad3ee4c27fc5bbb56ce09328af6","skills\u002Fmlops__evaluation__weights-and-biases","https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos","https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab","2026-11-04 05:17:57",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add osman-jalloh-lab\u002Fmyos --skill weights-and-biases",{"tool":58,"command":59},"bunx","bunx skills add osman-jalloh-lab\u002Fmyos --skill weights-and-biases",{"tool":61,"command":62},"pnpm","pnpm dlx skills add osman-jalloh-lab\u002Fmyos --skill weights-and-biases","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Fmlops__evaluation__weights-and-biases\u002FSKILL.md",true,[66,72,76],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fartifacts.md","REFERENCE","参考文档",13425,"https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Fmlops__evaluation__weights-and-biases\u002Freferences\u002Fartifacts.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fintegrations.md",16219,"https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Fmlops__evaluation__weights-and-biases\u002Freferences\u002Fintegrations.md",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fsweeps.md",17675,"https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Fmlops__evaluation__weights-and-biases\u002Freferences\u002Fsweeps.md",[81,88,95,102,109,116],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":19},"01M75CPVE5M6GXZ39PW5CPKCPK","xurl","X\u002FTwitter via xurl CLI: post, search, DM, media, v2 API.","https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Fxurl\u002FSKILL.md",[],[],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":19},"01M75CPQ57MF6AM46MXYSGKJ6W","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[],[],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":19},"01M75CPFNZFXN7FT6NTF21BX5M","touchdesigner-mcp","Control a running TouchDesigner instance via twozero MCP — create operators, set parameters, wire connections, execute Python, build real-time visuals. 36 native tools.","https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Ftouchdesigner-mcp\u002FSKILL.md",[],[],{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":19},"01M75CPCKM3C9SN622Z7K5DZX2","test-driven-development","TDD: enforce RED-GREEN-REFACTOR, tests before code.","https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[],[],{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":19},"01M75CP9C4EWMY810CY1SW231T","teams-meeting-pipeline","Operate the Teams meeting summary pipeline via Hermes CLI — summarize meetings, inspect pipeline status, replay jobs, manage Microsoft Graph subscriptions.","https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Fteams-meeting-pipeline\u002FSKILL.md",[],[],{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":19},"01M75CP4K49H7QZQ0Z7HAXKQJR","systematic-debugging","4-phase root cause debugging: understand bugs before fixing.","https:\u002F\u002Fgithub.com\u002Fosman-jalloh-lab\u002Fmyos\u002Fblob\u002Fmain\u002Fskills\u002Fsystematic-debugging\u002FSKILL.md",[],[]]