百度全功能AI開發(fā)平臺BML自動超參搜索技術(shù)全面解析

在人工智能領(lǐng)域,算法工程師在訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的過程中,完成網(wǎng)絡(luò)構(gòu)建和準(zhǔn)備好訓(xùn)練數(shù)據(jù)后,往往需要對模型進(jìn)行各種參數(shù)優(yōu)化,以獲得更好的模型效果。但調(diào)參其實并不簡單,背后往往是通宵達(dá)旦的參數(shù)調(diào)試與效果驗證,并需要做大量的實驗,不僅耗時也耗費大量算力。

這個時候,往往想嘗試自動超參搜索,但又開始擔(dān)心算力要求所帶來的額外訓(xùn)練成本。

莫慌!百度全功能AI開發(fā)平臺BML帶著免費算力額度與自動超參搜索能力來了!

先來介紹百度最近全新升級的BML,何方神圣?

全功能AI開發(fā)平臺BML(Baidu Machine Learning) ,是為企業(yè)和個人開發(fā)者提供機器學(xué)習(xí)和深度學(xué)習(xí)一站式AI開發(fā)服務(wù),并提供高性價比的算力資源,助力企業(yè)快速構(gòu)建高精度AI應(yīng)用。BML提供了從數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)標(biāo)注、智能標(biāo)注與多人標(biāo)注、模型訓(xùn)練生產(chǎn)到模型管理、云端及離線推理服務(wù)管理等AI開發(fā)過程的全生命周期管理功能。

BML內(nèi)置百度超大規(guī)模預(yù)訓(xùn)練模型,只需少量數(shù)據(jù)即可獲得高精度模型效果。目前,BML已經(jīng)支持腳本調(diào)參、Notebook與自定義作業(yè)這三種開發(fā)建模方式,靈活匹配企業(yè)開發(fā)者的開發(fā)習(xí)慣。

在目前的腳本調(diào)參使用流程中,BML已經(jīng)預(yù)設(shè)了模型超參數(shù),但由于用戶數(shù)據(jù)集內(nèi)容豐富多樣,預(yù)設(shè)的超參數(shù)很難在所有的數(shù)據(jù)集上得到很好的訓(xùn)練效果。用戶可以自行調(diào)整超參數(shù),但是手動調(diào)參十分耗費人力。為了減輕用戶在調(diào)參上的精力投入, BML的研發(fā)大佬們?nèi)找箠^戰(zhàn),為用戶上線了自動超參搜索的功能,幫助用戶自動搜索效果較優(yōu)的超參組合,省去調(diào)參的煩惱。

話不多說,進(jìn)入本次正題,百度BML的自動超參搜索技術(shù)有哪些亮點?

提供多種搜索算法

所謂“超參”,有別于模型網(wǎng)絡(luò)結(jié)構(gòu)內(nèi)部各層的參數(shù),是指需要人為調(diào)整,通過人為經(jīng)驗設(shè)置來提高模型效果的參數(shù),常見的超參包括學(xué)習(xí)率(learning_rate)、批樣本數(shù)量(batch_size)等。在超參搜索的過程中,由于模型復(fù)雜、計算成本很高,且每個超參數(shù)都有較大的取值范圍,導(dǎo)致搜索空間十分龐大,因此我們需要有“自動”超參搜索。

自動超參搜索相比于人工調(diào)參,主要是省去了人工觀察實驗結(jié)果并調(diào)整參數(shù)再試驗的過程,自動超參搜索把這個步驟用各種搜索算法來代替。

BML提供的搜索算法有:

1.隨機搜索

顧名思義是在參數(shù)變量的變化區(qū)間中隨機采樣參數(shù)組合成候選集,應(yīng)用候選集進(jìn)行訓(xùn)練和效果對比。隨機搜索是普適的效率較高的搜索方法,通常作為基線標(biāo)準(zhǔn),適用于對效率要求較高的情況,但不能保證一定能搜索到最佳的超參。

2.貝葉斯搜索

在搜索空間中隨機選取初始超參數(shù)點,然后根據(jù)已有超參對應(yīng)的指標(biāo)結(jié)果擬合概率模型,通過概率模型推測最佳超參點,接著再試驗得到這些超參點的結(jié)果。如此反復(fù)優(yōu)化,再有限試驗次數(shù)中搜索出合適的超參數(shù)。基于模型的序貫優(yōu)化方法(SMBO, Sequential Model-Based Optimization)是貝葉斯搜索的一種范式,包括兩個部分: 代理模型(surrogate model) 和 采集函數(shù)(acquisition function)。根據(jù)代理模型和采集函數(shù)的不同,貝葉斯搜索方法也有許多實現(xiàn)形式,其中TPE(Tree-structured Parzen Estimator)是一種全局探索能力較佳的方法,采用核密度估計方法(KDE, Kernel Density Estimation)生成代理模型,采用EI(Expected Improvement)作為其采集函數(shù)生成新采樣點。

