一篇文章讀懂什么是機器學習平臺

1 評論 1566 瀏覽 17 收藏 30 分鐘

編輯導讀:隨著科技的發展,越來越多工作可以被機器人接管。尤其是重復性強,效率低的工作,用機器操作可以減輕人力的負擔。其中,機器學習平臺功不可沒。本文作者將從七個方面,分析什么是機器學習平臺,希望對你有幫助。

開篇給大家講兩個小故事:

2016年,一個日本青年工程師回到家鄉的黃瓜農場,準備子承父業。種植黃瓜,種植黃瓜有一個重要流程就是分揀流程,需要按照黃瓜的賣相,把不同類型黃瓜按照大小、筆直、均勻、水嫩程度分揀到一起,賣給批發商,再把賣相不好的黃瓜揀到一起,低價處理,這個過程全靠人工。

這個工程師想用技術減輕人工勞動,他拍攝了約7000張黃瓜照片,傳到谷歌云的機器學習平臺,通過TensorFlow深度學習框架,訓練模型去識別黃瓜,并對黃瓜按不同特質進行分類。在此基礎上,他還做了一個黃瓜分揀機,再配合上自動傳送帶系統,可以將每根黃瓜識別出來后再傳送至程序指定的箱子。這樣,降低了分揀黃瓜過程中人工參與。

再給大家講一個身邊的例子:

我們公司需要開發一個能夠識別農田中雜草的模型,且準確率要求在95%以上,然后公司隨即為算法工程師提供了工作環境:一臺GPU服務器和一臺電腦,工程師需要進行對比不同的模型來完成需求,這兩種模型分別是來自不同的深度學習框架:Caffe和TensorFlow。拿到GPU服務器后的第一件事就是對服務器的配置,登錄機器,發現這是一臺CentOS的系統,需要安裝對應的官方顯卡驅動,Nvidia專用的并行計算框架CUDA,以及針對深度神經網絡的加速庫cuDNN,必須版本匹配!然后,需要檢查是否有對應版本的Caffe和TensorFlow框架,這樣1天就過去了。發現本機沒有對應的編程環境,重新搭建一套環境指不定會出啥問題,畢竟本機的系統和服務器可不一樣。

所以選擇上服務器開發,服務器黑盒子沒有界面。需要在上面安裝了Jupyter lab。全部完成之后需要有訓練的數據,發現提供的雜草的數據照片沒有打標,需要手動標注,一周時間打完標后,然后把訓練用的數據搞到服務器上,數據探索、預處理,代碼編寫、測試寫出了第一版,終于可以開始調參訓練、優化了。模型開始訓練。怎么知道模型訓練的情況呢?需要把關鍵地方的日志進行了輸出,同時配備了對應框架的可視化工具(Tensorboard),以此來觀察模型的訓練情況。但是為了防止出現異常,需要不時地去Check訓練狀態。幾天過后,訓練完成,找到了最合適的算法和參數,出來的模型準確度也符合預期,但是如何把這個模型發布成一個可供其他service調用的RESTful API(gRPC),如何保障部署服務的實時性、安全性、擴展性、AB Testing?

一、現在存在的問題

  1. 重復造輪子:特征工程、模型訓練、模型在線預測都是各自研發,從零做起,算法的迭代效率低,用戶代碼基于單機腳本實現,處理環節長、耦合高,難以修改和擴展,長久以來可讀性降低.
  2. 特征口徑混亂:各個業務方重復開發特征,相同特征的統計口徑也不一致,導致算法之間難以協同工作。
  3. 數據分散:同一業務下多個場景、同一場景下多個模型,在數據處理、模型訓練等技術流程上類似,場景重復步驟和數據結果難以重復利用。
  4. 效率低下:算法人員和業務人員對分布式機器學習的開發存在技術壁壘,導致數據量和模型復雜度受單機資源限制。
  5. 進入門檻高:機器學習和深度學習的算法學習和搭建的門檻很高;?調參和對比算法效果費時費力。
  6. 維護成本高:機器環境配置不一,框架日新月異,維護各種算法框架的繁瑣性高,管理運維成本高,場景不同導致存在周期訓練、定時預估、實時預估等需求,對業務人員和算法人員的代碼要求高,維護成本高。

