Change8

v0.28.2

Breaking Changes
📦 weights-biasesView on GitHub →
2 breaking6 features🐛 20 fixes1 deprecations🔧 30 symbols

Summary

This release introduces gzip compression for filestream requests and enhances the `wandb login` command with default credential verification. It also includes numerous bug fixes and improvements to API operations and TensorBoard integration.

⚠️ Breaking Changes

  • The `wandb sync --clean` command now exits with code 1. Use `wandb clean` instead.
  • Releases no longer include 32-bit Windows (`win32`) wheels. Users on Windows must use a 64-bit Python installation.

Migration Steps

  1. Replace `wandb sync --clean` with `wandb clean`.
  2. If using 32-bit Windows Python, upgrade to a 64-bit Python installation.

✨ New Features

  • Added support for gzip compression of filestream requests (opt-in, requires server support). Set `x_file_stream_no_gzip=False` in `wandb.Settings` to enable.
  • Added a `--term-timeout` flag to `wandb agent`.
  • Added `run.sync_dir`.
  • `wandb login` now verifies credentials by default. This can be disabled with `wandb login --no-verify` or programmatically with `wandb.login(verify=False)`.
  • The `global_step` metric created when syncing TensorBoard files is no longer prefixed, making it easier to compare training and validation metrics.
  • The TensorBoard integration now produces fewer W&B steps by merging data for the same `global_step` into one W&B step when possible.

🐛 Bug Fixes

  • Registry search `registries(order=...).collections(order=...).versions()` now returns artifact versions in registry and/or collection order.
  • macOS x86_64 wheels now contain x86_64 builds of the `wandb-xpu` binary and the Rust parquet library, fixing issues on Intel Macs.
  • `wandb.login(verify=True)` and `wandb login --verify` now verify federated identity (identity token) credentials.
  • `wandb login` and `wandb verify` no longer update the system host settings when failing to login.
  • `wandb verify` now reports a failed check instead of crashing when an operation still fails after retries.
  • Calling Sweeps agent with a custom `WANDB_DIR` will now respect it when dumping JSON output.
  • Fixed `wandb.Api(overrides={\"base_url\": ...})` failing to authenticate with federated identity (identity token) credentials when the specified server was not the default one, unless `WANDB_BASE_URL` was also set.
  • When using federated identity, the identity token file is now re-read for each access token exchange, ensuring short-lived identity tokens keep working.
  • When using federated identity, requests now fail immediately with the server's error message when the server rejects the identity token exchange.
  • `wandb login` validates api keys prior to saving to the `.netrc` file.
  • `wandb sync` no longer hangs on a run that set its name, tags, or notes after starting.
  • `wandb login` no longer removes or corrupts credentials belonging to other machines in your `.netrc` file.
  • Log messages captured from Python loggers no longer add blank lines to a run's logs.
  • `del run.summary[key]` now removes metrics that were logged as nested values.
  • Debug logs no longer contain CoreWeave cluster credentials.
  • `wandb docker` and `wandb docker-run` no longer pass your API key on the command line.
  • `wandb.init()` now reports the error it was retrying when it times out, instead of a generic timeout message. The `init_timeout` setting now also bounds the backend's retries during run initialization.
  • `wandb.Api().create_run_queue()`, `wandb.Api().create_custom_chart()`, and `wandb.Api().upsert_run_queue()` now raise `WandbApiFailedError` when the operation fails on the backend.
  • Paginated artifact and registry query methods now perform client-side validation of pagination arguments before attempting to fetch any results.
  • Ordered registry search now scopes per-registry collection and version queries to the current registry's internal id for more reliable pagination and filtering.

Affected Symbols

⚡ Deprecations

  • `wandb sync --sync-tensorboard` is deprecated and will be removed in a future release.