3.進(jìn)化算法

進(jìn)化算法是一種基于種群概念的超參搜索策略,把超參配置視為一個種群,并行優(yōu)化多個種群并在種群內(nèi)部進(jìn)行優(yōu)勝劣汰的篩選,最終輸出最佳模型。這個過程(如下圖所示)是從遺傳算法獲得的靈感,種群的初始化采用隨機的方式生成,個體的優(yōu)勝劣汰具體指利用(exploit)和探索(explore)兩個步驟,不僅可能會從表現(xiàn)較好的個體中復(fù)制參數(shù),它還能通過隨機擾動修正當(dāng)前的值而探索新的超參數(shù)組合。

圖片來源:https://arxiv.org/pdf/1711.09846v1.pdf

百度創(chuàng)新提出了隨機微分方程無梯度優(yōu)化算法PSHE2,采用哈密爾頓動力系統(tǒng)搜索參數(shù)空間中“勢能”最低的點以替代隨機擾動,加速迭代收斂。超參搜索過程中想要求得最優(yōu)解就是要找到更新超參數(shù)組合的方法,即如何更新超參數(shù),才能讓算法更快更好的收斂到最優(yōu)解。PSHE2算法根據(jù)超參數(shù)本身歷史的最優(yōu),在一定隨機擾動的情況下決定下一步的更新方向。過程如圖所示。

圖片來源:https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.5/docs/tutorial/autofinetune.md

自動超參搜索方法比較

上表歸納了一下這些搜索方法的優(yōu)缺點。總之,網(wǎng)格搜索和隨機搜索實現(xiàn)上比較簡單,不利用先驗知識選擇下一組超參數(shù),其中隨機搜索效率相對較高。貝葉斯搜索和進(jìn)化算法需要用前一輪的信息進(jìn)行迭代搜索,搜索效率明顯提升。

BML自動超參搜索的實現(xiàn):系統(tǒng)架構(gòu)

BML自動超參搜索功能基于百度自研自動超參搜索服務(wù),服務(wù)運行過程如下圖所示,依靠百度智能云CCE算力,支持多自動搜索任務(wù)并發(fā)。為了提供一個“好用”的自動超參搜索服務(wù),架構(gòu)實現(xiàn)時在并發(fā)搜索效率提升和系統(tǒng)容錯方面著重進(jìn)行了考慮。

一次超參搜索任務(wù)包含以下流程:

  1. 業(yè)務(wù)平臺把超參搜索任務(wù)的用戶配置信息提交到超參搜索服務(wù),會創(chuàng)建一次搜索實驗(Experiment),并記錄到db中。

  2. 搜索服務(wù)把任務(wù)提交到Experiment controller, 由controller初始化創(chuàng)建Trial管理模塊,并負(fù)責(zé)Experiment生命周期的管理。

  3. Trial是具體的訓(xùn)練試驗,一個Experiment會產(chǎn)生多個Trial來探索不同超參數(shù)組合的最終效果。Tuner是超參生成的模塊,會根據(jù)選擇的超參搜索算法,推薦下一個Trial所使用的超參值。在Trial管理模塊中,Exp Manager會負(fù)責(zé)生成若干Trial, 向Tuner請求具體的試驗超參數(shù),并向Trial Scheduler發(fā)送Trial任務(wù)信息。

  4. Trial Scheduler會與底層資源交互實際啟動Trial。Trial Scheduler會管理所有Trial的生命周期。

  5. 每個Trial運行完成后,會向Exp Manager匯報指標(biāo)等信息,用于匯報給tuner并記錄到db。

BML自動超參搜索主要有以下特性:

1、簡單易用:相比于同類產(chǎn)品的復(fù)雜配置,BML在為用戶提供必須的開放配置項的前提下,盡可能減少超參配置的繁瑣程度,凡是可以自動化的工作均不對用戶可見。

2、模型豐富:與腳本調(diào)參上提供的豐富的模型打通,可以直接配置化完成相應(yīng)任務(wù)的搜索,甚至不用寫代碼!

