This feature requires
python>=3.8.Import data from MLFlow
Migrate your existing MLFlow tracking data to W&B so that you can continue analyzing past experiments alongside new ones. W&B supports importing data from MLFlow, including experiments, runs, artifacts, metrics, and other metadata. Install the importer dependencies, which provide the MLFlow integration:importer.collect_runs() collects all runs from the MLFlow server. To upload a specific subset instead, construct your own runs iterable and pass it to the importer:
If you import from Databricks MLFlow, you might need to configure the Databricks CLI first.Set
mlflow-tracking-uri="databricks" in the previous step.artifacts=False:
Namespace:
Export data
Use the Public API to export or update data that you have saved to W&B. Before using this API, log data from your script. For more details, see the Quickstart. Common use cases for the Public API include:- Export data: Download a dataframe for custom analysis in a Jupyter Notebook. After you have explored the data, you can sync your findings by creating a new analysis run and logging results, for example:
wandb.init(job_type="analysis"). - Update existing runs: Update the data logged in association with a W&B run. For example, you might want to update the config of a set of runs to include additional information, like the architecture or a hyperparameter that wasn’t originally logged.
Create an API key
The Public API requires an API key to authenticate requests from your machine to W&B. To create an API key, select the Personal API key or Service Account API key tab for details.- Personal API key
- Service account API key
To create a personal API key owned by your user ID:
- Log in to W&B, click your user profile icon, then click User Settings.
- Click Create new API key.
- Provide a descriptive name for your API key.
- Click Create.
- Copy the displayed API key immediately and store it securely.
Store and handle API keys securely
API keys provide access to your W&B account and should be protected like passwords. Follow these best practices:Recommended storage methods
- Secrets manager: Use a dedicated secrets management system such as AWS Secrets Manager, HashiCorp Vault, Azure Key Vault, or Google Secret Manager.
- Password manager: Use a reputable password manager application.
- OS-level keychains: Store keys in macOS Keychain, Windows Credential Manager, or Linux secret service. Not suggested for production.
What to avoid
- Never commit API keys to version control systems such as Git.
- Do not store API keys in plain text configuration files.
- Do not pass API keys on the command line, because they will be visible in the output of OS commands like
ps. - Avoid sharing API keys through email, chat, or other unencrypted channels.
- Do not hard-code API keys in your source code.
Environment variables
When using API keys in your code, pass them through environment variables:SDK version compatibility
New API keys are longer than legacy keys. When authenticating with older versions of thewandb or weave SDKs, you may encounter an API key length error.
Solution: Update to a newer SDK version:
-
wandbSDK v0.22.3+ -
weaveSDK v0.52.17+
WANDB_API_KEY environment variable as a workaround.
Find the run path
Most Public API calls identify a run by its run path, which has the form<entity>/<project>/<run_id>. To find the run path, open a run page in the app UI and click the Overview tab.
Export run data
Download data from a finished or active run so that you can analyze it outside of W&B. Common usage includes downloading a dataframe for custom analysis in a Jupyter notebook, or using custom logic in an automated environment.| Attribute | Meaning |
|---|---|
run.config | A dictionary of the run’s configuration information, such as the hyperparameters for a training run or the preprocessing methods for a run that creates a dataset Artifact. Think of these as the run’s inputs. |
run.history() | A list of dictionaries meant to store values that change while the model is training such as loss. The command run.log() appends to this object. |
run.summary | A dictionary of information that summarizes the run’s results. This can be scalars like accuracy and loss, or large files. By default, run.log() sets the summary to the final value of a logged time series. The contents of the summary can also be set directly. Think of the summary as the run’s outputs. |
api.flush() to get updated values.
Run attributes
The following code snippet shows how to create a run, log some data, and then access the run’s attributes:run.config
run.summary
Sample size
The default history method samples the metrics to a fixed number of samples (the default is 500, which you can change with thesamples argument). To export all of the data on a large run, use the run.scan_history() method. For more details, see the API Reference.
Query multiple runs
Use the following examples to fetch and filter multiple runs at once, which is useful when you want to compare runs in a project or aggregate results across an experiment.- DataFrame and CSVs
- MongoDB Style
This example script finds a project and outputs a CSV of runs with name, configs, and summary stats. Replace
<entity> and <project> with your W&B entity and the name of your project, respectively.api.runs returns a Runs object that is iterable and acts like a list. By default, the object loads 50 runs at a time in sequence as required. To change the number loaded per page, use the per_page keyword argument.
api.runs also accepts an order keyword argument. The default order is -created_at. To order results in ascending order, specify +created_at. You can also sort by config or summary values. For example, summary.val_acc or config.experiment_name.
Error handling
If errors occur while communicating with W&B servers, W&B raises awandb.CommError. To introspect the original exception, use the exc attribute.
Get the latest git commit through the API
To see the latest git commit in the UI, click a run and then click the Overview tab on the run page. The commit is also in the filewandb-metadata.json. Using the public API, get the git hash with run.commit.
Get a run’s name and ID during a run
After callingwandb.init(), you can access the random run ID or the human-readable run name from your script as follows:
- Unique run ID (8-character hash):
run.id - Random run name (human readable):
run.name
- Run ID: Leave it as the generated hash. The run ID must be unique across runs in your project.
- Run name: Use something short, readable, and preferably unique so that you can tell the difference between lines on your charts.
- Run notes: A good place for a short description of what you’re doing in your run. Set this with
wandb.init(notes="your notes here"). - Run tags: Track things dynamically in run tags, and use filters in the UI to filter your table down to only the runs you care about. Set tags from your script and then edit them in the UI, both in the runs table and the Overview tab of the run page. For details, see Tag runs.
Public API examples
The following sections show common patterns for working with the Public API, including reading and filtering runs, updating run data, and downloading files.Export data to visualize in matplotlib or seaborn
For common export patterns, see the API examples. To download a CSV from your browser, click the download button on a custom plot or on the expanded runs table.Read metrics from a run
This example outputs timestamp and accuracy saved withrun.log({"accuracy": acc}) for a run saved to "<entity>/<project>/<run_id>".
Filter runs
To filter runs, use the MongoDB Query Language.Date
Read specific metrics from a run
To retrieve specific metrics from a run, use thekeys argument. The default number of samples when using run.history() is 500. Logged steps that don’t include a specific metric appear in the output dataframe as NaN. The keys argument causes the API to sample steps that include the listed metric keys more frequently.
Compare two runs
This example outputs the config parameters that differ betweenrun1 and run2.
Update metrics for a run, after the run has finished
This example sets the accuracy of a previous run to0.9. It also modifies the accuracy histogram of a previous run to be the histogram of numpy_array.
Rename a metric in a completed run
This example renames a summary column in your tables.Renaming a column only applies to tables. Charts still refer to metrics by their original names.
Update config for an existing run
This example updates one of your configuration settings.Export system resource consumptions to a CSV file
The following snippet finds the system resource consumptions and saves them to a CSV.Get unsampled metric data
When you retrieve data from history, by default it’s sampled to 500 points. To get all the logged data points, userun.scan_history(). The following example downloads all the loss data points logged in history.
Get paginated data from history
If the backend fetches metrics slowly or API requests time out, lower the page size inscan_history so that individual requests don’t time out. The default page size is 500. Experiment with different sizes to see what works best:
Export metrics from all runs in a project to a CSV file
This script downloads the runs in a project and produces a dataframe and a CSV of runs including their names, configs, and summary stats. Replace<entity> and <project> with your W&B entity and the name of your project, respectively.
Get the starting time for a run
This code snippet retrieves the time at which the run was created.Upload files to a finished run
The following code snippet uploads a selected file to a finished run.Download a file from a run
This finds the file “model-best.h5” associated with run ID uxte44z7 in the cifar project and saves it locally.Download all files from a run
This finds all files associated with a run and saves them locally.Get runs from a specific sweep
This snippet downloads all the runs associated with a particular sweep.Get the best run from a sweep
The following snippet gets the best run from a given sweep.best_run is the run with the best metric as defined by the metric parameter in the sweep config.
Download the best model file from a sweep
This snippet downloads the model file with the highest validation accuracy from a sweep with runs that saved model files tomodel.h5.