云計算機器學習平臺提供的多種功能可以支持完整的機器學習生命周期。
為了創建有效的機器學習和深度學習模型,組織需要獲取大量的數據,并對其執行特征工程的方法,以及在合理的時間內訓練數據模型的方法。然后,組織需要一種方法來部署模型,監視它們是否隨時間的推移而改變,以及根據需要重新訓練它們。
如果組織已經在計算資源和加速器(例如GPU)上進行了投資,則可以在內部部署基礎設施完成所有這些操作,但是可能會發現,如果資源足夠,它們在很多時間都處于閑置狀態。另一方面,有時在云平臺中運行整個管道,根據需要使用大量計算資源和加速器,然后釋放它們,可能更具成本效益。
主要的云計算提供商(以及其他云計算提供商)已投入大量精力來構建其機器學習平臺,以支持從計劃項目到維護生產模型的完整機器學習生命周期。組織如何確定哪些云平臺可以滿足其需求?每個端到端機器學習平臺都應提供以下12種功能。
1.接近自己的數據
如果組織擁有建立精確模型所需的大量數據,則不希望將其傳輸到世界各地。這里的問題并不是距離,而是時間:數據傳輸速度最終受到光速限制,即使在帶寬無限的完美網絡上也是如此。長距離意味著等待時間更長。
對于非常大的數據集,理想的情況是在已經存在數據的地方建立模型,從而不需要傳輸大量數據。一些數據庫在一定程度上支持這一點。
下一個最佳情況是數據與模型構建軟件位于同一高速網絡上,這通常意味著在同一數據中心內。如果組織擁有TB或更大容量的數據,即使將數據從一個數據中心遷移到云計算可用性區域內的另一個數據中心,也可能會造成嚴重的延遲。組織可以通過執行增量更新來緩解這種情況。
最壞的情況是,組織必須在帶寬受限和高延遲的路徑上遠程移動大量數據。而在這方面,澳大利亞為此部署的跨太平洋電纜的工程令人驚嘆。
2.支持ETL或ELT管道
ETL(導出、轉換和加載)和ELT(導出、加載和轉換)是數據庫領域中常見的兩種數據管道配置。機器學習和深度學習擴大了對這些內容的需求,尤其是轉換部分。當轉換需要更改時,ELT為組織提供更大的靈活性,因為加載階段通常是大數據最耗時的階段。
通常情況下,沒有進行處理的數據很嘈雜,需要過濾。此外,這些數據的范圍也有所不同:一個變量的最大值可能高達數百萬,而另一個變量的范圍可能是-0.1至-0.001。對于機器學習來說,必須將其變量轉換為標準化的范圍,以防止較大范圍的變量控制模型。具體的標準化范圍取決于模型使用的算法。
3.支持在線環境進行模型構建
傳統的觀點是,組織應該將數據導入桌面設備以進行模型構建。建立良好的機器學習和深度學習模型所需的大量數據改變了局面:組織可以將一小部分數據樣本下載到桌面設備上,以進行探索性數據分析和模型構建,但是對于生產模型,則需要訪問完整的模型數據。
Jupyter Notebooks、JupyterLab和Apache Zeppelin等基于Web的開發環境非常適合模型構建。如果組織的數據與筆記本電腦環境位于同一云平臺中,則可以對數據進行分析,以最大程度地減少數據移動的時間。
4.支持擴展訓練
除了訓練模型之外,筆記本電池的計算和內存要求通常很小。如果筆記本可以生成在多個大型虛擬機或容器上運行的訓練作業,則將大有幫助。如果訓練可以訪問加速器(例如GPU、TPU和FPGA),也將有很大幫助;這些模型可以將數天的訓練過程變成數小時。
5.支持AutoML和自動特征工程
并不是每個組織都擅長于選擇機器學習模型、選擇特征(模型使用的變量),以及從原始觀察中設計新特征。即使組織擅長這些任務,它們也很耗時,而且可以在很大程度上實現自動化。
AutoML系統經常嘗試使用許多模型來查看哪些模型可以產生最佳目標函數值,例如回歸問題的最小平方誤差。出色的AutoML系統還可以執行功能工程,并有效地利用它們的資源,以盡可能多的特征集合來追求最佳的模型。
6.支持最佳的機器學習和深度學習框架
大多數數據科學家擁有用于機器學習和深度學習技術的最喜歡的框架和編程語言。對于喜歡Python的人來說,Scikit學習通常是機器學習的最愛,而TensorFlow、PyTorch、Keras、MXNet通常是深度學習的首選。在Scala中,Spark MLlib往往是機器學習的首選。在R中,有許多原生機器學習包,以及與Python的良好接口。而在Java中,H2O.ai的評價很高,Java-ML和Deep Java Library也是如此。
云計算機器學習和深度學習平臺往往擁有自己的算法集合,并且它們通常以至少一種語言或作為具有特定入口點的容器來支持外部框架。在某些情況下,組織可以將自己的算法和統計方法與平臺的AutoML功能集成在一起,這非常方便。
一些云平臺還提供了自己的主要深度學習框架的調整版本。例如,AWS公司擁有TensorFlow的優化版本,該公司聲稱可以為深度神經網絡訓練提供近乎線性的可擴展性。
7.提供預訓練的模型并支持轉移學習
并非每個人都希望花費時間和資源來訓練自己的模型,而即使當預訓練的模型可用時,他們也不應該如此。例如,ImageNet數據集非常龐大,并且要針對其訓練最先進的深度神經網絡可能要花費數周的時間,因此在可能的情況下使用預先訓練的模型是有意義的。
另一方面,經過預訓練的模型可能無法始終標識組織關心的對象。轉移學習可以幫助組織針對特定數據集自定義神經網絡的最后幾層,而無需花費更多時間和資金來訓練整個網絡。
8.提供優化的人工智能服務
主要的云平臺為許多應用程序提供了功能強大且經過優化的人工智能服務,而不僅僅是圖像識別。其示例包括語言翻譯、語音轉換到文本、文本轉換到語音、預測和推薦。
這些服務已經經過訓練和測試,其使用的數據量超出了企業通常可獲得的數據量。它們還已經部署在具有足夠計算資源(包括加速器)的服務端點上,以確保在全球負載下具有良好的響應時間。
9.管理實驗
為組織的數據集找到最佳模型的唯一方法是嘗試采用所有方法,無論是人工還是使用AutoML。這就留下了另一個問題:管理實驗。
良好的云計算機器學習平臺將為組織提供一種方式,可以查看和比較每個實驗的目標函數值(訓練集和測試數據)以及模型和混淆矩陣的大小。而能夠繪制所有這些圖表具有一定的優勢。
10.支持模型部署以進行預測
一旦組織有了根據自己的條件選擇最佳實驗的方法,就需要一種簡單的方法來部署模型。如果組織出于同一目的部署多個模型,則還需要一種在它們之間分配流量的方法來進行a/b測試。
11.監控預測效果
數據隨著世界的變化而變化。這意味著組織無法部署模型而忘記它。與其相反,組織需要監視為預測而提交的數據。當數據從原始訓練數據集的基線開始發生明顯變化時,組織需要重新訓練模型。
12.控制成本
最后,組織需要一些方法來控制模型產生的成本。部署用于生產推理的模型通常占到深度學習成本的90%,而訓練僅占成本的10%。
控制預測成本的最佳方法取決于組織的負載和模型的復雜性。如果負載很高,則可以使用加速器來避免添加更多虛擬機實例。如果負載可變,則隨著負載的增加或減少,組織可能能夠動態更改大小或實例或容器的數量。而且,如果組織的負載較少,則可以使用帶有部分加速器的非常小的實例來處理預測。
版權聲明:本文為企業網D1Net編譯,轉載需注明出處為:企業網D1Net,如果不注明出處,企業網D1Net將保留追究其法律責任的權利。