3、容錯機制:自動超參搜索任務(wù)具有模型訓(xùn)練次數(shù)多、任務(wù)整體運行時間長的特點,受顯存資源限制,有些搜索出的超參數(shù)無法成功運行。兼顧搜索效果和可用產(chǎn)出,增設(shè)模型訓(xùn)練失敗次數(shù)閾值,把Experiment和Trial這樣多任務(wù)的復(fù)雜狀態(tài)管理分拆到各層模塊中,盡可能為用戶提供搜索出的可用結(jié)果。

4、支持早停與采樣:搜索框架內(nèi)部支持自動早停,當(dāng)達(dá)到設(shè)定的預(yù)期結(jié)果時即可自動停止;同時也支持在界面上手動提前停止,減少用戶的等待時間,避免不必要的算力消耗。支持用戶選擇大數(shù)據(jù)集時自動進(jìn)行采樣,減少超參搜索訓(xùn)練耗時,以盡快搜索出合適的超參為上。

5、高效分布式智能搜索:深度學(xué)習(xí)模型的訓(xùn)練時間往往較長,對于大規(guī)模數(shù)據(jù)集或者復(fù)雜模型的搜索任務(wù),單機串行的搜索方式幾乎不可用。我們注意到有的搜索算法中每次試驗是可以獨立進(jìn)行訓(xùn)練的(如網(wǎng)格搜索、隨機搜索),可以直接對所有試驗并行化;有的搜索算法雖然本質(zhì)基于迭代,但每個迭代中的試驗運行仍然是相互獨立的,因此我們可以在迭代內(nèi)部進(jìn)行并行化搜索。BML內(nèi)部實現(xiàn)了智能調(diào)度系統(tǒng),根據(jù)不同的算法類型,采用不同的并發(fā)策略,可以大幅度降低整體搜索時間。

上手實操:自動超參搜索使用攻略

  1. 首先點擊 https://ai.baidu.com/bml/app/project/script/list 創(chuàng)建一個腳本調(diào)參項目,如果已經(jīng)有項目了,直接用就可以!目前支持超參搜索的項目類型有圖像分類(單標(biāo)簽和多標(biāo)簽)及物體檢測,創(chuàng)建對應(yīng)類型的項目就可以了

  2. 在項目里新建任務(wù),配置好任務(wù)的網(wǎng)絡(luò)、數(shù)據(jù)、腳本之后,就可以看到“配置超參數(shù)”的選項了。這里如果已經(jīng)有超參搜索的結(jié)果,可以直接勾選“已有超參搜索結(jié)果”來使用,如果第一次使用還沒有,就直接選擇“自動超參搜索”。

  3. 目前BML支持了三種超參搜索算法,如圖,分別是貝葉斯搜索、隨機搜索和進(jìn)化算法,可以根據(jù)自己需要選擇一種來搜索。具體配置項說明可以參考技術(shù)文檔。

3.1 貝葉斯搜索的參數(shù)說明

【初始點數(shù)量】代表貝葉斯搜索中,初始化時參數(shù)點的數(shù)量,該算法基于這些參數(shù)信息推測最優(yōu)點 ,填寫范圍1-20。

【最大并發(fā)量】貝葉斯搜索中,同時進(jìn)行試驗的數(shù)量,并發(fā)量越大,搜索效率越高,填寫范圍1-20。不過這個并發(fā)量也會受限于頁面最下方選擇的GPU數(shù)量,實際并發(fā)量是二者的較小值。

【超參范圍設(shè)置】:可以是默認(rèn)配置,也可以手動配置。默認(rèn)的話百度的工程師們已經(jīng)幫我們對不同網(wǎng)絡(luò)、GPU卡型設(shè)置了一個基本靠譜的搜索范圍,直接用就可以。當(dāng)然也可以手動配置,可以自定義各個超參的范圍,可以看到物體檢測支持以下這些超參自定義搜索范圍:


【最大搜索次數(shù)】:是指最多組合出多少組超參并跑試驗,當(dāng)然有可能會因為提前達(dá)到目標(biāo)而停止,節(jié)約費用。

【數(shù)據(jù)采樣比例】:使用超參搜索時,會對原始數(shù)據(jù)集進(jìn)行采樣后再訓(xùn)練,加快搜索速度。當(dāng)數(shù)據(jù)集并不大時,不推薦采樣喲,可能會影響最終效果,只有大數(shù)據(jù)量時才有使用采樣的必要。

