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

開啟超參搜索功能后,用戶可以設(shè)置搜索指標(biāo)、搜索算法和搜索算法參數(shù)。三個參數(shù)顯示的支持值與算法管理模塊的超參設(shè)置一一對應(yīng)。

完成超參搜索作業(yè)的創(chuàng)建后,訓(xùn)練作業(yè)需要運行一段時間。