設計中避開這些坑,一個實用的機器學習框架就會誕生

第四正規化發表於2017-04-27

機器學習是一種資料驅動實現人工智慧的方式。在機器學習框架設計上,沒有普適的最好框架,只有最適合自身應用場景的框架。

設計一個實用高效的機器學習框架,要考慮哪些具體因素?目前那些總價值超過8000萬美元的開源框架,能否滿足企業需求?要回答這些問題,可以先從人工智慧專家的過往“踩坑”經驗談起。

機器學習到“成熟商用”,有這7道門檻

門檻1:有效資料量快速增長
隨著越來越多的資料被記錄下來,大資料背景下的機器學習,計算效率成為核心問題之一。機器學習系統必須具備可擴充套件性,才能有效應對資料增長。

門檻2:機器學習演算法——No Free Lunch

No Free Lunch是監督學習領域著名的定理,指的是沒有可以解決所有問題的完美機器學習模型。不同目標場景要採用不同的機器學習演算法。所以機器學習框架還需具備演算法開發的友好性。

門檻3:資料科學家的稀缺性

人工智慧需要對演算法和業務問題都很精通的資料科學家,但好的資料科學家是稀缺的,因此機器學習解決方案要儘可能的“智慧化”,降低對資料科學家對依賴。

門檻4:機器學習計算和傳統ETL計算的差異性

1.      計算

對比於ETL相對“簡單”的運算,機器學習演算法對資料的運算更復雜,比如一些非線性模型需要密集的計算。所以實際中,不僅要考慮到不同計算資源的特性,同時還要調整計算模式,降低因分散式計算給通訊、同步、災備等帶來的overhead。

2.     通訊

很多機器學習演算法在計算過程中會頻繁使用到全域性或者其他節點的資訊,對網路吞吐和通訊延遲的要求要遠高於ETL任務。同時,很多機器學習任務對於一致性的要求要低於ETL任務,所以在系統的設計上可以使用放鬆的一致性要求。

3.     儲存

ETL處理的是各種來源不同的資料,其中反覆迭代運算較少。而機器學習演算法反覆迭代運算很多,有大量不斷擦寫的中間資料產生,對儲存的使用效率、訪問效率有著更高的需求。

4.     災備和效率的權衡

與ETL計算任務不同,機器學習計算任務流程相對複雜,中間狀態較多,在較細的粒度上進行容災,會增加執行過程中的額外開銷。因此在容災策略和容災粒度上,機器學習計算任務和ETL 計算任務之間的權衡點不一樣。

門檻5:資源差異性

相同的機器學習演算法可能會在不同的資源、不同的環境下被使用,因此機器學習演算法系統本身要能夠做更好的抽象和設計,遮蔽底層資源的差異性,使開發部署更為方便。

門檻6:系統的開放性

機器學習系統要能夠便於整合部署在實際業務系統中。同時,因為多種多樣的ETL平臺會產生機器學習所需要的資料,所以機器學習系統要能夠開放地對接已有的業務ETL、決策系統。

門檻7:大規模分散式機器學習系統的複雜性

大規模分散式機器學習系統涉及的環節很多,計算邏輯複雜,因此整個系統架構設計的清晰度、執行過程的可理解性、執行的可追蹤性、實際系統的可運維性都是非常重要的。同時,要在不同的資料規模下,權衡分散式overhead和收益。 

當今巨頭科技公司紛紛推出開源機器學習框架,很大程度上降低了人工智慧的研究門檻。但目前這些備受追捧的開源框架,真能滿足企業完成實際複雜業務的挑戰嗎?答案可能並不樂觀。因為,從根本上來說,目前最為流行的計算框架如Hadoop、Spark,其重點任務大多是ETL類計算。前文提到過,機器學習的計算任務相比於ETL計算有很多不同之處。此外,一些演算法框架比如tensorflow等,比較注重研究上的易用性,演算法上偏重於深度神經網路一類演算法,從而在效率上有所捨棄。而另外一些注重生產應用的演算法框架,特別是分散式框架,在演算法二次開發上又捉襟見拙。

如何見招拆招,設計出實用的機器學習系統?

那麼,設計一個實用的機器學習系統究竟要怎麼做呢?這裡,我們以第四正規化的大規模分散式機器學習框架GDBT(General Distributed Brilliant Technology)為例。它的設計目標可以概括為高效、智慧、易開發、易部署、易運維、易擴充套件、覆蓋場景廣泛。

1、高效

1.1   計算

根據計算硬體的不同特性,GDBT採用不同版本的本地計算,儘可能利用好加速指令。同時考慮到不適所有任務都需要分散式執行,所以同時對分散式、單機執行都儘可能做到最優。

1.2   儲存 

不同的儲存裝置的價格、速度和容量不一樣,GDBT要能適應不同的儲存配置、最優化儲存訪問速度、和儲存使用效率。

1.3   網路

通過合理設計計算模式,調配網路通訊,GDBT最優化網路通訊延遲、網路使用效率。

1.4   高效災備

因為機器學習演算法中間狀態很多,為避免overhead問題,GDBT的災備更加偏重於機器學習演算法的核心引數。同時基於不同計算規模,制定不同災備策略。

2、智慧

1.1   演算法智慧

機器學習特徵工程和模型調參需要資料科學家對機器學習演算法和實際業務有較深理解。因此,先進的機器學習系統需要提供自動或半自動特徵工程,例如GDBT就提供包括自動特徵生成、自動特徵選擇、特徵自動組合在內的自動特徵工程,以及自動模型調參。

1.2   執行智慧

根據不同應用場景,GDBT可以自動適配執行方式,獲得更高的執行效率。

3、易開發

GDBT提供工業級的開發者易用性,儘量對演算法開發者遮蔽底層細節,提供對機器學習元件的良好包裝,能夠方便實現機器學習所需的各種分散式模式。在GDBT上,只需要數百行程式碼,就可以實現邏輯迴歸、矩陣分解等演算法的分散式版本。

4、部署&維護

GDBT支援多種平臺,例如Yarn,Hadoop MR、MPI等,並方便跨平臺遷移。它能夠實時監控執行狀態和進度、方便除錯與錯誤跟蹤。

5、覆蓋廣泛應用場景

通過重新設計、深度整合現有模型和演算法,合理設計計算模式和流程,GDBT能夠提供更加高效的符合實際應用場景的演算法,比如GDBT上的演算法能夠兼顧離散特徵和連續特徵,最優化I/O和計算資源的使用效率。通過重新設計、深度整合現有模型和演算法,合理設計計算模式和流程,GDBT能夠提供更加高效的符合實際應用場景的演算法,比如GDBT上的演算法能夠兼顧離散特徵和連續特徵,最優化I/O和計算資源的使用效率。

相關文章