[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FC7QP32SF85Q49H8SDFHYY":3,"skill-same:01M6FC7QP32SF85Q49H8SDFHYY":99},{"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":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":62,"commitSha":63,"skillDirectory":64,"forksCount":65,"repositoryHtmlUrl":66,"repositoryHomepageUrl":6,"ownerHtmlUrl":67,"ownerBlogUrl":68,"ownerDescription":69,"updatedAt":70,"install":71,"resources":84},"01M6FC7QP32SF85Q49H8SDFHYY","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","Dicklesworthstone\u002Fpi_agent_rust","Dicklesworthstone","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F35050222?v=4","01M6CG26AR942CSVMN1M5E3DSE","Jeff Emanuel","01M6CG26EPP71PSHW1VDS71121",1981,"MIT","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-weights-and-biases\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,44,45],"weights and biases","automatic","visualize","track","Real-Time Visualization","WandB","Hyperparameter Tuning","Model Registry","Experiment Tracking","platform","time","optimize","experiment","model","tuning","logging","registry","visualization","training","pytorch","experiments","tensorflow","2026-11-10 10:12:30",false,"---\nname: weights-and-biases\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\nversion: 1.0.0\nauthor: Orchestra Research\nlicense: MIT\ntags: [MLOps, Weights And Biases, WandB, Experiment Tracking, Hyperparameter Tuning, Model Registry, Collaboration, Real-Time Visualization, PyTorch, TensorFlow, HuggingFace]\ndependencies: [wandb]\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,"tags":51,"author":58,"license":15,"version":59,"description":7,"dependencies":60},[52,53,29,32,30,31,54,28,55,56,57],"MLOps","Weights And Biases","Collaboration","PyTorch","TensorFlow","HuggingFace","Orchestra Research","1.0.0",[61],"wandb","main","90b50ed0778745a80fd5bfb13b1843d45b9e82f7","tests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-weights-and-biases",231,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust","https:\u002F\u002Fgithub.com\u002FDicklesworthstone","https:\u002F\u002Fwww.jeffreyemanuel.com\u002F","Building in NY","2026-11-12 03:15:57",{"source":8,"skillName":5,"commands":72,"prompt":82,"zipAvailable":83},[73,76,79],{"tool":74,"command":75},"npx","npx skills add Dicklesworthstone\u002Fpi_agent_rust --skill weights-and-biases",{"tool":77,"command":78},"bunx","bunx skills add Dicklesworthstone\u002Fpi_agent_rust --skill weights-and-biases",{"tool":80,"command":81},"pnpm","pnpm dlx skills add Dicklesworthstone\u002Fpi_agent_rust --skill weights-and-biases","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-weights-and-biases\u002FSKILL.md",true,[85,91,95],{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fartifacts.md","REFERENCE","参考文档",13425,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-weights-and-biases\u002Freferences\u002Fartifacts.md",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fintegrations.md",16219,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-weights-and-biases\u002Freferences\u002Fintegrations.md",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fsweeps.md",17675,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-weights-and-biases\u002Freferences\u002Fsweeps.md",[100,139,164,191,218,240],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":104,"licenseFileUrl":105,"sourceHtmlUrl":106,"categories":107,"keywords":111,"publishedAt":46},"01M6FEGPPK0ZTKCCM0R3E3KS33","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[108],{"categoryNo":109,"categoryName":110,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138],"web artifacts builder","web","artifacts","artifacts builder","builder","frontend","css","components","react","component","routing","state management","state","shadcn","file","ui","Tools","Tailwind","use","html","single-file","simple","ui components","multi","for","jsx","suite",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":104,"licenseFileUrl":143,"sourceHtmlUrl":144,"categories":145,"keywords":150,"publishedAt":46},"01M6FEE9VTK1W4GY21AKREJXRG","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[146,149],{"categoryNo":147,"categoryName":148,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":109,"categoryName":110,"taxonomyType":21,"taxonomyTypeDesc":22},[151,152,153,117,154,155,113,156,157,158,127,159,160,161,162,163,136],"testing","webapp testing","webapp","screenshots","playwright","debugging","toolkit","browser","logs","applications","behavior","local","with",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":168,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":46},"01M6FE20F7ZTQBFWKF4MPJ2SBX","neuropixels-analysis","Neuropixels neural recording analysis. Load SpikeGLX\u002FOpenEphys data, preprocess, motion correction, Kilosort4 spike sorting, quality metrics, Allen\u002FIBL curation, AI-assisted visual analysis, for Neuropixels 1.0\u002F2.0 extracellular electrophysiology. Use when working with neural recordings, spike sorting, extracellular electrophysiology, or when the user mentions Neuropixels, SpikeGLX, Open Ephys, Kilosort, quality metrics, or unit curation.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fneuropixels-analysis\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fneuropixels-analysis\u002FSKILL.md",[],[172,173,174,175,176,177,178,179,130,180,181,182,183,184,185,186,163,187,188,189,136,190],"analysis","neuropixels analysis","spike","metrics","data","open","quality","user","recordings","Neural","motion","visual","quality metrics","unit","sorting","curation","recording","load","when",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":104,"licenseFileUrl":195,"sourceHtmlUrl":196,"categories":197,"keywords":201,"publishedAt":46},"01M6FDP0PDK6F1GGX395C7625Z","skill-creator","Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fskill-creator\u002FSKILL.md",[198],{"categoryNo":199,"categoryName":200,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[202,203,204,205,206,207,208,209,210,211,212,213,214,215,163,136,216,190,217],"skill creator","creator","workflows","create","update","capabilities","knowledge","tool","integrations","specialized","guide","new skill","existing skill","users","Existing","new",{"skillNo":219,"name":220,"nameZh":6,"description":221,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":222,"sourceHtmlUrl":223,"categories":224,"keywords":226,"publishedAt":46},"01M6FDM8Y7VK7NYG9SM7QPA3PW","notebooklm","Use this skill to query your Google NotebookLM notebooks directly from Claude Code for source-grounded, citation-backed answers from Gemini. Browser automation, library management, persistent auth. Drastically reduced hallucinations through document-only responses.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fnotebooklm\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fnotebooklm\u002FSKILL.md",[225],{"categoryNo":199,"categoryName":200,"taxonomyType":21,"taxonomyTypeDesc":22},[220,227,228,229,230,231,232,158,233,234,130,235,236,237,238,136,239],"google","browser automation","gemini","automation","auth","code","library","management","only","document","query","Citation","source",{"skillNo":241,"name":242,"nameZh":6,"description":243,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":104,"licenseFileUrl":244,"sourceHtmlUrl":245,"categories":246,"keywords":253,"publishedAt":46},"01M6FDHPXE10J3XGTCH5HBHS1M","slack-gif-creator","Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like \"make me a GIF of X doing Y for Slack.\"","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fslack-gif-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fslack-gif-creator\u002FSKILL.md",[247,250],{"categoryNo":248,"categoryName":249,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":251,"categoryName":252,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[254,255,256,203,257,128,258,259,208,130,260,215,261,262,263,136,264,190],"slack gif creator","slack","gif","validation","constraints","Animation","me","make","Utilities","concepts","request"]