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

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

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

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

先來(lái)介紹百度最近全新升級(jí)的BML,何方神圣?

全功能AI開發(fā)平臺(tái)BML(Baidu Machine Learning) ,是為企業(yè)和個(gè)人開發(fā)者提供機(jī)器學(xué)習(xí)和深度學(xué)習(xí)一站式AI開發(fā)服務(wù),并提供高性價(jià)比的算力資源,助力企業(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ā)過(guò)程的全生命周期管理功能。

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ù),但是手動(dòng)調(diào)參十分耗費(fèi)人力。為了減輕用戶在調(diào)參上的精力投入, BML的研發(fā)大佬們?nèi)找箠^戰(zhàn),為用戶上線了自動(dòng)超參搜索的功能,幫助用戶自動(dòng)搜索效果較優(yōu)的超參組合,省去調(diào)參的煩惱。

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

提供多種搜索算法

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

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

BML提供的搜索算法有:

1.隨機(jī)搜索

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

2.貝葉斯搜索

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

3.進(jìn)化算法

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

圖片來(lái)源:https://arxiv.org/pdf/1711.09846v1.pdf

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

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

自動(dòng)超參搜索方法比較

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

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

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

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

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

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

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

  4. Trial Scheduler會(huì)與底層資源交互實(shí)際啟動(dòng)Trial。Trial Scheduler會(huì)管理所有Trial的生命周期。

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

BML自動(dòng)超參搜索主要有以下特性:

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

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

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

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

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

上手實(shí)操:自動(dòng)超參搜索使用攻略

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

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

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

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

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

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

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


【最大搜索次數(shù)】:是指最多組合出多少組超參并跑試驗(yàn),當(dāng)然有可能會(huì)因?yàn)樘崆斑_(dá)到目標(biāo)而停止,節(jié)約費(fèi)用。

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

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

3.2 隨機(jī)搜索參數(shù)說(shuō)明

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

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


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

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

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

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

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

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

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

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

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




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

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

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


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

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

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