超參搜索簡介
ModelArts新版訓(xùn)練中新增了超參搜索功能,自動(dòng)實(shí)現(xiàn)模型超參搜索,為您的模型匹配最優(yōu)的超參。
在模型訓(xùn)練過程中,有很多超參需要根據(jù)任務(wù)進(jìn)行調(diào)整,比如learning_rate、weight_decay等等,這一工作往往需要一個(gè)有經(jīng)驗(yàn)的算法工程師花費(fèi)一定精力和大量時(shí)間進(jìn)行手動(dòng)調(diào)優(yōu)。ModelArts支持的超參搜索功能,在無需算法工程師介入的情況下,即可自動(dòng)進(jìn)行超參的調(diào)優(yōu),在速度和精度上超過人工調(diào)優(yōu)。
ModelArts支持以下三種超參搜索算法:
1、貝葉斯優(yōu)化(SMAC)
2、TPE算法
3、模擬退火算法(Anneal)
貝葉斯優(yōu)化(SMAC)
貝葉斯優(yōu)化假設(shè)超參和目標(biāo)函數(shù)存在一個(gè)函數(shù)關(guān)系?;谝阉阉鞒瑓⒌脑u(píng)估值,通過高斯過程回歸來估計(jì)其他搜索點(diǎn)處目標(biāo)函數(shù)值的均值和方差。根據(jù)均值和方差構(gòu)造采集函數(shù)(Acquisition Function),下一個(gè)搜索點(diǎn)為采集函數(shù)的極大值點(diǎn)。相比網(wǎng)格搜索,貝葉斯優(yōu)化會(huì)利用之前的評(píng)估結(jié)果,從而降低迭代次數(shù)、縮短搜索時(shí)間;缺點(diǎn)是不容易找到全局最優(yōu)解。
參數(shù)
|
說明
|
取值參考
|
---|---|---|
num_samples |
搜索嘗試的超參組數(shù) |
int,一般在10-20之間,值越大,搜索時(shí)間越長,效果越好 |
kind |
采集函數(shù)類型 |
string,默認(rèn)為'ucb',可能取值還有'ei'、'poi',一般不建議用戶修改 |
kappa |
采集函數(shù)ucb的調(diào)節(jié)參數(shù),可理解為上置信邊界 |
float,一般不建議用戶修改 |
xi |
采集函數(shù)poi和ei的調(diào)節(jié)參數(shù) |
float,一般不建議用戶修改 |
TPE算法
TPE算法全稱Tree-structured Parzen Estimator,是一種利用高斯混合模型來學(xué)習(xí)超參模型的算法。在每次試驗(yàn)中,對(duì)于每個(gè)超參,TPE為與最佳目標(biāo)值相關(guān)的超參維護(hù)一個(gè)高斯混合模型l(x),為剩余的超參維護(hù)另一個(gè)高斯混合模型g(x),選擇l(x)/g(x)最大化時(shí)對(duì)應(yīng)的超參作為下一組搜索值。
參數(shù)
|
說明
|
取值參考
|
---|---|---|
num_samples |
搜索嘗試的超參組數(shù) |
int,一般在10-20之間,值越大,搜索時(shí)間越長,效果越好 |
n_initial_points |
采用TPE接近目標(biāo)函數(shù)之前,對(duì)目標(biāo)函數(shù)的隨機(jī)評(píng)估數(shù) |
int,一般不建議用戶修改 |
gamma |
TPE算法的一定分位數(shù),用于劃分l(x)和g(x) |
float,范圍(0,1),一般不建議用戶修改 |
模擬退火算法(Anneal)
模擬退火算法即Anneal算法,是隨機(jī)搜索中一個(gè)簡單但有效的變體,它利用了響應(yīng)曲面中的平滑度。退火速率不自適應(yīng)。Anneal算法從先前采樣的一個(gè)試驗(yàn)點(diǎn)作為起點(diǎn),然后從與先驗(yàn)分布相似的分布中采樣每組超參數(shù),但其密度更集中在我們選擇的試驗(yàn)點(diǎn)周圍。隨著時(shí)間推移,算法會(huì)傾向于從越來越接近最佳點(diǎn)處采樣。在采樣過程中,算法可能繪制一個(gè)次佳試驗(yàn)作為最佳試驗(yàn),以一定概率跳出局部最優(yōu)解。
參數(shù)
|
說明
|
取值參考
|
---|---|---|
num_samples |
搜索嘗試的超參組數(shù) |
int,一般在10-20之間,值越大,搜索時(shí)間越長,效果越好 |
avg_best_idx |
要探索試驗(yàn)的幾何分布平均,從按照分?jǐn)?shù)排序的試驗(yàn)中選擇 |
float,一般不建議用戶修改 |
shrink_coef |
隨著更多的點(diǎn)被探索,鄰域采樣大小的減少率 |
float,一般不建議用戶修改 |
創(chuàng)建超參搜索作業(yè)
背景信息
對(duì)于用戶希望優(yōu)化的超參,需在“超參”設(shè)置中定義,可以給定名稱、類型、默認(rèn)值、約束等,具體設(shè)置方法可以參考定義超參。
如果用戶使用的AI引擎為pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64和tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64,并且優(yōu)化的超參類型為float類型,ModelArts支持用戶使用超參搜索功能。
在0代碼修改的基礎(chǔ)下,實(shí)現(xiàn)算法模型的超參搜索。需要完成以下步驟:
準(zhǔn)備工作
1、數(shù)據(jù)已完成準(zhǔn)備:已在ModelArts中創(chuàng)建可用的數(shù)據(jù)集,或者您已將用于訓(xùn)練的數(shù)據(jù)集上傳至OBS目錄。
2、請(qǐng)準(zhǔn)備好訓(xùn)練腳本,并上傳至OBS目錄。訓(xùn)練腳本開發(fā)指導(dǎo)參見開發(fā)自定義腳本。
3、在訓(xùn)練代碼中,用戶需打印搜索指標(biāo)參數(shù)。
4、已在OBS創(chuàng)建至少1個(gè)空的文件夾,用于存儲(chǔ)訓(xùn)練輸出的內(nèi)容。
5、由于訓(xùn)練作業(yè)運(yùn)行需消耗資源,確保賬戶未欠費(fèi)。
6、確保您使用的OBS目錄與ModelArts在同一區(qū)域。
創(chuàng)建算法
進(jìn)入ModelArts控制臺(tái),參考創(chuàng)建算法操作指導(dǎo),創(chuàng)建自定義算法。在配置自定義算法參數(shù)時(shí),需關(guān)注“超參”和“支持的策略”參數(shù)的設(shè)置。
對(duì)于用戶希望優(yōu)化的超參,需在“超參”設(shè)置中定義,可以給定名稱、類型、默認(rèn)值、約束等。
單擊勾選自動(dòng)搜索,用戶為算法設(shè)置算法搜索功能。自動(dòng)搜索作業(yè)運(yùn)行過程中,ModelArts后臺(tái)通過指標(biāo)正則表達(dá)式獲取搜索指標(biāo)參數(shù),朝指定的優(yōu)化方向進(jìn)行超參優(yōu)化。用戶需要在代碼中打印搜索參數(shù)并在控制臺(tái)配置參數(shù),具體可參見創(chuàng)建算法。
創(chuàng)建訓(xùn)練作業(yè)(New)
登錄ModelArts控制臺(tái),參考創(chuàng)建訓(xùn)練作業(yè)操作指導(dǎo),創(chuàng)建訓(xùn)練作業(yè)。用戶需關(guān)注以下操作才能開啟超參搜索。
當(dāng)您選擇支持超參搜索的算法,需單擊超級(jí)參數(shù)的范圍設(shè)置按鈕才能開啟超參搜索功能。
開啟超參搜索功能后,用戶可以設(shè)置搜索指標(biāo)、搜索算法和搜索算法參數(shù)。三個(gè)參數(shù)顯示的支持值與算法管理模塊的超參設(shè)置一一對(duì)應(yīng)。
完成超參搜索作業(yè)的創(chuàng)建后,訓(xùn)練作業(yè)需要運(yùn)行一段時(shí)間。