文 /KeenTune SIG
KeenTune(轻豚)是一款 AI 算法与专家知识库双轮驱动的操作系统全栈式智能优化产品,为支流的操作系统提供轻量化、跨平台的一键式性能调优,让利用在智能定制的运行环境施展最优性能。自 2021 年 9 月正式成立 SIG 并发表开源以来,受到了宽广开发者的关注。KeenTune 的整体开源框架聚焦于通用和灵便的设计准则,其中对于调优场景的扩大,通过分布式架构以及标准化的场景配置模式,能够不便的实现对于 Linux 内核参数,利用配置参数,编译器优化参数,benchmark 配置参数等调优对象和配套工具的疾速适配。
明天,KeenTune 再次带来开源重磅个性——新增通用的调优算法框架:keenopt。有了 keenopt 的加持,KeenTune 不再仅仅是反对灵便扩大调优场景的调优工具,还成长为了具备灵便扩大调优算法的调优平台,不仅能够作为性能调优工程师的法宝,也能够成为算法工程师的利器。Keenopt 调优算法框架的开源设计,同样旨在方便快捷的扩大学术界和工业界新提出的调优算法,以及结合实际须要定制化的调优算法。
聪慧的童鞋肯定会天然问出一个问题:为什么不能只调用以后风行的调优算法库,而要打造一个算法框架呢?这就要从咱们调优过程中趟过的一个一个坑说起了 …
坑洼调优路
一提起调优,首先进入读者脑海的就是近年来愈发风行的针对机器学习模型,尤其是神经网络超参数的调优算法。这些调优算法从贝叶斯优化和遗传算法登程,凝聚了丰富多彩的调优思路,曾经成为晋升机器学习算法研发效率的利器。那么这些大多围绕着机器学习模型超参数优化的算法,是不是能够间接利用于比方系统软件配置和参数调优上来呢?答案是经典的 yes and no。
首先,经典的贝叶斯优化算法(基于高斯代理模型)及其衍生算法(如 TPE),当然是能够间接利用于零碎参数调优的。但概括来说,这类算法整体的调优效率却常常无奈满足无论是机器学习模型超参数调优还是零碎参数调优。相应的,近年来的学术翻新次要围绕着进一步晋升调优的整体效率开展。也就是在这个层面上,机器学习模型超参数的调优和零碎参数调优,走上了不同的路线。
(图 1 / 条条调优路)
对于机器学习模型超参数调优来说,调优的工夫开销次要来自两个方面:
(1)调优算法搜寻策略所须要的运算耗时。
(2)机器学习模型训练的耗时。
对于近年来逐步广为人知的基于高保真原理的优化算法,如 Successive Halving[1],HyperBand[2] 等,次要聚焦于缩小第二个方面的工夫开销,毕竟和训练动辄千万上亿级参数的模型,调优算法搜寻策略的开销几乎不值一提。侥幸的事,机器学习模型训练的耗时的确是灵便可调整的。
然而,对于零碎参数调优来说,尽管调优的工夫开销也次要来自两个方面:
(1)调优算法搜寻策略所须要的运算耗时。
(2)评估调优举荐参数配置的耗时。
然而其中(2)的耗时因为往往来自调用规范 benchmark 工具取得,是固定不可调整的。具体例子能够构想一下运行 Fio、SPEC CPU 2017 这类 benchmark 工具的过程。因而,针对零碎参数调优的算法畛域,无奈通过优化(2)的开销曲线救国,只能老老实实的晋升调优算法的搜寻策略。到此,咱们来到了第二个坑。
(图 2 / 从满天星到一团火)
参数调优堪称是“维度劫难”的一个重灾区。基于贝叶斯优化框架的调优算法,实质上是在一个乌黑的空间中摸索,而随着维度的减少,这个乌黑的环境的 volume 急剧增大,摸索的工夫老本的减少是不可避免的。对于机器学习模型超参数的调优来说,这个维度往往在十几到二十几这个量级,维度的铁拳依然比拟温顺。而对于零碎参数调优来说,这个维度往往在几十到上百甚至过千的量级。在这个量级维度的铁拳下,经典的贝叶斯调优算法及其衍生算法,往往就会被锤成齑粉。以基于高斯代理模型的贝叶斯优化算法来说,咱们能够比拟毛糙的概括这种算法为“散点”法,这并不是说这类算法就是乱枪打鸟,毕竟有弱小的贝叶斯原理作为引领,搜寻的策略和门路还是有迹可循的。
然而,当维度足够高的时候,曾经有相干钻研证实,贝叶斯优化算法和随机搜索算法基本上是一对卧龙凤雏的存在 [3]。因而,近年来 AI 畛域顶会的学术成绩,曾经开始关注高维空间中的贝叶斯优化问题,由这种“散点”法,逐步过渡到“局域”法 [4,5]。这里“局域”又是咱们的一个比拟概括的说法,次要原理是在高维空间中,搜寻次要被限度在于较小的部分区域进行,而各个部分区域自身的取舍仍然遵从贝叶斯原理。这类“局域”法无效的限度了搜寻区域的 volume,因而往往有更高效的收敛和更好的调优成果。尤其是更好的收敛成果这种个性,对于零碎参数的调优实际来说,堪称肯定水平上加重了当务之急,因为理论的零碎参数调优实际,往往要思考系统资源开销和整体工夫限度,从而须要在尽可能少的调优轮次中给出最优或略低于最优的调优后果。当咱们欣慰的筹备汲取这些算法进入 KeenTune 去磨刀霍霍的时候,咱们来到了第三个坑。
如前所述,以后支流的调优算法库或工具,往往围绕着机器学习模型超参数调优的场景进行扩大。因而如 Scikit-Optimize (skopt)[6] 和 NNI[7] 这类算法库,更多的聚焦于反对 Successive Halving 和 HyperBand 这些针对模型训练开销优化的算法,而对于解决高维贝叶斯优化问题的算法不够及时。此外,即便想在这些算法库中定制化实现这些算法,也仍然须要具体的研读这些库中算法的实现,照猫画虎的在简单的代码逻辑中后退,这种痛苦只能说懂得都懂。因而,当咱们拔剑四顾的时候,刀鞘却妨碍了咱们披巾斩棘的身影。至此,读者曾经和咱们来到了同样的地步,也看到那临门一脚的必选项 — 打造更灵便通用的调优算法框架。
KeenOpt 的初心
当咱们议论参数调优算法框架的时候,咱们议论的是 :
(1)算法集成和定制化的方便快捷。
(2)算法的标准化和模块化。
围绕着这两个设计初心,咱们的算法框架尽可能的将各个次要功能模块独立的形象成类。
(图 3 / KeenOpt 框架概图)
如图 3 所示,自顶向下的从优化总体管制类,衍生出如随机和网格搜寻的经典优化算法类,和基于贝叶斯优化的优化算法类。其中优化总体管制类,只要求提供 acquire() 和 feedback() 函数,别离负责选取参数和取得 benchmark 执行的反馈后果。其中针对贝叶斯优化的算法类,又进一步形象出:
- 调优管制类:提供贝叶斯优化必须依赖的接口参数。在最根底的优化类中,肯定水平上实现了对于贝叶斯优化算法接口的标准化,包含参数空间,历史数据记录,代理模型,和搜寻策略。
- 参数空间类:参数空间能够灵便定义整型,浮点型,类别型的参数和其取值范畴。因为理论的调优场景中,无可能呈现真正意义上的间断参数空间,因而每个参数相应的还搭配了可定义的步长。
- 代理模型类:代理模型的抉择能够依据具体须要,灵便的抉择经典回归类机器学习模型和基于 pytorch 实现的神经网络类模型。
- 搜寻策略类:具体的搜寻策略能够实现经典的贝叶斯优化算法,也能够实现如上所述的“局域”搜寻策略,整个类只要求实现具体的 search() 办法。
下图 4 中展现了以后 KeenOpt 的反对的局部算法 (TPE, LA-MCTS-Bo 和 LA-MCTS-TuRBO) 在 4 中常见的 synthetic 函数在低维(20)和高维(100)状况下的比照后果,可见“局域”算法的确比经典贝叶斯优化算法有更好的优化后果和更高的收敛效率。
(图 4 / KeenOpt 反对算法成果比照)
后记
因为篇幅优先,率领大家蜻蜓点水的看一看 keenopt 的局部能力,明天的 KeenTune 旅行就先到此结束。具体详细信息及性能,请大家关注后续的 KeenOpt 的介绍,期待与各位开发者一起探讨交换。
近一年来,KeenTune 在龙蜥社区、阿里团体内外的我的项目中积极参与共建,在此期间,也遇到到了一起做我的项目的小伙伴,非常感谢可能一起并肩作战的大家,十分欢送有更多的小伙伴参加 SIG 共建(SIG 地址见文末)。
keenopt 的仓库(链接见文末)也将近期基于 keentune-brain 进行更新,源码局部也在逐渐的凋谢给大家。
有趣味的小伙伴,欢送退出咱们 KeenTune SIG,这里汇聚了一群有想法有能力的小伙伴~(每双周周四上午 11:00-12:00 是 KeenTune 的双周会,会议日程在龙蜥官网首页能够查看)。
相干链接地址:
KeenTune SIG 地址:
https://openanolis.cn/sig/Kee…
keenopt 仓库链接地址:
https://gitee.com/anolis/keen…
龙蜥官网:
https://openanolis.cn/
援用
[1] Kevin G. Jamieson, Ameet Talwalkar: Non-stochastic Best Arm Identification and Hyperparameter Optimization. AISTATS2016: 240-248
[2] Lisha Li, Kevin G. Jamieson, Giulia DeSalvo, Afshin Rostamizadeh, Ameet Talwalkar: Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization. J. Mach. Learn. Res.18: 185:1-185:52 (2017)
[3] Marc-André Zöller, Marco F. Huber: Benchmark and Survey of Automated Machine Learning Frameworks. J. Artif. Intell. Res.70: 409-472 (2021)
[4] David Eriksson, Michael Pearce, Jacob R. Gardner, Ryan Turner, Matthias Poloczek: Scalable Global Optimization via Local Bayesian Optimization. NeurIPS2019: 5497-5508
[5] Linnan Wang, Rodrigo Fonseca, Yuandong Tian: Learning Search Space Partition for Black-box Optimization using Monte Carlo Tree Search.NeurIPS2020
[6] https://scikit-opt.github.io/…
[7] https://nni.readthedocs.io/
—— 完 ——