{"id":13642586,"url":"https://github.com/google/vizier","last_synced_at":"2025-05-13T19:16:57.998Z","repository":{"id":37768969,"uuid":"460172544","full_name":"google/vizier","owner":"google","description":"Python-based research interface for blackbox and hyperparameter optimization, based on the internal Google Vizier Service.","archived":false,"fork":false,"pushed_at":"2025-05-07T22:42:04.000Z","size":4913,"stargazers_count":1560,"open_issues_count":51,"forks_count":100,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-05-07T23:28:09.969Z","etag":null,"topics":["algorithm","bayesian-optimization","blackbox-optimization","deep-learning","distributed-computing","distributed-systems","evolutionary-algorithms","google","grpc","hyperparameter-optimization","hyperparameter-tuning","machine-learning","open-source","optimization","tuning","tuning-parameters","vizier"],"latest_commit_sha":null,"homepage":"https://oss-vizier.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-16T20:48:16.000Z","updated_at":"2025-05-07T22:42:06.000Z","dependencies_parsed_at":"2022-07-10T16:02:43.029Z","dependency_job_id":"4a1ae4fc-0edc-4881-a830-1c812e8969e3","html_url":"https://github.com/google/vizier","commit_stats":{"total_commits":1134,"total_committers":26,"mean_commits":43.61538461538461,"dds":0.6075837742504409,"last_synced_commit":"6348a8cc3ea035799777485176635cd7f7832d06"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fvizier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fvizier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fvizier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fvizier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/vizier/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254010822,"owners_count":21999003,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","bayesian-optimization","blackbox-optimization","deep-learning","distributed-computing","distributed-systems","evolutionary-algorithms","google","grpc","hyperparameter-optimization","hyperparameter-tuning","machine-learning","open-source","optimization","tuning","tuning-parameters","vizier"],"created_at":"2024-08-02T01:01:33.502Z","updated_at":"2025-05-13T19:16:57.693Z","avatar_url":"https://github.com/google.png","language":"Python","readme":"\u003cfigure\u003e\n\u003cimg src=\"docs/assets/vizier_logo2.png\" width=20% align=\"right\"/\u003e\n\u003c/figure\u003e\n\n# Open Source Vizier: Reliable and Flexible Black-Box Optimization.\n[![PyPI version](https://badge.fury.io/py/google-vizier.svg)](https://badge.fury.io/py/google-vizier)\n[![Continuous Integration](https://github.com/google/vizier/actions/workflows/ci.yml/badge.svg)](https://github.com/google/vizier/actions/workflows/ci.yml?query=branch%3Amain)\n![Docs](https://github.com/google/vizier/workflows/docs_test/badge.svg)\n\n  [**Google AI Blog**](https://ai.googleblog.com/2023/02/open-source-vizier-towards-reliable-and.html)\n| [**Getting Started**](#getting_started)\n| [**Documentation**](#documentation)\n| [**Installation**](#installation)\n| [**Citing and Highlights**](#citing_vizier)\n\n## What is Open Source (OSS) Vizier?\n[OSS Vizier](https://arxiv.org/abs/2207.13676) is a Python-based service for black-box optimization and research, based on [Google Vizier](https://dl.acm.org/doi/10.1145/3097983.3098043), one of the first hyperparameter tuning services designed to work at scale.\n\n\u003cfigure\u003e\n\u003cp align=\"center\" width=65%\u003e\n\u003cimg src=\"docs/assets/oss_vizier_service.gif\"/\u003e\n  \u003cbr\u003e\n  \u003cem\u003e\u003cb\u003eOSS Vizier's distributed client-server system. Animation by Tom Small.\u003c/b\u003e\u003c/em\u003e\n\u003c/p\u003e\n\u003c/figure\u003e\n\n## Getting Started \u003ca name=\"getting_started\"\u003e\u003c/a\u003e\nAs a basic example for users, below shows how to tune a simple objective using all flat search space types:\n\n```python\nfrom vizier.service import clients\nfrom vizier.service import pyvizier as vz\n\n# Objective function to maximize.\ndef evaluate(w: float, x: int, y: float, z: str) -\u003e float:\n  return w**2 - y**2 + x * ord(z)\n\n# Algorithm, search space, and metrics.\nstudy_config = vz.StudyConfig(algorithm='DEFAULT')\nstudy_config.search_space.root.add_float_param('w', 0.0, 5.0)\nstudy_config.search_space.root.add_int_param('x', -2, 2)\nstudy_config.search_space.root.add_discrete_param('y', [0.3, 7.2])\nstudy_config.search_space.root.add_categorical_param('z', ['a', 'g', 'k'])\nstudy_config.metric_information.append(vz.MetricInformation('metric_name', goal=vz.ObjectiveMetricGoal.MAXIMIZE))\n\n# Setup client and begin optimization. Vizier Service will be implicitly created.\nstudy = clients.Study.from_study_config(study_config, owner='my_name', study_id='example')\nfor i in range(10):\n  suggestions = study.suggest(count=2)\n  for suggestion in suggestions:\n    params = suggestion.parameters\n    objective = evaluate(params['w'], params['x'], params['y'], params['z'])\n    suggestion.complete(vz.Measurement({'metric_name': objective}))\n```\n\n## Documentation \u003ca name=\"documentation\"\u003e\u003c/a\u003e\nOSS Vizier's interface consists of [three main APIs](https://oss-vizier.readthedocs.io/en/latest/guides/index.html):\n\n* [**User API:**](https://oss-vizier.readthedocs.io/en/latest/guides/index.html#for-users) Allows a user to optimize their blackbox objective and optionally setup a server for distributed multi-client settings.\n* [**Developer API:**](https://oss-vizier.readthedocs.io/en/latest/guides/index.html#for-developers) Defines abstractions and utilities for implementing new optimization algorithms for research and to be hosted in the service.\n* [**Benchmarking API:**](https://oss-vizier.readthedocs.io/en/latest/guides/index.html#for-benchmarking) A wide collection of objective functions and methods to benchmark and compare algorithms.\n\nAdditionally, it contains [advanced API](https://oss-vizier.readthedocs.io/en/latest/advanced_topics/index.html) for:\n\n* [**Tensorflow Probability:**](https://oss-vizier.readthedocs.io/en/latest/advanced_topics/index.html#tensorflow-probability) For writing Bayesian Optimization algorithms using Tensorflow Probability and Flax.\n* [**PyGlove:**](https://oss-vizier.readthedocs.io/en/latest/advanced_topics/index.html#pyglove) For large-scale evolutionary experimentation and program search using OSS Vizier as a distributed backend.\n\nPlease see OSS Vizier's [ReadTheDocs documentation](https://oss-vizier.readthedocs.io/) for detailed information.\n\n## Installation \u003ca name=\"installation\"\u003e\u003c/a\u003e\n**Quick start:** For tuning objectives using our state-of-the-art JAX-based Bayesian Optimizer, run:\n\n```bash\npip install google-vizier[jax]\n```\n\n### Advanced Installation\n**Minimal installation:** To install only the core service and client APIs from `requirements.txt`, run:\n\n```bash\npip install google-vizier\n```\n\n**Full installation:** To support all algorithms and benchmarks, run:\n\n```bash\npip install google-vizier[all]\n```\n\n**Specific installation:** If you only need a specific part \"X\" of OSS Vizier, run:\n\n```bash\npip install google-vizier[X]\n```\n\nwhich installs add-ons from `requirements-X.txt`. Possible options:\n\n* `requirements-jax.txt`: Jax libraries shared by both algorithms and benchmarks.\n* `requirements-tf.txt`: Tensorflow libraries used by benchmarks.\n* `requirements-algorithms.txt`: Additional repositories (e.g. EvoJAX) for algorithms.\n* `requirements-benchmarks.txt`: Additional repositories (e.g. NASBENCH-201) for benchmarks.\n* `requirements-test.txt`: Libraries needed for testing code.\n\n**Developer installation:** To install up to the latest commit, run:\n\n```bash\npip install google-vizier-dev[X]\n```\n\nCheck 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+.\n\n## Citing and Highlights \u003ca name=\"citing_vizier\"\u003e\u003c/a\u003e\n\u003cins\u003e**Citing Vizier:**\u003c/ins\u003e Please consider citing the appropriate paper(s): [Algorithm](https://arxiv.org/abs/2408.11527), [OSS Package](https://arxiv.org/abs/2207.13676), and [Google System](https://dl.acm.org/doi/10.1145/3097983.3098043) if you found any of them useful.\n\n\u003cins\u003e**Highlights:**\u003c/ins\u003e We track [notable users](https://oss-vizier.readthedocs.io/en/latest/highlights/applications.html) and [media attention](https://oss-vizier.readthedocs.io/en/latest/highlights/media.html) - let us know if OSS Vizier was helpful for your work.\n\nThanks!\n\n```bibtex\n@article{gaussian_process_bandit,\n  author       = {Xingyou Song and\n                  Qiuyi Zhang and\n                  Chansoo Lee and\n                  Emily Fertig and\n                  Tzu-Kuo Huang and\n                  Lior Belenki and\n                  Greg Kochanski and\n                  Setareh Ariafar and\n                  Srinivas Vasudevan and\n                  Sagi Perel and\n                  Daniel Golovin},\n  title        = {The Vizier Gaussian Process Bandit Algorithm},\n  journal      = {Google DeepMind Technical Report},\n  year         = {2024},\n  eprinttype    = {arXiv},\n  eprint       = {2408.11527},\n}\n\n@inproceedings{oss_vizier,\n  author    = {Xingyou Song and\n               Sagi Perel and\n               Chansoo Lee and\n               Greg Kochanski and\n               Daniel Golovin},\n  title     = {Open Source Vizier: Distributed Infrastructure and API for Reliable and Flexible Black-box Optimization},\n  booktitle = {Automated Machine Learning Conference, Systems Track (AutoML-Conf Systems)},\n  year      = {2022},\n}\n\n@inproceedings{google_vizier,\n  author    = {Daniel Golovin and\n               Benjamin Solnik and\n               Subhodeep Moitra and\n               Greg Kochanski and\n               John Karro and\n               D. Sculley},\n  title     = {Google Vizier: {A} Service for Black-Box Optimization},\n  booktitle = {Proceedings of the 23rd {ACM} {SIGKDD} International Conference on\n               Knowledge Discovery and Data Mining, Halifax, NS, Canada, August 13\n               - 17, 2017},\n  pages     = {1487--1495},\n  publisher = {{ACM}},\n  year      = {2017},\n  url       = {https://doi.org/10.1145/3097983.3098043},\n  doi       = {10.1145/3097983.3098043},\n}\n```\n","funding_links":[],"categories":["参数优化","Python","AutoML"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fvizier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2Fvizier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fvizier/lists"}