【最高mAP/最高精確率】:是指大家期望模型效果可以達(dá)到的mAP(物體檢測)或準(zhǔn)確率(圖像分類)的值,當(dāng)試驗中達(dá)到這個值了搜索就會停止,避免后續(xù)浪費搜索時間。

3.2 隨機搜索參數(shù)說明

隨機搜索最簡單啦,就不需要再額外配置算法相關(guān)的參數(shù)了,其它公用的選項和貝葉斯搜索的含義是一樣的,參考貝葉斯搜索即可。

3.3 進(jìn)化算法參數(shù)說明


進(jìn)化算法是一種效果較好的算法,應(yīng)用此算法時也需要進(jìn)行較多的選項設(shè)置:

【迭代輪數(shù)】:進(jìn)化算法運行中迭代的輪數(shù),范圍5-50。

【擾動間隔】:進(jìn)化算法每隔幾個epoch就會進(jìn)行隨機擾動,利用隨機因素防止算法結(jié)果收斂于局部最優(yōu)解。

【擾動比例】:類似于染色體交叉的形式,迭代中一個種群內(nèi)最好與最壞的個體依據(jù)擾動比例進(jìn)行交叉。

【隨機初始化概率】:在擾動中,有一定概率對個體的超參數(shù)進(jìn)行初始化。

【種群個體數(shù)量】:一個個體代表一種超參數(shù)設(shè)置,一個種群中包含多個個體。

其它選項和貝葉斯搜索的含義一致,也不重復(fù)了。進(jìn)化算法的配置需要對算法的原理有一定的了解,如果對算法不明白的,就直接用百度給的默認(rèn)值吧!

4.超參的選項設(shè)置完成了,最后選擇GPU卡類型和數(shù)量,以及最大搜索時間,就可以提交任務(wù)啦!這里默認(rèn)的搜索時間是24小時,畢竟超參搜索會運行多次試驗,時間會比較長,需要耐心等待,當(dāng)然如果選的GPU卡數(shù)越多,并發(fā)試驗數(shù)就越高,從提交任務(wù)到搜索完成的耗時就會變少,這是顯而易見的。

5.任務(wù)提交之后,過一會當(dāng)任務(wù)進(jìn)入“超參搜索中”的狀態(tài)時,就可以看到各個試驗的進(jìn)度了,包括各個試驗的狀態(tài)、日志和準(zhǔn)確率(mAP)




6.超參搜索訓(xùn)練完成后,效果最優(yōu)的5次試驗可以看到詳細(xì)的評估結(jié)果,也能用于后續(xù)的效果校驗和發(fā)布。當(dāng)然,如果在超參搜索時對數(shù)據(jù)進(jìn)行了采樣,這時候可以重新發(fā)起一次訓(xùn)練任務(wù),用這次搜索出來效果滿意的超參數(shù)進(jìn)行全量數(shù)據(jù)訓(xùn)練,從而獲得完整數(shù)據(jù)的模型效果

效果才是硬道理:超參搜索效果提升高達(dá)20%+

我們對比了圖像分類、物體檢測、實例分割等任務(wù)在使用普通腳本調(diào)參和超參搜索的效果情況,以下是5個不同數(shù)據(jù)集在BML平臺上分別使用默認(rèn)腳本調(diào)參參數(shù)、超參搜索使用進(jìn)化算法、超參搜索使用貝葉斯搜索算法的效果對比。圖中左邊縱軸為模型的準(zhǔn)確率,右邊縱軸為超參搜索算法在效果上提升的比例。可以看到在不同數(shù)據(jù)集上使用超參搜索后效果均有提升,在默認(rèn)參數(shù)精度已經(jīng)超過85%的情況下,使用超參搜索仍能提升約5%,在默認(rèn)參數(shù)效果較差的情況下,超參搜索的提升效果更為明顯,可高達(dá)22%。


在常規(guī)操作下,可用的深度學(xué)習(xí)自動超參搜索由于需要集群計算資源,往往被認(rèn)為只有大公司才能配置,普通開發(fā)者難以上手嘗試。通過使用百度全功能AI開發(fā)平臺BML,預(yù)算有限也有機會用上自動超參搜索,開發(fā)效率瞬間搭上火箭速度,擺脫人力“煉丹”的束縛。BML新用戶現(xiàn)在還提供100小時免費P4顯卡算力,羊毛在向你招手,快來薅一把!

BML官網(wǎng):https://ai.baidu.com/bml/

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )