當前位置:
首頁 > 科技 > 用PyTorch做深度學習實驗!Facebook新框架Ax和BoTorch雙雙開源

用PyTorch做深度學習實驗!Facebook新框架Ax和BoTorch雙雙開源

新智元報道

來源:towardsdatascience

編輯:大明

【新智元導讀】近日,Facebook開源了兩款基於PyTorch的實驗框架Ax和BoTorch。Ax是一個面向自適應實驗的理解、管理、部署和自動化任務的通用平台,BoTorch則主要面向貝葉斯優化任務。這兩個框架旨在簡化PyTorch應用中的自適應實驗流程。

在現代機器學習應用中,對實驗到生產的流程進行簡化是最難實現的任務之一。在已經市場化深度學習框架中,Facebook的PyTorch因其高度靈活性成為數據科學界的最愛,PyTorch能夠實現快速建模和實驗。但是,深度學習應用中的許多實驗面臨的挑戰已經超出了特定框架的能力範圍。

對於數據科學家來說,在對不同的模型或超參數配置進行評估時,通常會受到實驗所需的昂貴計算資源和時間的障礙。近日,Facebook開源了兩個新框架,旨在簡化PyTorch應用程序中的自適應實驗流程:

Ax:一個易訪問的通用平台,面向自適應實驗的理解、管理、部署和自動化。

BoTorch:基於PyTorch,是一個靈活的現代庫,用於貝葉斯優化——一種高效的全局優化的概率方法。

這兩種工具的目標是降低PyTorch開發人員進行快速實驗的入門門檻,以便為特定問題找到最佳模型。 Ax和BoTorch都基於概率模型,簡化了機器學習問題中給定環境下的探索流程。不過兩個框架針對的是實驗問題空間的不同維度。

BoTorch

BoTorch是一個基於PyTorch構建的貝葉斯優化庫。貝葉斯優化的目標是在有限的資源內找到問題的最優解。通常,貝葉斯優化用於解決黑盒優化問題,比如機器學習演算法的超參數優化,A / B測試以及許多其他科學和工程問題。

貝葉斯優化問題試圖在無法獲取函數形式的情況下對一些昂貴的評估黑盒函數f進行最大化。具體來說,優化技術在一系列測試點處對f進行評估,希望在少量評估之後確定接近最優值。

為了實現這一目標,需要一種方法來推斷關於f尚未評估的點的概念。在貝葉斯優化中,這被稱為替代模型。重要的是,替代模型應該能夠以點x的函數值f(x)的後驗分布的形式對預測的不確定性進行量化。

BoTorch是Facebook在貝葉斯優化基礎上大量工作的成果,並將這些技術集成到PyTorch編程模型中。從概念上講,與替代優化方法相比,BoTorch具備一系列獨特優勢。

基於PyTorch:BoTorch構建於PyTorch框架基礎上,可以利用本機功能,如自動差異化,使用獨立於設備的代碼,支持高度並行化的現代化硬體(如GPU),有助於互動式計算圖的動態開發。

最先進的建模:BoTorch支持GPyTorch中的尖端概率建模,包括多任務高斯過程(GP),可擴展GP,深度內核學習,深度GP和近似推理等。

提高開發人員效率:BoTorch提供了簡單的編程模型,用於對貝葉斯優化的基本問題進行組合。具體而言,BoTorch依賴於基於蒙特卡羅模型的採集函數,使得新思路的實現變得更加簡單,無需對基礎模型做出限制性的假設。

高並行性帶來的可擴展性:BoTorch編程模型可以優化並發性和並行性任務進行批量計算,提高了大型基礎架構的可擴展性。

BoTorch的設計可以讓PyTorch開發人員更改、交換或重新排列深度神經網路架構的不同組件,無需重建整個圖形來重新訓練整個模型。顯然,構建低級貝葉斯優化組件是一項需要深度專業知識的任務。為了應對這一挑戰,Facebook決定將BoTorch與另一個為深度學習實驗提供簡單編程模型的項目進行集成:

這就是Ax。

從概念上講,Ax是一個優化實驗平台,比如A / B測試,模擬或機器學習模型實驗等。Ax提供了一個易用的高級API,可以和BoTorch進行連接,使開發人員能夠快速建模和運行實驗。 Ax和BoTorch之間的關係如下圖所示。使用BoTorch可以實現新的優化演算法,而Ax則提供了一個簡單的API,用於配置調度、查詢數據和評估結果。

從優化的角度來看,Ax可以使用多臂老虎機優化處理離散型配置(比如A / B測試的變體),還可以使用貝葉斯優化的處理連續配置(比如整數或浮點)。Ax提供了一個高度可擴展的框架,允許開發人員為PyTorch模型定製各種實驗。從編程模型的角度來看,Ax提供了三個主要API:

循環API:用於同步優化循環,可以立即評估試驗。使用此API可以在一次調用中執行優化,一旦優化完成,就可以使用實驗內省。

服務API:可用作參數調整應用程序的輕量級服務,可以並行評估試驗以及非同步獲得數據。

開發者API:主要供數據科學家,機器學習工程師和研究人員臨時使用。提供大量定製化和內省功能,推薦打算使用Ax來優化A / B測試的開發者使用。

從編程模型的角度來看,循環 API提供了最大程度的流程簡化,而開發者API實現了最高級別的自定義功能。使用Loop API進行無約束合成Branin函數代碼如下:

而開發者API則需要對Ax框架組件進行更深度的操控:

fromaximport*

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=lambdap: branin(p["x1"], p["x2"]),

objective_name="branin",

minimize=True,

)

sobol = Models.SOBOL(exp.search_space)

foriinrange(5):

exp.new_trial(generator_run=sobol.gen(1))

best_arm = None

foriinrange(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

與其他實驗性框架相比,Ax具備一些明顯優勢。對於初學者來說,編程模型可以與BoTorch之外的不同優化框架一起使用。此外,Ax會自動選擇優化程序,讓數據科學家能夠更輕鬆對模型進行微調。最後,該框架由可視化工具和基準測試套件實現功能互補,簡化了對優化技術的評估流程。

Facebook內部的許多團隊都在廣泛使用Ax和BoTorch框架。這些框架的開源是對PyTorch生態系統的重要補充,PyTorch生態系統已被廣泛視作數據科學實驗中最靈活的深度學習框架之一。隨著數據科學界開始嘗試Axe和BoTorch,可能會將更多新想法整合到兩個框架中,優化PyTorch應用程序中的實驗流程。

參考鏈接:

https://towardsdatascience.com/facebook-is-making-deep-learning-experimentation-easier-with-these-two-new-pytorch-based-frameworks-5e29754bb8de


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

IJCAI 2019奇葩評審遭吐槽,程序主席發公開信回應
納米機器人植入人體實現人機互聯,現實版《黑客帝國》就在眼前

TAG:新智元 |