二、機器學習平臺和AI中臺的關系

中臺是相對于前臺來說,中臺可以為各各前端服務提供能力而互不干擾。AI中臺就是企業內部可以為各個業務場景提供各種AI能力的平臺,而機器學習平臺是把數據工程師、算法工程師標注師等機器學習模型訓練過程工程化流程化后的平臺。機器學習平臺更多的是服務于內部工程師,機器學習平臺屬于AI中臺的一部分。

三、什么是機器學習平臺

其實機器學習平臺,就是伴隨著AI工程化落地而來的概念,就是經過一系列的工程手段,最終集成落地到具體的應用中;或者選擇合適的模型和算法,經過一些優化,使得它能解決現實世界中真實的問題,并產生我們所需要的價值。機器學習領域,最重要的三個環節如下圖,包括數據處理,模型訓練和服務部署,每一環節包含的內容很多,都可以單獨拿出來做一個平臺。

機器學習平臺的服務的人群包括算法工程師、數據分析師,也包括業務研發工程師,我們希望通過構建高效的離線、實時預測服務,降低用戶使用機器學習的成本,提高接入算法的效率,利用數據中臺的優勢促進數據和模型的規范和分享。機器學習平臺通過端到端的建模流程,使企業用戶實現機器學習的全生命周期管理。從端到端的流程來看,機器學習平臺的功能可分為:

依據機器學習各個流程步驟,我們設計出機器學習平臺的大的框架:

  • 數據接入:支持多種類型數據的接入,包括音頻、文本、圖片、視頻。
  • 數據準備:包括數據清洗和數據探索,在數據清洗環節,機器學習平臺一般具備數據融合、數據缺失處理、數據分類、打標簽、數據異常處理、數據平滑等功能,在數據探索環節,機器學習平臺具備單變量統計、多變量統計、聚類分析、相似度度量、密度檢驗等功能。
  • 特征工程:支持特征構建、特征選擇、特征降維、特征編碼等特征工程必備流程,同時提供可視化的特征重要性評估功能,使用戶可以快速發現模型中存在的問題。
  • 模型訓練:支持Notebook;模型建立后,平臺提供可視化超參調整、超參搜索等功能,提高模型訓練的效率。
  • 模型部署:通過API接口,一鍵實現模型從開發環境到生產環境的部署,實現模型快速上線。
  • 模型管理:模型部署到生產環境后仍需要進行監控和管理,以保證模型的準確率和及時更新,模型管理能夠將生產環境中的模型與基線或之前的模型進行對比,確定模型效果。此外,很多平臺還提供指標跟蹤工具,提高模型效果的評估效率。

數據管理

原始數據,也叫做數據源,也就是機器學習的燃料。平臺本身并不關心原始數據是如何被收集的,只關心數據存儲的方式和位置。存儲的方式決定了平臺是否能支持此種數據的操作。存儲的位置決定了平臺是否有權限、有能力去讀取到此數據。NFS和OSS一般用于存儲非結構化數據,例如圖片和視頻。而HDFS和數據庫里面存放的都是結構化、半結構化的數據,一般都是已經經過ETL處理過的數據。

數據標注

數據標注針對是的監督學習任務,目前機器學習的應用場景大多都是應用監督學習任務習得的。巧婦難為無米之炊,沒有足夠的標注數據,算法的發揮也不會好到哪兒去。對于標注這塊。業務功能上來說,基本上可以當成是另一套系統了,我們可以把它叫做標注平臺。

數據標注有兩種,一種是人工標注; 另一種是使用已訓練好的機器學習模型來標注,然后再輔以人工確定和修訂。無論是使用哪種方式,最后都需要人工介入。數據標注結果的標準化、規范化則有一定的難度。因為不同的算法、框架可能需要不同的數據格式。而且還需要支持不同的需求,比如基本的針對圖片的目標檢測、目標分類、目標跟蹤、語義分割等。

圖像分類:給定一張圖片,圖像分類要回答的問題是這張圖片中是否包含某類物體(比如牛);

目標檢測:目標檢測要回答的問題則是物體出現在圖中的什么地方,即需要給出物體的外接矩形框,如圖 1(b)所示。

目標跟蹤:是在視頻序列中的每幀圖像中找到指定的目標對象運動位置。我們可以根據視頻實時跟蹤一個或多個目標元素。

