0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

KeenOpt调优算法框架实现对调优对象和配套工具的快速适配

Linux阅码场 来源:KeenTune SIG 作者:KeenTune SIG 2022-11-11 09:31 次阅读

KeenTune(轻豚)是一款 AI 算法与专家知识库双轮驱动的操作系统全栈式智能优化产品,为主流的操作系统提供轻量化、跨平台的一键式性能调优,让应用在智能定制的运行环境发挥最优性能。自 2021年 9 月正式成立 SIG 并宣布开源以来,受到了广大开发者的关注。KeenTune 的整体开源框架聚焦于通用和灵活的设计原则,其中对于调优场景的扩展,通过分布式架构以及标准化的场景配置模式,可以方便的实现对于 Linux 内核参数,应用配置参数,编译器优化参数,benchmark 配置参数等调优对象和配套工具的快速适配。

今天, KeenTune 再次带来开源重磅特性——新增通用的调优算法框架:keenopt。有了 keenopt 的加持,KeenTune 不再仅仅是支持灵活扩展调优场景的调优工具,还成长为了具备灵活扩展调优算法的调优平台,不仅可以作为性能调优工程师的法宝,也可以成为算法工程师的利器。Keenopt 调优算法框架的开源设计,同样旨在方便快捷的扩展学术界和工业界新提出的调优算法,以及结合实际需要定制化的调优算法。 聪明的童鞋一定会自然问出一个问题:为什么不能只调用当前流行的调优算法库,而要打造一个算法框架呢?这就要从我们调优过程中趟过的一个一个坑说起了...

坑洼调优路

一提起调优,首先进入读者脑海的就是近年来愈发流行的针对机器学习模型,尤其是神经网络超参数的调优算法。这些调优算法从贝叶斯优化和遗传算法出发,凝聚了丰富多彩的调优思路,已经成为提升机器学习算法研发效率的利器。那么这些大多围绕着机器学习模型超参数优化的算法,是不是可以直接应用于比如系统软件配置和参数调优上来呢?答案是经典的 yes and no。 首先,经典的贝叶斯优化算法(基于高斯代理模型)及其衍生算法(如 TPE),当然是可以直接应用于系统参数调优的。但概括来说,这类算法整体的调优效率却经常无法满足无论是机器学习模型超参数调优还是系统参数调优。相应的,近年来的学术创新主要围绕着进一步提升调优的整体效率展开。也就是在这个层面上,机器学习模型超参数的调优和系统参数调优,走上了不同的道路。

对于机器学习模型超参数调优来说,调优的时间开销主要来自两个方面: (1)调优算法搜索策略所需要的运算耗时。 (2)机器学习模型训练的耗时。 对于近年来逐渐广为人知的基于高保真原理的优化算法,如 Successive Halving[1],HyperBand[2] 等,主要聚焦于减少第二个方面的时间开销,毕竟和训练动辄千万上亿级参数的模型,调优算法搜索策略的开销简直不值一提。幸运的事,机器学习模型训练的耗时确实是灵活可调整的。 然而,对于系统参数调优来说,虽然调优的时间开销也主要来自两个方面: (1)调优算法搜索策略所需要的运算耗时。 (2)评估调优推荐参数配置的耗时。 但是其中(2)的耗时由于往往来自调用标准 benchmark 工具获得,是固定不可调整的。具体例子可以设想一下运行 Fio、SPEC CPU 2017 这类 benchmark 工具的过程。因此,针对系统参数调优的算法领域,无法通过优化(2)的开销曲线救国,只能老老实实的提升调优算法的搜索策略。到此,我们来到了第二个坑。

