KeenTune(輕豚)是一款 AI 算法與專家知識(shí)庫(kù)雙輪驅(qū)動(dòng)的操作系統(tǒng)全棧式智能優(yōu)化產(chǎn)品,為主流的操作系統(tǒng)提供輕量化、跨平臺(tái)的一鍵式性能調(diào)優(yōu),讓應(yīng)用在智能定制的運(yùn)行環(huán)境發(fā)揮最優(yōu)性能。自 2021年 9 月正式成立 SIG 并宣布開源以來,受到了廣大開發(fā)者的關(guān)注。KeenTune 的整體開源框架聚焦于通用和靈活的設(shè)計(jì)原則,其中對(duì)于調(diào)優(yōu)場(chǎng)景的擴(kuò)展,通過分布式架構(gòu)以及標(biāo)準(zhǔn)化的場(chǎng)景配置模式,可以方便的實(shí)現(xiàn)對(duì)于 Linux 內(nèi)核參數(shù),應(yīng)用配置參數(shù),編譯器優(yōu)化參數(shù),benchmark 配置參數(shù)等調(diào)優(yōu)對(duì)象和配套工具的快速適配。
今天, KeenTune 再次帶來開源重磅特性——新增通用的調(diào)優(yōu)算法框架:keenopt。有了 keenopt 的加持,KeenTune 不再僅僅是支持靈活擴(kuò)展調(diào)優(yōu)場(chǎng)景的調(diào)優(yōu)工具,還成長(zhǎng)為了具備靈活擴(kuò)展調(diào)優(yōu)算法的調(diào)優(yōu)平臺(tái),不僅可以作為性能調(diào)優(yōu)工程師的法寶,也可以成為算法工程師的利器。Keenopt 調(diào)優(yōu)算法框架的開源設(shè)計(jì),同樣旨在方便快捷的擴(kuò)展學(xué)術(shù)界和工業(yè)界新提出的調(diào)優(yōu)算法,以及結(jié)合實(shí)際需要定制化的調(diào)優(yōu)算法。 聰明的童鞋一定會(huì)自然問出一個(gè)問題:為什么不能只調(diào)用當(dāng)前流行的調(diào)優(yōu)算法庫(kù),而要打造一個(gè)算法框架呢?這就要從我們調(diào)優(yōu)過程中趟過的一個(gè)一個(gè)坑說起了...
坑洼調(diào)優(yōu)路
一提起調(diào)優(yōu),首先進(jìn)入讀者腦海的就是近年來愈發(fā)流行的針對(duì)機(jī)器學(xué)習(xí)模型,尤其是神經(jīng)網(wǎng)絡(luò)超參數(shù)的調(diào)優(yōu)算法。這些調(diào)優(yōu)算法從貝葉斯優(yōu)化和遺傳算法出發(fā),凝聚了豐富多彩的調(diào)優(yōu)思路,已經(jīng)成為提升機(jī)器學(xué)習(xí)算法研發(fā)效率的利器。那么這些大多圍繞著機(jī)器學(xué)習(xí)模型超參數(shù)優(yōu)化的算法,是不是可以直接應(yīng)用于比如系統(tǒng)軟件配置和參數(shù)調(diào)優(yōu)上來呢?答案是經(jīng)典的 yes and no。 首先,經(jīng)典的貝葉斯優(yōu)化算法(基于高斯代理模型)及其衍生算法(如 TPE),當(dāng)然是可以直接應(yīng)用于系統(tǒng)參數(shù)調(diào)優(yōu)的。但概括來說,這類算法整體的調(diào)優(yōu)效率卻經(jīng)常無法滿足無論是機(jī)器學(xué)習(xí)模型超參數(shù)調(diào)優(yōu)還是系統(tǒng)參數(shù)調(diào)優(yōu)。相應(yīng)的,近年來的學(xué)術(shù)創(chuàng)新主要圍繞著進(jìn)一步提升調(diào)優(yōu)的整體效率展開。也就是在這個(gè)層面上,機(jī)器學(xué)習(xí)模型超參數(shù)的調(diào)優(yōu)和系統(tǒng)參數(shù)調(diào)優(yōu),走上了不同的道路。
對(duì)于機(jī)器學(xué)習(xí)模型超參數(shù)調(diào)優(yōu)來說,調(diào)優(yōu)的時(shí)間開銷主要來自兩個(gè)方面: (1)調(diào)優(yōu)算法搜索策略所需要的運(yùn)算耗時(shí)。 (2)機(jī)器學(xué)習(xí)模型訓(xùn)練的耗時(shí)。 對(duì)于近年來逐漸廣為人知的基于高保真原理的優(yōu)化算法,如 Successive Halving[1],HyperBand[2] 等,主要聚焦于減少第二個(gè)方面的時(shí)間開銷,畢竟和訓(xùn)練動(dòng)輒千萬上億級(jí)參數(shù)的模型,調(diào)優(yōu)算法搜索策略的開銷簡(jiǎn)直不值一提。幸運(yùn)的事,機(jī)器學(xué)習(xí)模型訓(xùn)練的耗時(shí)確實(shí)是靈活可調(diào)整的。 然而,對(duì)于系統(tǒng)參數(shù)調(diào)優(yōu)來說,雖然調(diào)優(yōu)的時(shí)間開銷也主要來自兩個(gè)方面: (1)調(diào)優(yōu)算法搜索策略所需要的運(yùn)算耗時(shí)。 (2)評(píng)估調(diào)優(yōu)推薦參數(shù)配置的耗時(shí)。 但是其中(2)的耗時(shí)由于往往來自調(diào)用標(biāo)準(zhǔn) benchmark 工具獲得,是固定不可調(diào)整的。具體例子可以設(shè)想一下運(yùn)行 Fio、SPEC CPU 2017 這類 benchmark 工具的過程。因此,針對(duì)系統(tǒng)參數(shù)調(diào)優(yōu)的算法領(lǐng)域,無法通過優(yōu)化(2)的開銷曲線救國(guó),只能老老實(shí)實(shí)的提升調(diào)優(yōu)算法的搜索策略。到此,我們來到了第二個(gè)坑。
參數(shù)調(diào)優(yōu)可謂是“維度災(zāi)難”的一個(gè)重災(zāi)區(qū)?;谪惾~斯優(yōu)化框架的調(diào)優(yōu)算法,本質(zhì)上是在一個(gè)漆黑的空間中摸索,而隨著維度的增加,這個(gè)漆黑的環(huán)境的 volume 急劇增大,摸索的時(shí)間成本的增加是不可避免的。對(duì)于機(jī)器學(xué)習(xí)模型超參數(shù)的調(diào)優(yōu)來說,這個(gè)維度往往在十幾到二十幾這個(gè)量級(jí),維度的鐵拳仍然比較溫柔。而對(duì)于系統(tǒng)參數(shù)調(diào)優(yōu)來說,這個(gè)維度往往在幾十到上百甚至過千的量級(jí)。在這個(gè)量級(jí)維度的鐵拳下,經(jīng)典的貝葉斯調(diào)優(yōu)算法及其衍生算法,往往就會(huì)被錘成齏粉。以基于高斯代理模型的貝葉斯優(yōu)化算法來說,我們可以比較粗糙的概括這種算法為“散點(diǎn)”法,這并不是說這類算法就是亂槍打鳥,畢竟有強(qiáng)大的貝葉斯原理作為引領(lǐng),搜索的策略和路徑還是有跡可循的。 然而,當(dāng)維度足夠高的時(shí)候,已經(jīng)有相關(guān)研究證明,貝葉斯優(yōu)化算法和隨機(jī)搜索算法基本上是一對(duì)臥龍鳳雛的存在[3]。因此,近年來 AI 領(lǐng)域頂會(huì)的學(xué)術(shù)成果,已經(jīng)開始關(guān)注高維空間中的貝葉斯優(yōu)化問題,由這種“散點(diǎn)”法,逐漸過渡到“局域”法[4,5]。這里“局域”又是我們的一個(gè)比較概括的說法,主要原理是在高維空間中,搜索主要被限制在于較小的局部區(qū)域進(jìn)行,而各個(gè)局部區(qū)域本身的取舍依然服從貝葉斯原理。這類“局域”法有效的限制了搜索區(qū)域的 volume,因此往往有更高效的收斂和更好的調(diào)優(yōu)效果。尤其是更好的收斂效果這種特性,對(duì)于系統(tǒng)參數(shù)的調(diào)優(yōu)實(shí)踐來說,可謂一定程度上減輕了燃眉之急,因?yàn)閷?shí)際的系統(tǒng)參數(shù)調(diào)優(yōu)實(shí)踐,往往要考慮系統(tǒng)資源開銷和整體時(shí)間限制,從而需要在盡可能少的調(diào)優(yōu)輪次中給出最優(yōu)或略低于最優(yōu)的調(diào)優(yōu)結(jié)果。當(dāng)我們欣喜的準(zhǔn)備吸取這些算法進(jìn)入 KeenTune 去磨刀霍霍的時(shí)候,我們來到了第三個(gè)坑。 如前所述,當(dāng)前主流的調(diào)優(yōu)算法庫(kù)或工具,往往圍繞著機(jī)器學(xué)習(xí)模型超參數(shù)調(diào)優(yōu)的場(chǎng)景進(jìn)行擴(kuò)展。因此如 Scikit-Optimize (skopt)[6] 和 NNI[7] 這類算法庫(kù),更多的聚焦于支持 Successive Halving 和 HyperBand 這些針對(duì)模型訓(xùn)練開銷優(yōu)化的算法,而對(duì)于解決高維貝葉斯優(yōu)化問題的算法不夠及時(shí)。此外,即使想在這些算法庫(kù)中定制化實(shí)現(xiàn)這些算法,也依然需要詳細(xì)的研讀這些庫(kù)中算法的實(shí)現(xiàn),照貓畫虎的在復(fù)雜的代碼邏輯中前進(jìn),這種苦楚只能說懂得都懂。因此,當(dāng)我們拔劍四顧的時(shí)候,刀鞘卻阻礙了我們披巾斬棘的身影。至此,讀者已經(jīng)和我們來到了同樣的境地,也看到那臨門一腳的必選項(xiàng) --打造更靈活通用的調(diào)優(yōu)算法框架。
KeenOpt 的初心
當(dāng)我們談?wù)搮?shù)調(diào)優(yōu)算法框架的時(shí)候,我們談?wù)摰氖?:
(1)算法集成和定制化的方便快捷。
(2)算法的標(biāo)準(zhǔn)化和模塊化。 圍繞著這兩個(gè)設(shè)計(jì)初心,我們的算法框架盡可能的將各個(gè)主要功能模塊獨(dú)立的抽象成類。
(圖3/ KeenOpt框架概圖) 如圖 3 所示,自頂向下的從優(yōu)化總體控制類,衍生出如隨機(jī)和網(wǎng)格搜索的經(jīng)典優(yōu)化算法類,和基于貝葉斯優(yōu)化的優(yōu)化算法類。其中優(yōu)化總體控制類,只要求提供 acquire() 和 feedback() 函數(shù),分別負(fù)責(zé)選取參數(shù)和獲得 benchmark 執(zhí)行的反饋結(jié)果。其中針對(duì)貝葉斯優(yōu)化的算法類,又進(jìn)一步抽象出:
調(diào)優(yōu)控制類:提供貝葉斯優(yōu)化必須依賴的接口參數(shù)。在最基礎(chǔ)的優(yōu)化類中,一定程度上實(shí)現(xiàn)了對(duì)于貝葉斯優(yōu)化算法接口的標(biāo)準(zhǔn)化,包括參數(shù)空間,歷史數(shù)據(jù)記錄,代理模型,和搜索策略。
參數(shù)空間類:參數(shù)空間可以靈活定義整型,浮點(diǎn)型,類別型的參數(shù)和其取值范圍。由于實(shí)際的調(diào)優(yōu)場(chǎng)景中,無可能出現(xiàn)真正意義上的連續(xù)參數(shù)空間,因此每個(gè)參數(shù)相應(yīng)的還搭配了可定義的步長(zhǎng)。
代理模型類:代理模型的選擇可以根據(jù)具體需要,靈活的選擇經(jīng)典回歸類機(jī)器學(xué)習(xí)模型和基于 pytorch 實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)類模型。
搜索策略類:具體的搜索策略可以實(shí)現(xiàn)經(jīng)典的貝葉斯優(yōu)化算法,也可以實(shí)現(xiàn)如上所述的“局域”搜索策略,整個(gè)類只要求實(shí)現(xiàn)具體的 search()方法。
下圖 4 中展示了當(dāng)前 KeenOpt 的支持的部分算法(TPE, LA-MCTS-Bo和LA-MCTS-TuRBO) 在 4 中常見的 synthetic 函數(shù)在低維(20)和高維(100)情況下的對(duì)比結(jié)果,可見“局域”算法確實(shí)比經(jīng)典貝葉斯優(yōu)化算法有更好的優(yōu)化結(jié)果和更高的收斂效率。
(圖4/ KeenOpt支持算法效果對(duì)比)
審核編輯:郭婷
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7095瀏覽量
124968 -
AI
+關(guān)注
關(guān)注
87文章
34274瀏覽量
275454
原文標(biāo)題:KeenTune的算法之心——KeenOpt 調(diào)優(yōu)算法框架 | 龍蜥技術(shù)
文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
xgboost超參數(shù)調(diào)優(yōu)技巧 xgboost在圖像分類中的應(yīng)用
Wilink WLAN IP實(shí)時(shí)調(diào)優(yōu)工具(RTTT)

MCF8316A調(diào)優(yōu)指南

MCT8316A調(diào)優(yōu)指南

MCT8315A調(diào)優(yōu)指南

MMC DLL調(diào)優(yōu)

TDA3xx ISS調(diào)優(yōu)和調(diào)試基礎(chǔ)設(shè)施

大數(shù)據(jù)從業(yè)者必知必會(huì)的Hive SQL調(diào)優(yōu)技巧
智能調(diào)優(yōu),使步進(jìn)電機(jī)安靜而高效地運(yùn)行

MMC SW調(diào)優(yōu)算法

如何調(diào)優(yōu)DS160PR410實(shí)現(xiàn)出色的信號(hào)完整性

TAS58xx系列通用調(diào)優(yōu)指南

AM6xA ISP調(diào)優(yōu)指南

如何進(jìn)行TI PCIe Gen5轉(zhuǎn)接驅(qū)動(dòng)器調(diào)優(yōu)

OSPI控制器PHY調(diào)優(yōu)算法

評(píng)論