語義分割:語意分割是對圖像中的每一個像素進行分類,目前廣泛應用于醫學圖像與無人駕駛等

在標注平臺中,往往都是人工+模型混合使用的,整體流程如下:

在最開始可能沒有模型來輔助進行標注,這個時候就需要人為手工介入,以此來訓練出一個模型

當我們根據標注出的數據訓練出不錯的模型之后,就可以使用此模型來對新輸入的數據做一個預標注的工作,然后再輔以人工確認和修訂,如此反復迭代,隨著輸入數據的增多,當我們訓練出的模型準確率達到一個很高的水準之后,需要人工操作的數據就會越來越少。以此減少人工成本費。

算法管理

算法工程師撰寫算法,一般在Notebook中,Notebook本身功能并不復雜。實質上就是對Jupyter Notebook/JupyterLab等的包裝。通常的做法是使用Kubernetes的Service,啟動一個Notebook。用戶可以在Notebook里面讀取平臺生成的數據集,寫完代碼后,還得支持提交分布式訓練。算法撰寫完成也可以做在線編輯,或者進行版本管理。

模型管理

模型訓練平臺一般都會集成Spark ML、XGBoost、TensorFlow等多種底層訓練框架,和機器學習模型簡單的有LR、SVM,樹模型有GBDT、RF、XGB等,深度學習模型有RNN、DNN、LSTM、DeepFM等等。模型管理平臺的目標就是提供統一的模型創建、訓練、部署、切換、版本管理等解決方案,并為機器學習和深度學習模型提供高可用的線上預測服務。模型并不是訓練好了就會一直使用,永不改變。它是在不斷迭代、不斷優化的,當然使用不同的版本來進行A/B Test也是很常見的需求。所以模型版本管理就顯得很重要了。

同時,模型管理平臺還收集各個服務節點的心跳上報信息,維護模型的狀態和版本切換,確保所有節點上模型版本一致。

底層資源管理

在底層資源管理上,多數是引入容器云對模型任務進行統一調度、利用鏡像打包模型代碼提高可移植性、實現數據集的分布式存儲以及采用網絡加速分布式訓練任務??梢越鉀Q了多張 GPU 卡之間的合理調度問題,使得分布式訓練任務能優先滿足機內總線和集群網絡拓撲,訓練效率和 GPU 線性性能得到提升。

租戶管理

機器學習平臺本視解決的就是數據和工程流的問題,自然設計到多角色,多租戶情況,租戶間權限、數據隔離、租戶資源配額、任務優先級劃分這些都是必不可少的,一般采用三級或者更多級別來實現。

四、如何評估機器學習平臺

機器學習平臺的主要在“功能、性能、安全、兼容性”這四個維度進行評估。

五、行業案例

阿里云PAI

阿里云PAI是目前國內應用范圍最廣泛的機器學習平臺,也是國內技術能力公認最強的平臺之一。

騰訊Ti-ML

騰訊推出其機器學習平臺相對較晚,但其功能和定位和阿里云PAI即無二致。

第四范式先知

第四范式公司是專門做機器學習平臺的AI技術與服務商,先知是國內曝光率最高的機器學習平臺之一。

百度EasyDL

EasyDL是基于百度自主研發的深度學習平臺飛槳結合業界先進的工程服務技術打造的簡單易用的模型訓練和服務平臺。

九章云極

九章云極內置140+模塊構成常用算法模塊庫,支持自定義編寫。

京東neuCube

JDAI NeuFoundry覆蓋從數據標注-模型開發-模型訓練-服務發布-生態市場的人工智能開發全生命周期,并預置高凈值的脫敏數據。

華為ModelArts

華為的機器開發平臺基于自研MoXing深度學習框架,提升算法開發效率和訓練速度。

六、寫在結尾的話

對于一個機器學習平臺。既然是平臺就需要和好多外部做對接,那么統一的標準是最重要的,但是到目前為止,有許多東西是沒有一個統一的標準的,比如數據標注結果的存儲格式。有太多的框架,太多的環境,太多的版本。與之對應,不同框架最后生成的模型,也都是各不相同的。如果想要實現標準的模型壓縮、發布,也是比較困難的一件事。分布式訓練。這塊目前正在快速發展中,還不是很成熟,需要一一淌下。但是標準只是早晚的事。