参数调优可谓是“维度灾难”的一个重灾区。基于贝叶斯优化框架的调优算法,本质上是在一个漆黑的空间中摸索,而随着维度的增加,这个漆黑的环境的 volume 急剧增大,摸索的时间成本的增加是不可避免的。对于机器学习模型超参数的调优来说,这个维度往往在十几到二十几这个量级,维度的铁拳仍然比较温柔。而对于系统参数调优来说,这个维度往往在几十到上百甚至过千的量级。在这个量级维度的铁拳下,经典的贝叶斯调优算法及其衍生算法,往往就会被锤成齑粉。以基于高斯代理模型的贝叶斯优化算法来说,我们可以比较粗糙的概括这种算法为“散点”法,这并不是说这类算法就是乱枪打鸟,毕竟有强大的贝叶斯原理作为引领,搜索的策略和路径还是有迹可循的。 然而,当维度足够高的时候,已经有相关研究证明,贝叶斯优化算法和随机搜索算法基本上是一对卧龙凤雏的存在[3]。因此,近年来 AI 领域顶会的学术成果,已经开始关注高维空间中的贝叶斯优化问题,由这种“散点”法,逐渐过渡到“局域”法[4,5]。这里“局域”又是我们的一个比较概括的说法,主要原理是在高维空间中,搜索主要被限制在于较小的局部区域进行,而各个局部区域本身的取舍依然服从贝叶斯原理。这类“局域”法有效的限制了搜索区域的 volume,因此往往有更高效的收敛和更好的调优效果。尤其是更好的收敛效果这种特性,对于系统参数的调优实践来说,可谓一定程度上减轻了燃眉之急,因为实际的系统参数调优实践,往往要考虑系统资源开销和整体时间限制,从而需要在尽可能少的调优轮次中给出最优或略低于最优的调优结果。当我们欣喜的准备吸取这些算法进入 KeenTune 去磨刀霍霍的时候,我们来到了第三个坑。 如前所述,当前主流的调优算法库或工具,往往围绕着机器学习模型超参数调优的场景进行扩展。因此如 Scikit-Optimize (skopt)[6] 和 NNI[7] 这类算法库,更多的聚焦于支持 Successive Halving 和 HyperBand 这些针对模型训练开销优化的算法,而对于解决高维贝叶斯优化问题的算法不够及时。此外,即使想在这些算法库中定制化实现这些算法,也依然需要详细的研读这些库中算法的实现,照猫画虎的在复杂的代码逻辑中前进,这种苦楚只能说懂得都懂。因此,当我们拔剑四顾的时候,刀鞘却阻碍了我们披巾斩棘的身影。至此,读者已经和我们来到了同样的境地,也看到那临门一脚的必选项 --打造更灵活通用的调优算法框架。

KeenOpt 的初心

当我们谈论参数调优算法框架的时候,我们谈论的是 :

(1)算法集成和定制化的方便快捷。

(2)算法的标准化和模块化。 围绕着这两个设计初心,我们的算法框架尽可能的将各个主要功能模块独立的抽象成类。

eea464d0-6155-11ed-8abf-dac502259ad0.png

(图3/ KeenOpt框架概图) 如图 3 所示,自顶向下的从优化总体控制类,衍生出如随机和网格搜索的经典优化算法类,和基于贝叶斯优化的优化算法类。其中优化总体控制类,只要求提供 acquire() 和 feedback() 函数,分别负责选取参数和获得 benchmark 执行的反馈结果。其中针对贝叶斯优化的算法类,又进一步抽象出:

调优控制类:提供贝叶斯优化必须依赖的接口参数。在最基础的优化类中,一定程度上实现了对于贝叶斯优化算法接口的标准化,包括参数空间,历史数据记录,代理模型,和搜索策略。

参数空间类:参数空间可以灵活定义整型,浮点型,类别型的参数和其取值范围。由于实际的调优场景中,无可能出现真正意义上的连续参数空间,因此每个参数相应的还搭配了可定义的步长。

代理模型类:代理模型的选择可以根据具体需要,灵活的选择经典回归类机器学习模型和基于 pytorch 实现的神经网络类模型。

搜索策略类:具体的搜索策略可以实现经典的贝叶斯优化算法,也可以实现如上所述的“局域”搜索策略,整个类只要求实现具体的 search()方法。

下图 4 中展示了当前 KeenOpt 的支持的部分算法(TPE, LA-MCTS-Bo和LA-MCTS-TuRBO) 在 4 中常见的 synthetic 函数在低维(20)和高维(100)情况下的对比结果,可见“局域”算法确实比经典贝叶斯优化算法有更好的优化结果和更高的收敛效率。

ef3a7344-6155-11ed-8abf-dac502259ad0.png

(图4/ KeenOpt支持算法效果对比)

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6408

    浏览量

    122319
  • AI
    AI
    +关注

    关注

    87

    文章

    27520

    浏览量

    265164

