Facebook開源了可簡化PyTorch實驗的框架

2020-11-16 12:32:07 3900 views
摘要

Ax和BoTorch是Facebook AI Research創建的兩個PyTorch實驗框架。> Source: https://medium.

Ax和BoTorch是Facebook AI Research創建的兩個PyTorch實驗框架。

Facebook開源了可簡化PyTorch實驗的框架

> Source: https://medium.com/@rankjay0101/introduction-to-deep-learning-with-pytorch-from-facebook-udacity-facebook-pytorch-scholarship-166a204922b0


簡化從試驗到生產的周期是現代機器學習應用程序中最難實現的事情之一。 在市場上的深度學習框架中,Facebook孵化的PyTorch的靈活性使其能夠快速建模和運行實驗,因此已成為數據科學界的最愛。 但是,深度學習應用程序中的許多實驗挑戰超出了特定框架的能力。 數據科學家評估不同模型或超參數配置的能力通常會因昂貴的計算資源和運行這些實驗所需的時間而受到阻礙。 幾個月前,Facebook開源了兩個旨在簡化PyTorch應用程序中的自適應實驗的新工具:

· Ax:是一個可訪問的通用平台,用於了解,管理,部署和自動執行自適應實驗。

· BoTorch:建立在PyTorch之上,是用於貝葉斯優化的靈活,現代的庫,貝葉斯優化是一種用於數據高效全局優化的概率方法。

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

BoTorch

BoTorch是建立在PyTorch之上的貝葉斯優化庫。 貝葉斯優化的目標是在受限資源內找到問題的最佳解決方案。 通常,貝葉斯優化應用於黑盒優化問題,例如機器學習演算法的超參數優化,A / B測試以及許多科學和工程問題。

貝葉斯優化問題試圖在不訪問f的函數形式的情況下最大化某些昂貴的評估黑盒函數f。 在這種情況下,優化技術在一系列測試點上對f進行評估,希望在進行少量評估之後確定接近最佳的值。 為了優化f,貝葉斯優化方法需要一種方法來推斷關於f在我們尚未評估的點上看起來像什麼的信念。 在貝葉斯優化中,這稱為代理模型。 重要的是,替代模型應該能夠以點x處函數值f(x)的後驗分布的形式量化其預測的不確定性。

Facebook開源了可簡化PyTorch實驗的框架

> Source: https://ai.facebook.com/blog/open-sourcing-ax-and-botorch-new-ai-tools-for-adaptive-experimentation/

BoTorch是Facebook反覆致力於貝葉斯優化並將這些技術集成到PyTorch編程模型中的結果。從概念上講,與替代性優化方法相比,BoTorch帶來了一系列獨特的優勢。

·PyTorch功能:BoTorch建立在PyTorch框架之上,並利用了本機功能,例如自動區分,使用與設備無關的代碼支持高度並行化的現代硬體(例如GPU)以及便於交互的動態計算圖 發展。

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

·改進的開發人員效率:BoTorch提供了一個簡單的編程模型來構成貝葉斯優化原語。 具體來說,BoTorch依賴於基於蒙特卡洛的採集功能,這使得實施新思路變得簡單明了,而不必對基礎模型施加限制性假設。

·並行性:BoTorch編程模型通過批處理計算針對並發性和並行性進行了優化,從而提高了其在大型基礎架構中的可伸縮性。

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

Ax

從概念上講,Ax是用於優化實驗(例如A / B測試,模擬或機器學習模型)的平台。Axe提供了易於使用的高級API與BoTorch交互,從而使開發人員可以快速建模和運行實驗。下圖說明了Ax和BoTorch之間的關係。儘管可以使用BoTorch原語實現新的優化演算法,但Ax提供了一個簡單的API,用於調度配置,查詢數據和評估結果。

Facebook開源了可簡化PyTorch實驗的框架

> Source: https://ai.facebook.com/blog/open-sourcing-ax-and-botorch-new-ai-tools-for-adaptive-experimentation/

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

· 循環API:此API用於同步優化循環,可以立即評估試驗。 使用此API,可以在一次調用中執行優化,並且在優化完成後即可進行實驗自省。

· 服務API:此API可用作參數調整應用程序的輕量級服務,在該應用程序中,可以並行評估試驗並且非同步獲取數據。

· 開發人員API:此API供數據科學家,機器學習工程師和研究人員臨時使用。 開發人員API允許進行大量的自定義和自省,並且建議計劃使用Ax優化A / B測試的人員使用。

從編程模型的角度來看,Loop API提供了最大程度的簡化,而Developer API支持了最高級別的定製。 將Loop API用於不受約束的合成Branin函數非常簡單,如以下代碼所示:

from ax import optimize

from ax.utils.measurement.synthetic_functions import branin

best_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,)

開發人員API需要對Ax體系結構組件進行更深層次的操作:

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 = None

for 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

與其他實驗框架相比,Axe具有一些明顯的優勢。首先,編程模型可以與BoTorch以外的其他優化框架一起使用。此外,Ax自動執行優化常式的選擇,從而減少了數據科學家對模型進行微調的工作。最後,該框架還輔以可視化工具和基準套件,可以簡化對優化技術的評估。

Ax和BoTorch都在不同的Facebook團隊中廣泛使用。 這些框架的開源可用性是PyTorch生態系統的巨大補充,PyTorch生態系統已經被認為是數據科學實驗中最靈活的深度學習框架之一。 隨著數據科學界開始使用Ax和BoTorch進行實驗,為了縮短PyTorch應用程序中的實驗周期,有可能將新思想納入這兩個堆棧。

(本文由聞數起舞翻譯自Understanding CRISP-DM methology by Analysing Seattle Airbnb Data的文章《Facebook's Open Source Frameworks to Streamline PyTorch Experimentation》,轉載請註明出處,原文鏈接:https://medium.com/dataseries/facebooks-open-source-frameworks-to-streamline-pytorch-experimentation-4a33f0947d99)

avatar