搭建一個平臺并不是一件簡單的事情,所需要的成本還是很高的,現在已經有的開源框架有可以解決大部分問題。當開源工具無法滿足需求時,企業可以根據自己的開發能力來進行開發,但是也不是都需要搭建自己的機器學習平臺,如果是一次性或者短期項目,可能采買是便宜的。如果需要長期使用,自建可能是比較劃算的。開始做的時候可以先試驗一些通用模型,然后再結合一些業務屬性整體開發??傮w來說就是一開始不需要花費大量力氣在這件事情上,最好可以先試用,有效果的話再大量投入。

做產品的都知道做平臺,最怕的是沒有用戶使用平臺,或者不能通過平臺產生真實業務價值,這才是最重要的。有某一業務場景在平臺實現端到端產生價值,才能證明這個平臺的價值,才能吸引其他用戶來使用。平臺搭建完成部分用戶開始上來試用,然后提各種想法和需求;緊接著,會逐漸遷移部分功能上來試用,看看訓練的情況等。同時,在這個階段,就會需要各種適配用戶原始的系統了,這個過程是個漫長的過程的。 需要持續投入,才會量變之后產品質變,但是需要保持足夠的耐心。

七、名詞解釋

因為文章中存在大量行業名詞,為了方便大家閱讀,現將主要行業名詞做了簡單介紹。

機器學習算法

簡稱算法,指使用各類編程語言構建的算法,主要包括統計方法、傳統機器學習算法、深度學習甚至某些數學規則等。比如無監督K均值聚類算法,有監督LR、隨機森林、GBDT等算法,還有DNN、RNN深度學習等算法。

機器學習模型

簡稱模型,對具體業務強依賴,與業務強相關,用來對新數據進行直接預測的一系列算法參數的集合,通常需要和機器學習算法配合進行工作。

機器學習框架

機器學習運行時環境,是指能夠直接提供機器學習算法編寫、模型訓練和模型應用的軟件系統,如Tensorflow、MxNet等,這些框架會直接調度計算資源和存儲資源,其運行機制和具體的業務場景無關。

Spark

Spark是一種快速、通用、可擴展的大數據分析引擎,2009年誕生于加州大學伯克利分校AMPLab,2010年開源,2013年6月成為Apache孵化項目,2014年2月成為Apache頂級項目。目前,Spark生態系統已經發展成為一個包含多個子項目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子項目,Spark是基于內存計算的大數據并行計算框架。Spark基于內存計算,提高了在大數據環境下數據處理的實時性,同時保證了高容錯性和高可伸縮性,允許用戶將Spark部署在大量廉價硬件之上,形成集群。Spark得到了眾多大數據公司的支持,這些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、騰訊、京東、攜程、優酷土豆。

XGBoost

XGBoost是2014年2月誕生的專注于梯度提升算法的機器學習函數庫,此函數庫因其優良的學習效果以及高效的訓練速度而獲得廣泛的關注。僅在2015年,在Kaggle競賽中獲勝的29個算法中,有17個使用了XGBoost庫,而作為對比,近年大熱的深度神經網絡方法,這一數據則是11個。在KDDCup 2015 競賽中,排名前十的隊伍全部使用了XGBoost庫。XGBoost不僅學習效果很好,而且速度也很快,相比梯度提升算法在另一個常用機器學習庫scikit-learn中的實現,XGBoost的性能經常有十倍以上的提升。

TensorFlow

TensorFlow是谷歌基于DistBelief進行研發的第二代人工智能學習系統,其命名來源于本身的運行原理。Tensor(張量)意味著N維數組,Flow(流)意味著基于數據流圖的計算,TensorFlow為張量從流圖的一端流動到另一端計算過程。TensorFlow是將復雜的數據結構傳輸至人工智能神經網中進行分析和處理過程的系統。TensorFlow可被用于語音識別或圖像識別等多項機器學習和深度學習領域,對2011年開發的深度學習基礎架構DistBelief進行了各方面的改進,它可在小到一部智能手機、大到數千臺數據中心服務器的各種設備上運行。TensorFlow將完全開源,任何人都可以用。

PyTorch

