近日,由北京大学崔斌教授数据与智能实验室( Data and Intelligence Research LAB, DAIR)开发的通用黑盒优化系统 OpenBox 开源发布!
相比于 SMAC3,Hyperopt 等现有开源系统,OpenBox 支持更通用的黑盒优化场景,包括多目标优化,带约束优化场景等。在 25 个 LightGBM 调参任务上,OpenBox 在 7 个对比系统中取得了平均 1.25 名 average rank) 的优异成绩。
相关论文已经被 KDD 2021 录用,”OpenBox: A Generalized Black-box Optimization Service”。
研究背景
近年来,人工智能与机器学习备受关注,越来越多企业使用机器学习模型解决实际问题,如人脸识别、商品推荐等。在应用机器学习模型的过程中,模型超参数的选择对模型性能有着至关重要的影响,因此超参数优化问题成为了机器学习的重要挑战之一。超参数优化作为典型的黑盒优化问题,对于优化目标不存在具体表达式或梯度信息,且验证代价较大。其目标是在有限的验证次数内,尽快找到全局最优点。除超参数优化外,黑盒优化还拥有着广泛的使用场景,如自动化 A/B 测试、数据库参数调优、处理器架构和芯片设计等。
现有开源的黑盒优化系统往往存在以下问题:
1)使用场景有限。由于系统基于某个特定算法,一些系统只能支持单目标或是无约束的优化问题;
2)性能不稳定。基于优化问题中“no free lunch”定理,现有系统中特定的算法无法在所有任务中表现出色;
3)有限的可扩展性。现有系统无法有效利用历史任务的结果以及分布式的验证资源。
针对这些问题,北京大学 DAIR 实验室 AutoML 项目组开发了一个名为“OpenBox”的轻量级黑盒优化系统,针对通用的黑盒优化场景,内置丰富的优化算法,并提供高效的并行支持,帮助用户“open the box”,解决棘手的黑盒优化问题。
项目 Github 开源地址:https://github.com/PKU-DAIR/open-box
OpenBox 设计思路
为了解决现有系统上述的问题,OpenBox 在设计上支持以下系统特性,包括:
多目标优化:同时优化多个不同(甚至相互冲突)的目标,例如同时优化机器模型准确率和模型训练/预测时间等。
带约束条件优化:最优化目标的同时,要满足(黑盒)条件,例如保证模型延迟不能高于某个阈值等。
多类型参数输入(FIOC):系统需要对多种待优化参数类型提供支持,主要为 FIOC,即浮点型、整型、序数型、类别型四类参数。例如超参数优化中,SVM 模型核函数用类别型表示,如果单纯用整型代替序数型或类别型参数,将对参数附加额外的序关系,不利于模型优化。
迁移学习:优化任务之间可能存在一定相关性,例如过去可能在不同数据集上进行过相同模型的调参。基于这种观察,系统需要能够利用过去优化的知识加速当前优化任务的执行效率。
分布式并行验证:内置算法支持并行运行,并且系统能够有效利用给定的分布式资源。
作者将现有系统对上述特点的支持情况总结如上 其中△表示不支持通用场景)。从表格中不难看出,现有开源黑盒优化系统无法支持特定的使用场景,而 OpenBox 能够提供完整的支持。
上图展示了 OpenBox 的并行架构,包含五个主要组件。服务主机 ServiceMaster) 负责节点管理、负载均衡和错误恢复。任务数据库 Task Database) 保存所有任务的状态。建议服务器 Suggestion Server) 为每个任务生成新配置。REST API 在用户/工作者和建议服务器之间建立了桥梁。验证工作者 Evaluation Worker) 由用户提供和拥有。
OpenBox 内置大量优化组件,其中优化算法包括贝叶斯优化,遗传算法等,如下图所示:
为简化用户的使用门槛以及提高系统在各问题上的性能,OpenBox 默认采用一种自动选择优化算法的策略,根据输入参数类型,目标个数,约束个数选择合适的优化算法。用户也可基于自身需求,在系统推荐的基础上自行选择优化策略。更多 OpenBox 的特性请参考开源文档:
https://open-box.readthedocs.io/zh_CN/latest/overview/overview.html
目前 OpenBox 已在快手、阿里巴巴集团等企业落地部署与使用。
OpenBox 性能验证
1、收敛效果对比
为体现 OpenBox 在通用黑盒优化问题上的性能,系统针对单/多目标,无/有约束,共 4 种场景对比 OpenBox 与现有算法与系统在优化数学函数上的效果,实验效果如下四图所示。可以看出在不同的优化场景中,OpenBox 相较现有系统都有较为显著的收敛效果提升。
2、端到端效果对比
针对实际场景,Openbox 以表格分类的机器学习任务为例,与现有开源系统 BoTorch,GPGlowOpt,Spearmint,HyperMapper,SMAC3,Hyperopt 进行对比。为保证公平性,Openbox 使用串行方式执行任务,并汇报调参结果在测试集上的准确率。以下展示使用 LightGBM 与 LibSVM 两个模型在 25 个 OpenML 公开数据集上的调参结果平均排名。值得注意的是,由于 LibSVM 的搜索空间复杂且包含条件选择,OpenBox 仅与支持复杂空间定义的 SMAC3 以及 Hyperopt 进行对比。
可以观察到 OpenBox 在两个模型调参中均获得了优异的性能。具体来说,OpenBox 在 Lightgbm 调参中排名中位数为 1.25,在 LibSBM 调参中为 1.50,体现了 OpenBox 相比其它开源系统在超参数优化任务中的优势。
a) AutoML 任务 LightGBM 优化结果
b) AutoML 任务 LibSVM 优化结果
3、并行性能对比
OpenBox 支持高效的并行优化算法,使得在达到相同的优化效果的前提下,所需要的时间代价大幅降低。下图展示了使用 OpenBox 中并行优化算法在 LightGBM 调参任务上的提升,使用的数据集为公开数据集 optdigits 。其中“Sync”表示同步并行,“Async”表示异步并行,“-n”表示并发度。
可以观察到,相比串行优化(Seq-1),并行能够带来很大程度上提升搜索效率。其中最显著的提升来自于并发度为 8 的异步优化算法,在达到与串行方法相同的优化结果时仅使用 1/80 的时间预算,也即实现 7.5× 的加速比。(理想加速比为 8×)
更多关于 OpenBox 的实验结果,请参考 OpenBox 论文:
https://arxiv.org/abs/2106.00421
OpenBox 使用示例
目前 OpenBox 支持主流平台(Linux、macOS、Window)使用。用户只需在代码中定义空间,给出目标函数,构造优化器即可运行。以下以一个简单的多目标带约束问题为例:
首先,我们需要 import 必要的组件:
接下来,我们定义一个包含两个连续变量的搜索空间:
随后,我们给出一个简单的以上述两个变量为输入的目标函数。这个目标函数包含两个目标以及两个约束:
最后我们定义一个优化器,传入指定的参数后,只需调用 run ) 即可开始优化。
除了上述包调用的方法,OpenBox 还支持用户通过接口访问服务,从服务端获取推荐的参数配置,在本地执行参数性能验证,并通过访问网站页面,可视化监视与管理优化过程。
完整的示例以及更多的使用场景,欢迎参考 OpenBox 官方文档:
https://open-box.readthedocs.io/zh_CN/latest/
论文地址:https://arxiv.org/abs/2106.00421
项目 Github 地址:https://github.com/PKU-DAIR/open-box
欢迎大家关注点赞!
参考文献
[1]Yang Li, Yu Shen, Wentao Zhang, Yuanwei Chen, Huaijun Jiang, Mingchao Liu, Jiawei Jiang, Jinyang Gao, Wentao Wu, Zhi Yang, Ce Zhang, Bin Cui. “OpenBox: A Generalized Black-box Optimization Service.” Proceedings of the 27rd ACM SIGKDD international conference on knowledge discovery and data mining. 2021.
[2] Bergstra, James, et al. “Algorithms for hyper-parameter optimization.” Advances in neural information processing systems 24 2011).
[3] Snoek, Jasper, Hugo Larochelle, and Ryan P. Adams. “Practical bayesian optimization of machine learning algorithms.” Advances in neural information processing systems 25 2012).
[4] Hutter, Frank, Holger H. Hoos, and Kevin Leyton-Brown. “Sequential model-based optimization for general algorithm configuration.” International conference on learning and intelligent optimization. Springer, Berlin, Heidelberg, 2011.
[5] Balandat, Maximilian, et al. “BoTorch: A framework for efficient Monte-Carlo Bayesian optimization.” Advances in Neural Information Processing Systems NeurIPS) 2020).
[6] Knudde, Nicolas, et al. “GPflowOpt: A Bayesian optimization library using tensorflow.” arXiv preprint arXiv:1711.03845 2017).
[7] Golovin, Daniel, et al. “Google vizier: A service for black-box optimization.” Proceedings of the 23rd ACM SIGKDD international conference on knowledge discovery and data mining. 2017.
[8] Nardi, Luigi, David Koeplinger, and Kunle Olukotun. “Practical design space exploration.” 2019 IEEE 27th International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems MASCOTS). IEEE, 2019.
[9] Falkner, Stefan, Aaron Klein, and Frank Hutter. “BOHB: Robust and efficient hyperparameter optimization at scale.” International Conference on Machine Learning. PMLR, 2018.