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