PyTorch是一個很著名的支持GPU加速和自動求導的深度學習框架,在最近幾年收到學術界的熱捧,主要是因為其動態圖機制符合思維邏輯,方便調試,適合于需要將想法迅速實現的研究者。

Hadoop

Hadoop是業界公認的一套行業大數據標準開源軟件,在分布式環境下Hadoop能提供海量數據的處理能力。幾乎所有主流廠商都圍繞Hadoop技術開發工具、開源軟件、商業化工具和技術服務。許多大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明顯增加了Hadoop方面的投入。

hadoop擅長日志分析,facebook就用Hive來進行日志分析,2009年時facebook就有非編程人員的30%的人使用HiveQL進行數據分析;淘寶搜索中的自定義篩選也使用的Hive;利用Pig還可以做高級的數據處理,包括Twitter、LinkedIn 上用于發現您可能認識的人,可以實現類似Amazon.com的協同過濾的推薦效果。淘寶的商品推薦也是!在Yahoo!的40%的Hadoop作業是用pig運行的,包括垃圾郵件的識別和過濾,還有用戶特征建模。

Jupyter Notebooks

Jupyter Notebooks 是一款開源的網絡應用,我們可以將其用于創建和共享代碼與文檔。

其提供了一個環境,你無需離開這個環境,就可以在其中編寫你的代碼、運行代碼、查看輸出、可視化數據并查看結果。因此,這是一款可執行端到端的數據科學工作流程的便捷工具,其中包括數據清理、統計建模、構建和訓練機器學習模型、可視化數據等等。

當你還處于原型開發階段時,Jupyter Notebooks 的作用更是引人注目。這是因為你的代碼是按獨立單元的形式編寫的,而且這些單元是獨立執行的。這讓用戶可以測試一個項目中的特定代碼塊,而無需從項目開始處執行代碼。很多其它 IDE 環境(比如 RStudio)也有其它幾種方式能做到這一點,但我個人覺得 Jupyter 的單個單元結構是最好的。

Notebook

Notebook 概念最初由 Mathematica 及 Matlab 等以數學為中心的學術型平臺提出,目前在 Python、R 以及 SAS 社區當中非常流行。所謂 Notebook,其本質在于記錄數據研究結果,并允許用戶面向不同源數據加以運行,從而簡化結果的可重復性。良好的 Notebook 應充當一種共享式協作環境,數據科學家小組可以在這里協同工作,并利用不斷發展的數據集進行模型迭代。盡管,Notebook 不能算是代碼開發的理想環境,但卻能夠為數據的協作、探索以及可視化提供強有力的支持。事實上,如果擁有足夠的訪問權限對接清潔數據,那么數據科學家們將毫不猶豫地利用 Notebooke 快速瀏覽大型數據集。

TensorBoard

TensorBoard是TensorFlow的一組web組件,用來監控TensorFlow的運行過程或可視化計算圖。

TensorBoard目前支持5種可視化:標量、圖片、音頻、直方圖、計算圖。

KubeSphere

KubeSphere 是在 Kubernetes 之上構建的以應用為中心的多租戶容器管理平臺,支持部署和運行在任何基礎設施之上,提供簡單易用的操作界面以及向導式操作方式,在降低用戶使用容器調度平臺學習成本的同時,極大減輕開發、測試、運維的日常工作的復雜度,旨在解決 Kubernetes 本身存在的存儲、網絡、安全和易用性等痛點。幫助企業輕松應對敏捷開發、自動化運維、應用快速交付、微服務治理、多租戶管理、監控日志告警、服務與網絡管理、鏡像倉庫等業務場景。

pandas

pandas是數據科學家用于探索和操作數據的主要工具 大多數人在他們的代碼中將pandas縮寫為pd. 我們一般這么來使用pandas庫中最重要的部分是DataFrame。 DataFrame包含你可以認為是表的數據類型。 這類似于Excel中的工作表或SQL數據庫中的表。 pandas提供了強大的功能來操作此類數據類型。

#專欄作家#

老張,人人都是產品經理專欄作家。AI產品經理,專注于自然語言處理和圖像識別領域?,F智能保險創業公司合伙人,希望與人工智能領域創業者多多交流。

本文原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

給作者打賞,鼓勵TA抓緊創作!
更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 寫的很全面,收藏

    回復