开源 Vizier:迈向可靠、灵活的超参数和黑盒优化

1725868947482.jpg

Google Vizier是 Google 内部针对目标函数和超参数进行黑盒优化的事实上的系统,它为 Google 一些最大的研究工作提供服务,并优化了各种产品(例如搜索、广告、YouTube)。在研究方面,它不仅为用户减少了语言模型延迟、设计了计算机架构、加速了硬件、辅助了蛋白质发现和增强了机器人技术,还为用户提供了可靠的后端界面,以搜索神经架构并发展强化学习算法。为了优化数千名用户的关键系统和调整数百万个机器学习模型,Google Vizier 解决了支持不同用例和工作流程的关键设计挑战,同时保持了强大的容错能力。

今天,我们很高兴地宣布开源 (OSS) Vizier(在2022 年 AutoML 大会上发布了随附的系统白皮书),这是一个基于 Google Vizier 的独立 Python 包。OSS Vizier 的设计主要有两个目的:(1) 以可靠和分布式的方式为用户大规模管理和优化实验,以及 (2) 为自动机器学习(AutoML) 研究人员开发和基准测试算法。

系统设计

OSS Vizier 的工作原理是让服务器提供服务,即优化来自多个客户端的黑盒目标或函数。在主要工作流程中,客户端发送远程过程调用(RPC) 并请求建议(即,客户端黑盒函数的建议输入),然后服务开始生成工作器以启动算法(即Pythia 策略)来计算以下建议。然后,客户端评估这些建议以形成其相应的目标值和测量值,并将其发送回服务。此管道重复多次以形成整个调整轨迹。

使用无处不在的gRPC库(与大多数编程语言(例如 C++ 和 Rust)兼容)可以实现最大程度的灵活性和定制化,用户还可以在默认 Python 接口之外编写自己的自定义客户端甚至算法。由于整个过程都保存到SQL数据存储中,因此可以确保崩溃后顺利恢复,并且可以将使用模式存储为有价值的数据集,用于研究元学习和多任务迁移学习方法(例如OptFormer和HyperBO)。

在分布式管道中,多个客户端各自向服务 API 发送“建议”请求,服务 API 使用 Pythia 为客户端生成建议。客户端评估这些建议并返回测量值。所有事务都存储起来以实现容错。

用法

由于 OSS Vizier 强调服务,即客户端可以在任何时间点向服务器发送请求,因此它适用于广泛的场景——评估或试验的预算可以从数千万到数千万不等,评估延迟可以从几秒到几周不等。评估可以异步进行(例如,调整 ML 模型),也可以同步批量进行(例如,涉及多个同时进行的实验的湿实验室设置)。此外,评估可能会因暂时性错误而失败并需要重试,也可能因持续性错误而失败(例如,无法进行评估)并且不应重试。

这广泛支持各种应用,包括超参数调整深度学习模型或优化非计算目标,这些目标可以是物理的、化学的、生物的、机械的,甚至是人工评估的,例如饼干食谱。

OSS Vizier API 允许 (1) 开发人员集成其他软件包,其中已经包含 PyGlove 和 Vertex Vizier,以及 (2) 用户优化他们的实验,例如机器学习管道和 cookie 配方。

集成、算法和基准

由于 Google Vizier 与 Google 的许多内部框架和产品紧密集成,OSS Vizier 自然也会与 Google 的许多开源和外部框架紧密集成。最突出的是,OSS Vizier 将作为PyGlove的分布式后端,允许对神经架构和强化学习算法等组合原语进行大规模进化搜索。此外,OSS Vizier 与Vertex Vizier共享相同的基于客户端的 API ,允许用户在开源和生产质量服务之间快速切换。

对于 AutoML 研究人员来说,OSS Vizier 还配备了一套实用的算法和基准(即目标函数),这些算法和基准统一在通用 API 下,用于评估所提方法的优缺点。最值得注意的是,通过TensorFlow Probability,研究人员现在可以使用基于 JAX 的高斯过程强盗算法,该算法基于 Google Vizier 中调整内部用户目标的默认算法。

资源和未来方向

我们提供代码库、文档和系统白皮书 的链接。我们计划允许用户贡献,尤其是以算法和基准的形式,并进一步与开源 AutoML 生态系统集成。展望未来,我们希望将 OSS Vizier 视为扩展黑盒优化和超参数调整研究和开发的核心工具。

致谢

OSS Vizier 由 Google Vizier 团队成员与 TensorFlow Probability 团队合作开发:Setareh Ariafar、Lior Belenki、Emily Fertig、Daniel Golovin、Tzu-Kuo Huang、Greg Kochanski、Chansoo Lee、Sagi Perel、Adrian Reyes、Xingyou (Richard) Song 和 Richard Zhang。

此外,我们还要感谢 Srinivas Vasudevan、Jacob Burnim、Brian Patton、Ben Lee、Christopher Suter 和 Rif A. Saurous 提供的进一步 TensorFlow Probability 集成、Daiyi Peng 和 Yifeng Lu 提供的 PyGlove 集成、Hao Li 提供的 Vertex/Cloud 集成、Yingjie Miao 提供的 AutoRL 集成、Tom Hennigan、Varun Godbole、Pavel Sountsov、Alexey Volkov、Mihir Paradkar、Richard Belleville、Bu Su Kim、Vytenis Sakenas、Yujin Tang、Yingtao Tian 和 Yutian Chen 提供的开源和基础设施帮助,以及 George Dahl、Aleksandra Faust、Claire Cui 和 Zoubin Ghahramani 提供的讨论。

最后,我们感谢 Tom Small 为这篇文章设计动画。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论