Skip to main content

Weights & Biases Weights & Biases

Sweeps: Hyperparameter Optimization Engine

This repo contains the routines that generate hyperparameter sweep suggestions in the W&B backend and client local controller.

Issues are not enabled in this repository. Please open issues related to sweeps in the wandb client library github issues page.

Installation

To install:

pip install sweeps

Examples

Get next run in a sweep.

Requires two arguments, config, the config that defines the sweep, and runs, the other runs in the sweep

config:

{
    "metric": {"name": "loss", "goal": "minimize"},
    "method": "bayes",
    "parameters": {
        "v1": {"min": 1, "max": 10},
        "v2": {"min": 1.0, "max": 10.0},
    },
}

runs:

[
    SweepRun(
        name="b",
        state=RunState.finished,
        history=[
            {"loss": 5.0},
        ],
        config={"v1": {"value": 7}, "v2": {"value": 6}},
        summary_metrics={"zloss": 1.2},
    ),
    SweepRun(
        name="b2",
        state=RunState.finished,
        config={"v1": {"value": 1}, "v2": {"value": 8}},
        summary_metrics={"loss": 52.0},
        history=[],
    )
]

Codepath:

suggestion = next_run(config, runs)

next_run:

  • validates that sweep config conforms to the jsonschema in config/schema.json, if not, it raises a ValidationError
  • parses the config file and determines the method that it should use to find the next run (in this case bayes_search_next_run)
  • calls bayes_search_next_run(config, runs) and returns the suggested SweepRun

Return list of runs to stop in a sweep.

Requires two arguments, config, the config that defines the sweep, and runs, the other runs in the sweep

config:

{
    "method": "grid",
    "metric": {"name": "loss", "goal": "minimize"},
    "early_terminate": {
        "type": "hyperband",
        "max_iter": 5,
        "eta": 2,
        "s": 2,
    },
    "parameters": {"a": {"values": [1, 2, 3]}},
}

runs:

[
    SweepRun(
        name="a",
        state=RunState.finished,  # This is already stopped
        history=[
            {"loss": 10},
            {"loss": 9},
        ],
    ),
    SweepRun(
        name="b",
        state=RunState.running,  # This should be stopped
        history=[
            {"loss": 10},
            {"loss": 10},
        ],
    ),
    SweepRun(
        name="c",
        state=RunState.running,  # This passes band 1 but not band 2
        history=[
            {"loss": 10},
            {"loss": 8},
            {"loss": 8},
        ],
    ),
    SweepRun(
        name="d",
        state=RunState.running,
        history=[
            {"loss": 10},
            {"loss": 7},
            {"loss": 7},
        ],
    ),
    SweepRun(
        name="e",
        state=RunState.finished,
        history=[
            {"loss": 10},
            {"loss": 6},
            {"loss": 6},
        ],
    ),
]

Codepath:

to_stop = stop_runs(config, runs)

stop_runs:

  • validates that sweep config conforms to the jsonschema in config/schema.json, if not, it raises a ValidationError
  • parses the config file and determines the method that it should use to early terminate runs (in this case hyperband_stop_runs)
  • calls hyperband_stop_runs(config, runs) and returns the SweepRuns to stop

Testing

Tests are run using tox, the makefile defines convenience commands for short and long tests:

make test-short
make test-full

Contributing

Review the Contributing Instructions

Install the development requirements:

pip install -r requirements.dev.txt

Install the pre-commit hooks:

pre-commit install .

Run formatting and tests:

make format
make test

Metadata

Release files for sweeps 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sweeps 0.2.0
File Size Uploaded
sweeps-0.2.0.tar.gz 26.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sweeps 0.2.0
File Interpreter ABI Platform
sweeps-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 54.4 kB

Release files / sweeps-0.2.0.tar.gz

Download URL sweeps-0.2.0.tar.gz
Size 26.0 kB
Tags Source
SHA-256 checksum
How to use checksums
bea18c72c09ad71254bd4e20f46c4b936ac629750e660c8cdbeebde13239065c
BLAKE2b-256 checksum
How to use checksums
fbeb1b8153f71e34b7753b0094e7ccd6f8300a40642f50b7c8b600af93153ed2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.9

Release files / sweeps-0.2.0-py3-none-any.whl

Download URL sweeps-0.2.0-py3-none-any.whl
Size 28.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f69f82ee3aabae84db08c334338f5b6cb20901d6f17bee5ae06a17020b112c9
BLAKE2b-256 checksum
How to use checksums
75aecf8e8e31026fff986a9efabef86bf401435818b60f5704ae8b413695fc6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.9

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page