Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
105 lines (79 sloc) 2.56 KB
description
Run sweeps from Jupyter notebooks

Sweep from Jupyter Notebook

Initialize a sweep

import wandb

sweep_config = {
  "name": "My Sweep",
  "method": "grid",
  "parameters": {
        "parameter1": {
            "values": [1, 2, 3]
        }
    }
}

sweep_id = wandb.sweep(sweep_config)

{% hint style="info" %} Use the following methods in order to specify the entity or project for the sweep:

  • Arguments to wandb.sweep() For example: wandb.sweep(sweep_config, entity="user", project="my_project")
  • Environment Variables WANDB_ENTITY and WANDB_PROJECT
  • Command Line Interface using the wandb init command {% endhint %}

Run an agent

When running an agent from python, the agent runs a specified function instead of using the program key from the sweep configuration file.

import wandb
import time

def train():
    run = wandb.init()
    print("config:", dict(run.config))
    for epoch in range(35):
        print("running", epoch)
        wandb.log({"metric": run.config.param1, "epoch": epoch})
        time.sleep(1)

wandb.agent(sweep_id, function=train)

Quick overview: Run in colab

Complete walkthrough of using sweeps in a project: Run in colab

Run a local controller

If you want to develop your own parameter search algorithms you can run your controller from python.

The simplest way to run a controller:

sweep = wandb.controller(sweep_id)
sweep.run()

If you want more control of the controller loop:

import wandb
sweep = wandb.controller(sweep_id)
while not sweep.done():
    sweep.print_status()
    sweep.step()
    time.sleep(5)

Or even more control over the parameters being served:

import wandb
sweep = wandb.controller(sweep_id)
while not sweep.done():
    params = sweep.search()
    sweep.schedule(params)
    sweep.print_status()

If you want to specify your sweep entirely with code you can do something like this:

import wandb
from wandb.sweeps import GridSearch,RandomSearch,BayesianSearch
from wandb.sweeps import HyperbandEarlyTerminate

sweep = wandb.controller()
sweep.configure_search(GridSearch)
sweep.configure_program('train-dummy.py')
sweep.configure_stopping(EnvelopeEarlyTerminate)
sweep.configure_controller(type="local")
sweep.configure_parameter('param1', value=3)
sweep.create()
sweep.run()
You can’t perform that action at this time.