近日,F(xiàn)acebook開源了兩款基于PyTorch的實(shí)驗(yàn)框架Ax和BoTorch。Ax是一個(gè)面向自適應(yīng)實(shí)驗(yàn)的理解、管理、部署和自動(dòng)化任務(wù)的通用平臺(tái),BoTorch則主要面向貝葉斯優(yōu)化任務(wù)。這兩個(gè)框架旨在簡(jiǎn)化PyTorch應(yīng)用中的自適應(yīng)實(shí)驗(yàn)流程。
在現(xiàn)代機(jī)器學(xué)習(xí)應(yīng)用中,對(duì)實(shí)驗(yàn)到生產(chǎn)的流程進(jìn)行簡(jiǎn)化是最難實(shí)現(xiàn)的任務(wù)之一。在已經(jīng)市場(chǎng)化深度學(xué)習(xí)框架中,F(xiàn)acebook的PyTorch因其高度靈活性成為數(shù)據(jù)科學(xué)界的最愛,PyTorch能夠?qū)崿F(xiàn)快速建模和實(shí)驗(yàn)。但是,深度學(xué)習(xí)應(yīng)用中的許多實(shí)驗(yàn)面臨的挑戰(zhàn)已經(jīng)超出了特定框架的能力范圍。
對(duì)于數(shù)據(jù)科學(xué)家來(lái)說(shuō),在對(duì)不同的模型或超參數(shù)配置進(jìn)行評(píng)估時(shí),通常會(huì)受到實(shí)驗(yàn)所需的昂貴計(jì)算資源和時(shí)間的障礙。近日,F(xiàn)acebook開源了兩個(gè)新框架,旨在簡(jiǎn)化PyTorch應(yīng)用程序中的自適應(yīng)實(shí)驗(yàn)流程:
Ax:一個(gè)易訪問(wèn)的通用平臺(tái),面向自適應(yīng)實(shí)驗(yàn)的理解、管理、部署和自動(dòng)化。
BoTorch:基于PyTorch,是一個(gè)靈活的現(xiàn)代庫(kù),用于貝葉斯優(yōu)化——一種高效的全局優(yōu)化的概率方法。
這兩種工具的目標(biāo)是降低PyTorch開發(fā)人員進(jìn)行快速實(shí)驗(yàn)的入門門檻,以便為特定問(wèn)題找到最佳模型。 Ax和BoTorch都基于概率模型,簡(jiǎn)化了機(jī)器學(xué)習(xí)問(wèn)題中給定環(huán)境下的探索流程。不過(guò)兩個(gè)框架針對(duì)的是實(shí)驗(yàn)問(wèn)題空間的不同維度。
BoTorch
BoTorch是一個(gè)基于PyTorch構(gòu)建的貝葉斯優(yōu)化庫(kù)。貝葉斯優(yōu)化的目標(biāo)是在有限的資源內(nèi)找到問(wèn)題的最優(yōu)解。通常,貝葉斯優(yōu)化用于解決黑盒優(yōu)化問(wèn)題,比如機(jī)器學(xué)習(xí)算法的超參數(shù)優(yōu)化,A / B測(cè)試以及許多其他科學(xué)和工程問(wèn)題。
貝葉斯優(yōu)化問(wèn)題試圖在無(wú)法獲取函數(shù)形式的情況下對(duì)一些昂貴的評(píng)估黑盒函數(shù)f進(jìn)行最大化。具體來(lái)說(shuō),優(yōu)化技術(shù)在一系列測(cè)試點(diǎn)處對(duì)f進(jìn)行評(píng)估,希望在少量評(píng)估之后確定接近最優(yōu)值。
為了實(shí)現(xiàn)這一目標(biāo),需要一種方法來(lái)推斷關(guān)于f尚未評(píng)估的點(diǎn)的概念。在貝葉斯優(yōu)化中,這被稱為替代模型。重要的是,替代模型應(yīng)該能夠以點(diǎn)x的函數(shù)值f(x)的后驗(yàn)分布的形式對(duì)預(yù)測(cè)的不確定性進(jìn)行量化。
BoTorch是Facebook在貝葉斯優(yōu)化基礎(chǔ)上大量工作的成果,并將這些技術(shù)集成到PyTorch編程模型中。從概念上講,與替代優(yōu)化方法相比,BoTorch具備一系列獨(dú)特優(yōu)勢(shì)。
基于PyTorch:BoTorch構(gòu)建于PyTorch框架基礎(chǔ)上,可以利用本機(jī)功能,如自動(dòng)差異化,使用獨(dú)立于設(shè)備的代碼,支持高度并行化的現(xiàn)代化硬件(如GPU),有助于交互式計(jì)算圖的動(dòng)態(tài)開發(fā)。
最先進(jìn)的建模:BoTorch支持GPyTorch中的尖端概率建模,包括多任務(wù)高斯過(guò)程(GP),可擴(kuò)展GP,深度內(nèi)核學(xué)習(xí),深度GP和近似推理等。
提高開發(fā)人員效率:BoTorch提供了簡(jiǎn)單的編程模型,用于對(duì)貝葉斯優(yōu)化的基本問(wèn)題進(jìn)行組合。具體而言,BoTorch依賴于基于蒙特卡羅模型的采集函數(shù),使得新思路的實(shí)現(xiàn)變得更加簡(jiǎn)單,無(wú)需對(duì)基礎(chǔ)模型做出限制性的假設(shè)。
高并行性帶來(lái)的可擴(kuò)展性:BoTorch編程模型可以優(yōu)化并發(fā)性和并行性任務(wù)進(jìn)行批量計(jì)算,提高了大型基礎(chǔ)架構(gòu)的可擴(kuò)展性。
BoTorch的設(shè)計(jì)可以讓PyTorch開發(fā)人員更改、交換或重新排列深度神經(jīng)網(wǎng)絡(luò)架構(gòu)的不同組件,無(wú)需重建整個(gè)圖形來(lái)重新訓(xùn)練整個(gè)模型。顯然,構(gòu)建低級(jí)貝葉斯優(yōu)化組件是一項(xiàng)需要深度專業(yè)知識(shí)的任務(wù)。為了應(yīng)對(duì)這一挑戰(zhàn),F(xiàn)acebook決定將BoTorch與另一個(gè)為深度學(xué)習(xí)實(shí)驗(yàn)提供簡(jiǎn)單編程模型的項(xiàng)目進(jìn)行集成:
這就是Ax。
從概念上講,Ax是一個(gè)優(yōu)化實(shí)驗(yàn)平臺(tái),比如A / B測(cè)試,模擬或機(jī)器學(xué)習(xí)模型實(shí)驗(yàn)等。Ax提供了一個(gè)易用的高級(jí)API,可以和BoTorch進(jìn)行連接,使開發(fā)人員能夠快速建模和運(yùn)行實(shí)驗(yàn)。 Ax和BoTorch之間的關(guān)系如下圖所示。使用BoTorch可以實(shí)現(xiàn)新的優(yōu)化算法,而Ax則提供了一個(gè)簡(jiǎn)單的API,用于配置調(diào)度、查詢數(shù)據(jù)和評(píng)估結(jié)果。
從優(yōu)化的角度來(lái)看,Ax可以使用多臂老虎機(jī)優(yōu)化處理離散型配置(比如A / B測(cè)試的變體),還可以使用貝葉斯優(yōu)化的處理連續(xù)配置(比如整數(shù)或浮點(diǎn))。Ax提供了一個(gè)高度可擴(kuò)展的框架,允許開發(fā)人員為PyTorch模型定制各種實(shí)驗(yàn)。從編程模型的角度來(lái)看,Ax提供了三個(gè)主要API:
循環(huán)API:用于同步優(yōu)化循環(huán),可以立即評(píng)估試驗(yàn)。使用此API可以在一次調(diào)用中執(zhí)行優(yōu)化,一旦優(yōu)化完成,就可以使用實(shí)驗(yàn)內(nèi)省。
服務(wù)API:可用作參數(shù)調(diào)整應(yīng)用程序的輕量級(jí)服務(wù),可以并行評(píng)估試驗(yàn)以及異步獲得數(shù)據(jù)。
開發(fā)者API:主要供數(shù)據(jù)科學(xué)家,機(jī)器學(xué)習(xí)工程師和研究人員臨時(shí)使用。提供大量定制化和內(nèi)省功能,推薦打算使用Ax來(lái)優(yōu)化A / B測(cè)試的開發(fā)者使用。
從編程模型的角度來(lái)看,循環(huán) API提供了最大程度的流程簡(jiǎn)化,而開發(fā)者API實(shí)現(xiàn)了最高級(jí)別的自定義功能。使用Loop API進(jìn)行無(wú)約束合成Branin函數(shù)代碼如下:
from ax import optimizefrom ax.utils.measurement.synthetic_functions import braninbest_parameters, values, experiment, model = optimize( parameters=[ { "name": "x1", "type": "range", "bounds": [-5.0, 10.0], }, { "name": "x2", "type": "range", "bounds": [0.0, 10.0], }, ], evaluation_function=lambda p: branin(p["x1"], p["x2"]), minimize=True,)
而開發(fā)者API則需要對(duì)Ax框架組件進(jìn)行更深度的操控:
from ax import *branin_search_space = SearchSpace( parameters=[ RangeParameter( name="x1", parameter_type=ParameterType.FLOAT, lower=-5, upper=10 ), RangeParameter( name="x2", parameter_type=ParameterType.FLOAT, lower=0, upper=15 ), ])exp = SimpleExperiment( name="test_branin", search_space=branin_search_space, evaluation_function=lambda p: branin(p["x1"], p["x2"]), objective_name="branin", minimize=True,)sobol = Models.SOBOL(exp.search_space)for i in range(5): exp.new_trial(generator_run=sobol.gen(1))best_arm = Nonefor i in range(15): gpei = Models.GPEI(experiment=exp, data=exp.eval()) generator_run = gpei.gen(1) best_arm, _ = generator_run.best_arm_predictions exp.new_trial(generator_run=generator_run)best_parameters = best_arm.parameters
與其他實(shí)驗(yàn)性框架相比,Ax具備一些明顯優(yōu)勢(shì)。對(duì)于初學(xué)者來(lái)說(shuō),編程模型可以與BoTorch之外的不同優(yōu)化框架一起使用。此外,Ax會(huì)自動(dòng)選擇優(yōu)化程序,讓數(shù)據(jù)科學(xué)家能夠更輕松對(duì)模型進(jìn)行微調(diào)。最后,該框架由可視化工具和基準(zhǔn)測(cè)試套件實(shí)現(xiàn)功能互補(bǔ),簡(jiǎn)化了對(duì)優(yōu)化技術(shù)的評(píng)估流程。
Facebook內(nèi)部的許多團(tuán)隊(duì)都在廣泛使用Ax和BoTorch框架。這些框架的開源是對(duì)PyTorch生態(tài)系統(tǒng)的重要補(bǔ)充,PyTorch生態(tài)系統(tǒng)已被廣泛視作數(shù)據(jù)科學(xué)實(shí)驗(yàn)中最靈活的深度學(xué)習(xí)框架之一。隨著數(shù)據(jù)科學(xué)界開始嘗試Axe和BoTorch,可能會(huì)將更多新想法整合到兩個(gè)框架中,優(yōu)化PyTorch應(yīng)用程序中的實(shí)驗(yàn)流程。
-
Facebook
+關(guān)注
關(guān)注
3文章
1429瀏覽量
54719 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132558 -
pytorch
+關(guān)注
關(guān)注
2文章
807瀏覽量
13198
原文標(biāo)題:用PyTorch做深度學(xué)習(xí)實(shí)驗(yàn)!Facebook新框架Ax和BoTorch雙雙開源
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論