Run.config as the inputs to a job, but the Launch SDK provides a function to control select keys in the run config or to specify JSON or YAML files as inputs.
Launch SDK functions require
wandb-core. See the wandb-core README for more information.Reconfigure the Run object
The Run object returned by wandb.init in a job can be reconfigured, by default. The Launch SDK provides a way to customize what parts of the Run.config object can be reconfigured when launching the job.
launch.manage_wandb_config configures the job to accept input values for the Run.config object. The optional include and exclude options take path prefixes within the nested config object. This can be useful if, for example, a job uses a library whose options you don’t want to expose to end users.
If include prefixes are provided, only paths within the config that match an include prefix will accept input values. If exclude prefixes are provided, no paths that match the exclude list will be filtered out of the input values. If a path matches both an include and an exclude prefix, the exclude prefix will take precedence.
In the preceding example, the path ["trainer.private"] will filter out the private key from the trainer object, and the path ["trainer"] will filter out all keys not under the trainer object.
Use a
\-escaped . to filter out keys with a . in their name.For example, r"trainer\.private" filters out the trainer.private key rather than the private key under the trainer object.Note that the r prefix above denotes a raw string.trainer parameters.
Access run config inputs
Jobs launched with run config inputs can access the input values through theRun.config. The Run returned by wandb.init in the job code will have the input values automatically set. Use
Reconfigure a file
The Launch SDK also provides a way to manage input values stored in config files in the job code. This is a common pattern in many deep learning and large language model use cases, like this torchtune example or this Axolotl config).Sweeps on Launch does not support the use of config file inputs as sweep parameters. Sweep parameters must be controlled through the
Run.config object.launch.manage_config_file function can be used to add a config file as an input to the Launch job, giving you access to edit values within the config file when launching the job.
By default, no run config inputs will be captured if launch.manage_config_file is used. Calling launch.manage_wandb_config overrides this behavior.
Consider the following example:
config.yaml:
launch.manage_config_file will add the config.yaml file as an input to the job, making it reconfigurable when launching from the W&B CLI or UI.
The include and exclude keyword arugments may be used to filter the acceptable input keys for the config file in the same way as launch.manage_wandb_config.
Access config file inputs
Whenlaunch.manage_config_file is called in a run created by Launch, launch patches the contents of the config file with the input values. The patched config file is available in the job environment.
Call
launch.manage_config_file before reading the config file in the job code to ensure input values are used.Customize a job’s launch drawer UI
Defining a schema for a job’s inputs allows you to create a custom UI for launching the job. To define a job’s schema, include it in the call tolaunch.manage_wandb_config or launch.manage_config_file. The schema can either be a python dict in the form of a JSON Schema or a Pydantic model class.
Job input schemas are not used to validate inputs. They are only used to define the UI in the launch drawer.
- JSON schema
- Pydantic model
The following example shows a schema with these properties:In general, the following JSON Schema attributes are supported:
seed, an integertrainer, a dictionary with some keys specified:trainer.learning_rate, a float that must be greater than zerotrainer.batch_size, an integer that must be either 16, 64, or 256trainer.dataset, a string that must be eithercifar10orcifar100
| Attribute | Required | Notes |
|---|---|---|
type | Yes | Must be one of number, integer, string, or object |
title | No | Overrides the property’s display name |
description | No | Gives the property helper text |
enum | No | Creates a dropdown select instead of a freeform text entry |
minimum | No | Allowed only if type is number or integer |
maximum | No | Allowed only if type is number or integer |
exclusiveMinimum | No | Allowed only if type is number or integer |
exclusiveMaximum | No | Allowed only if type is number or integer |
properties | No | If type is object, used to define nested configurations |
