- Notifications
You must be signed in to change notification settings - Fork102
Python-based research interface for blackbox and hyperparameter optimization, based on the internal Google Vizier Service.
License
google/vizier
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Google AI Blog|Getting Started|Documentation|Installation|Citing and Highlights
OSS Vizier is a Python-based service for black-box optimization and research, based onGoogle Vizier, one of the first hyperparameter tuning services designed to work at scale.
OSS Vizier's distributed client-server system. Animation by Tom Small.
As a basic example for users, below shows how to tune a simple objective using all flat search space types:
fromvizier.serviceimportclientsfromvizier.serviceimportpyvizierasvz# Objective function to maximize.defevaluate(w:float,x:int,y:float,z:str)->float:returnw**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')foriinrange(10):suggestions=study.suggest(count=2)forsuggestioninsuggestions:params=suggestion.parametersobjective=evaluate(params['w'],params['x'],params['y'],params['z'])suggestion.complete(vz.Measurement({'metric_name':objective}))
OSS Vizier's interface consists ofthree 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 containsadvanced 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'sReadTheDocs documentation for detailed information.
Quick start: For tuning objectives using our state-of-the-art JAX-based Bayesian Optimizer, run:
pip install google-vizier[jax]
Minimal installation: To install only the core service and client APIs fromrequirements.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 fromrequirements-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 runningrun_tests.sh
after a full installation. OSS Vizier requires Python 3.10+, while client-only packages require Python 3.8+.
Citing Vizier: Please consider citing the appropriate paper(s):Algorithm,OSS Package, andGoogle System if you found any of them useful.
Highlights: We tracknotable users andmedia 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},}
About
Python-based research interface for blackbox and hyperparameter optimization, based on the internal Google Vizier Service.
Topics
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.