原文标题:KeenTune的算法之心——KeenOpt 调优算法框架 | 龙蜥技术

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ESP32-S3-KROVO2如何在ADF框架实现wifi连接?

    本人现在想要做一个项目,能够实现wifi连接并在LCD上显示图片,目前能够分别使用idf框架实现wifi连接,和adf框架下的图片LCD显示,但是找不到方法把两个例程结合起来,初步想法
    发表于 06-28 08:02

    L4的板子和MSP430低功耗相比,孰孰劣?

    最近L4低功耗的板子又掀起一阵功耗旋风,和低功耗大哥MSP430相比 ,孰孰劣?
    发表于 05-13 07:56

    【鸿蒙】NAPI 框架生成工具实现流程

    NAPI 框架生成工具 可以根据用户指定路径下的 ts(typescript)接口文件一键生成 NAPI 框架代码、业务代码框架、GN 文件等。在开发 JS 应用与 NAPI 间接口时
    的头像 发表于 02-28 17:00 391次阅读
    【鸿蒙】NAPI <b class='flag-5'>框架</b>生成<b class='flag-5'>工具</b><b class='flag-5'>实现</b>流程

    二相相对调相与解调是什么

    中,有两组电源分别提供电力,且两组电源的相位差为90度。 2. 相对调相 相对调相是指通过改变电路中某一组电源的相位,来调整电路的电压或电流相位关系。相对调相可以用于实现电力系统的功率
    的头像 发表于 12-07 17:19 629次阅读

    HarmonyOS NEXT工具Smart Perf Host高效使用指南

    了测试、、分析一站式服务,**接下来让我们一起来看Smart Perf如何解决开发性能问题。 在Smart Perf工具全家桶中,Smart Perf Host主要提供性能
    发表于 11-09 08:35

    非常实用,推荐一种面向对象思维的单片机程序框架

    非常实用,推荐一种面向对象思维的单片机程序框架
    的头像 发表于 10-24 18:03 355次阅读
    非常实用,推荐一种面向<b class='flag-5'>对象</b>思维的单片机程序<b class='flag-5'>框架</b>

    标准系统:博终端3568工控(RK3568)

    厂家(全称) 深圳市博终端科技有限公司 技术联系人 市场联系人 兼容性测评 代码是否在社区 硬件状态 具体进展 OpenHarmony适配版本 上电启动 内核 触摸屏 LCD
    发表于 10-19 11:00

    对象转换工具:MapStruct 库

    相互转换。 今天给大家介绍一个对象转换工具MapStruct,代码简洁安全、性能高,强烈推荐。 MapStruct简介 MapStruct是一个代码生成器,它基于约定优于配置,极大地简化了Java Bean类型之间映射的实现。特
    的头像 发表于 10-08 14:39 739次阅读

    OpenHarmony AI框架开发指导

    一、概述 1、功能简介 AI业务子系统是OpenHarmony提供原生的分布式AI能力的子系统。AI业务子系统提供了统一的AI引擎框架实现算法能力快速插件化集成。 AI引擎
    发表于 09-19 18:54

    Qt For OpenHarmony

    OpenHarmony支持,申请OH_QT sig毕业 ● 开发Qt工程转换DevEco工程工具实现快速的应用迁移配置 2.2►► Qt 配套开发
    发表于 09-15 15:39

    深度学习算法框架学习

    深度学习算法框架学习 深度学习是一种非常强大的机器学习方法,它可以用于许多不同的应用程序,例如计算机视觉、语言处理和自然语言处理。然而,实现深度学习技术需要使用一些算法
    的头像 发表于 08-17 16:11 487次阅读

    面向万物智联的应用框架的思考与探索

    。最上层提供了自研声明式UI范式,也支持类Web范式;中间层为方舟编译器和运行时、声明式UI后端引擎以及渲染引擎,下层为平台适配层和平台桥接层。此外,ArkUI开发框架配套了相应的IDE开发
    发表于 08-08 17:04

    Linux内核网络拥塞控制算法实现框架(三)

    下面看一个特别重要的框架,也可以称为是拥塞控制引擎,如下结构体所示, tcp_congestion_ops描述了一套拥塞控制算法所需要支持的操作 。这个框架定义了一些钩子函数, Linux内核
    的头像 发表于 07-28 11:38 726次阅读
    Linux内核网络拥塞控制<b class='flag-5'>算法</b>的<b class='flag-5'>实现</b><b class='flag-5'>框架</b>(三)

    Linux内核网络拥塞控制算法的具体实现框架(一)

    控制算法,有很大差别。本文从Linux内核源码中学习网络拥塞控制算法的具体实现框架。从当前网络拥塞控制算法的发展历程上看,网络拥塞控制
    的头像 发表于 07-28 11:32 508次阅读
    Linux内核网络拥塞控制<b class='flag-5'>算法</b>的具体<b class='flag-5'>实现</b><b class='flag-5'>框架</b>(一)

    75.75 常用工具概述与Jprofiler的演示

    代码项目开发
    充八万
    发布于 :2023年07月18日 06:22:17