Skip to main content

Open Source Vizier: Distributed service framework for blackbox optimization and research.

Project description

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 installation: 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.

Developer installation: To install up to the latest commit, run:

pip install google-vizier-dev[X]

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: Please consider citing the appropriate paper(s): Algorithm, OSS Package, and Google System if you found any of them useful.

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

Thanks!

@article{gaussian_process_bandit,
  author       = {Xingyou Song and
                  Qiuyi Zhang and
                  Chansoo Lee and
                  Emily Fertig and
                  Tzu-Kuo Huang and
                  Lior Belenki and
                  Greg Kochanski and
                  Setareh Ariafar and
                  Srinivas Vasudevan and
                  Sagi Perel and
                  Daniel Golovin},
  title        = {The Vizier Gaussian Process Bandit Algorithm},
  journal      = {Google DeepMind Technical Report},
  year         = {2024},
  eprinttype    = {arXiv},
  eprint       = {2408.11527},
}

@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},
}

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

google_vizier_dev-0.1.24.dev20251010164819.tar.gz (520.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file google_vizier_dev-0.1.24.dev20251010164819.tar.gz.

File metadata

File hashes

Hashes for google_vizier_dev-0.1.24.dev20251010164819.tar.gz
Algorithm Hash digest
SHA256 f16e304853032cd66ab37461894230502431649661d7d1f9fab6f5d5ba1a0473
MD5 55432e34a1753055d820b1c774657cd4
BLAKE2b-256 3ac8de5106895592a5765be8af4a09dc94701f593d40b5d1ff5c3a93cd33cbe5

See more details on using hashes here.

File details

Details for the file google_vizier_dev-0.1.24.dev20251010164819-py3-none-any.whl.

File metadata

File hashes

Hashes for google_vizier_dev-0.1.24.dev20251010164819-py3-none-any.whl
Algorithm Hash digest
SHA256 5e74acac99c4f7f6fdbded09fc60b9d55969a4093691718f7d9222ff81c8fe71
MD5 77654339684d873c721e667ec4aa0b91
BLAKE2b-256 97adeb436f288f16141704126d4ca7a56c2b353cc811a9683628fe96676487ce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page