开源Vizier:可靠灵活的黑盒优化
Google AI博客 | 快速入门 | 文档 | 安装 | 引用与亮点
什么是开源(OSS) Vizier?
OSS Vizier是一个基于Python的黑盒优化和研究服务,它基于Google Vizier,后者是最早设计用于大规模工作的超参数调优服务之一。
快速入门
作为用户的基本示例,以下展示了如何使用所有平面搜索空间类型来调优一个简单的目标函数:
from vizier.service import clients
from vizier.service import pyvizier as vz
# 要最大化的目标函数
def evaluate(w: float, x: int, y: float, z: str) -> float:
return w**2 - y**2 + x * ord(z)
# 算法、搜索空间和指标
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))
# 设置客户端并开始优化。Vizier服务将被隐式创建
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}))
文档
OSS Vizier的接口包含三个主要API:
- 用户API: 允许用户优化他们的黑盒目标函数,并可选择为分布式多客户端设置设置服务器。
- 开发者API: 定义了用于实现新优化算法的抽象和工具,用于研究和托管在服务中。
- 基准测试API: 广泛的目标函数集合和方法,用于对算法进行基准测试和比较。
此外,它还包含高级API:
- Tensorflow Probability: 用于使用Tensorflow Probability和Flax编写贝叶斯优化算法。
- PyGlove: 用于大规模进化实验和程序搜索,使用OSS Vizier作为分布式后端。
请查看OSS Vizier的ReadTheDocs文档以获取详细信息。
安装
快速开始: 要使用我们最先进的基于JAX的贝叶斯优化器调优目标,请运行:
pip install google-vizier[jax]
高级安装
最小版本: 要仅从requirements.txt
安装核心服务和客户端API,请运行:
pip install google-vizier
完整安装: 要支持所有算法和基准测试,请运行:
pip install google-vizier[all]
特定安装: 如果你只需要OSS Vizier的特定部分"X",请运行:
pip install google-vizier[X]
这将安装requirements-X.txt
中的附加组件。可能的选项包括:
requirements-jax.txt
:算法和基准测试共享的Jax库。requirements-tf.txt
:基准测试使用的Tensorflow库。requirements-algorithms.txt
:算法的其他存储库(如EvoJAX)。requirements-benchmarks.txt
:基准测试的其他存储库(如NASBENCH-201)。requirements-test.txt
:测试代码所需的库。
完整安装后,通过运行run_tests.sh
检查所有单元测试是否正常工作。OSS Vizier需要Python 3.10+,而仅客户端包需要Python 3.8+。
引用与亮点
引用Vizier: 如果您发现此代码有用,请考虑引用OSS Vizier论文以及Google Vizier论文。
亮点: 我们跟踪著名用户和媒体关注 - 如果OSS Vizier对您的工作有帮助,请告诉我们。
谢谢!
@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},
}