Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Open Source Vizier: Reliable and Flexible Black-Box Optimization.

PyPI version Continuous Integration Docs

Google AI Blog | Getting Started | Documentation | Installation | Citing and Highlights

What is Open Source (OSS) Vizier?

OSS Vizier is a Python-based service for black-box optimization and research, based on Google Vizier, one of the first hyperparameter tuning services designed to work at scale.


OSS Vizier's distributed client-server system. Animation by Tom Small.

Getting Started

As a basic example for users, below shows how to tune a simple objective using all flat search space types:

from vizier.service import clients
from vizier.service import pyvizier as vz

# Objective function to maximize.
def evaluate(w: float, x: int, y: float, z: str) -> float:
  return w**2 - y**2 + x * ord(z)

# Algorithm, search space, and metrics.
study_config = vz.StudyConfig(algorithm='DEFAULT')
study_config.search_space.root.add_float_param('w', 0.0, 5.0)
study_config.search_space.root.add_int_param('x', -2, 2)
study_config.search_space.root.add_discrete_param('y', [0.3, 7.2])
study_config.search_space.root.add_categorical_param('z', ['a', 'g', 'k'])
study_config.metric_information.append(vz.MetricInformation('metric_name', goal=vz.ObjectiveMetricGoal.MAXIMIZE))

# Setup client and begin optimization. Vizier Service will be implicitly created.
study = clients.Study.from_study_config(study_config, owner='my_name', study_id='example')
for i in range(10):
  suggestions = study.suggest(count=2)
  for suggestion in suggestions:
    params = suggestion.parameters
    objective = evaluate(params['w'], params['x'], params['y'], params['z'])
    suggestion.complete(vz.Measurement({'metric_name': objective}))

Documentation

OSS Vizier's interface consists of three main APIs:

  • User API: Allows a user to optimize their blackbox objective and optionally setup a server for distributed multi-client settings.
  • Developer API: Defines abstractions and utilities for implementing new optimization algorithms for research and to be hosted in the service.
  • Benchmarking API: A wide collection of objective functions and methods to benchmark and compare algorithms.

Additionally, it contains advanced API for:

  • Tensorflow Probability: For writing Bayesian Optimization algorithms using Tensorflow Probability and Flax.
  • PyGlove: For large-scale evolutionary experimentation and program search using OSS Vizier as a distributed backend.

Please see OSS Vizier's ReadTheDocs documentation for detailed information.

Installation

Quick start: For tuning objectives using our state-of-the-art JAX-based Bayesian Optimizer, run:

pip install google-vizier[jax]

Advanced Installation

Minimal version: To install only the core service and client APIs from requirements.txt, run:

pip install google-vizier

Full installation: To support all algorithms and benchmarks, run:

pip install google-vizier[all]

Specific installation: If you only need a specific part "X" of OSS Vizier, run:

pip install google-vizier[X]

which installs add-ons from requirements-X.txt. Possible options:

  • requirements-jax.txt: Jax libraries shared by both algorithms and benchmarks.
  • requirements-tf.txt: Tensorflow libraries used by benchmarks.
  • requirements-algorithms.txt: Additional repositories (e.g. EvoJAX) for algorithms.
  • requirements-benchmarks.txt: Additional repositories (e.g. NASBENCH-201) for benchmarks.
  • requirements-test.txt: Libraries needed for testing code.

Check if all unit tests work by running run_tests.sh after a full installation. OSS Vizier requires Python 3.10+, while client-only packages require Python 3.8+.

Citing and Highlights

Citing Vizier: If you found this code useful, please consider citing the OSS Vizier paper as well as the Google Vizier paper.

Highlights: We track notable users and media attention - let us know if OSS Vizier was helpful for your work.

Thanks!

@inproceedings{oss_vizier,
  author    = {Xingyou Song and
               Sagi Perel and
               Chansoo Lee and
               Greg Kochanski and
               Daniel Golovin},
  title     = {Open Source Vizier: Distributed Infrastructure and API for Reliable and Flexible Black-box Optimization},
  booktitle = {Automated Machine Learning Conference, Systems Track (AutoML-Conf Systems)},
  year      = {2022},
}
@inproceedings{google_vizier,
  author    = {Daniel Golovin and
               Benjamin Solnik and
               Subhodeep Moitra and
               Greg Kochanski and
               John Karro and
               D. Sculley},
  title     = {Google Vizier: {A} Service for Black-Box Optimization},
  booktitle = {Proceedings of the 23rd {ACM} {SIGKDD} International Conference on
               Knowledge Discovery and Data Mining, Halifax, NS, Canada, August 13
               - 17, 2017},
  pages     = {1487--1495},
  publisher = {{ACM}},
  year      = {2017},
  url       = {https://doi.org/10.1145/3097983.3098043},
  doi       = {10.1145/3097983.3098043},
}

Metadata

Release files for google-vizier-dev 0.1.16.dev20240418212235

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

Source distribution (sdist)

Source distribution for google-vizier-dev 0.1.16.dev20240418212235
File Size Uploaded
google-vizier-dev-0.1.16.dev20240418212235.tar.gz 499.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for google-vizier-dev 0.1.16.dev20240418212235
File Interpreter ABI Platform
google_vizier_dev-0.1.16.dev20240418212235-py3-none-any.whl Python 3 none any Details

Total release size: 1.3 MB

Release files / google-vizier-dev-0.1.16.dev20240418212235.tar.gz

Download URL google-vizier-dev-0.1.16.dev20240418212235.tar.gz
Size 499.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c3083e2800a6869ccc2e34ce80f84a972d655627074e5a5a48679342c8773561
BLAKE2b-256 checksum
How to use checksums
ebb9a9cf8111022254b0c7b71cad9bfad459c1ceb595c9326f0373db3d6b200e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.10.14

Release files / google_vizier_dev-0.1.16.dev20240418212235-py3-none-any.whl

Download URL google_vizier_dev-0.1.16.dev20240418212235-py3-none-any.whl
Size 774.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d65343a855195274e3eea5596e0896b3da575e32625b7bf493858d58083b51e7
BLAKE2b-256 checksum
How to use checksums
e11254451020d3d52757211cf782d509c1931254337c24ae0de72d9ff84cced5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.10.14

Release history Release notifications | RSS feed

This release
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