編輯導讀:隨著科技的發展,越來越多工作可以被機器人接管。尤其是重複性強,效率低的工作,用機器操作可以減輕人力的負擔。其中,機器學習平台功不可沒。本文作者將從七個方面,分析什麼是機器學習平台,希望對你有幫助。
開篇給大家講兩個小故事:
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?
一、現在存在的問題
- 重複造輪子:特徵工程、模型訓練、模型在線預測都是各自研發,從零做起,演算法的迭代效率低,用戶代碼基於單機腳本實現,處理環節長、耦合高,難以修改和擴展,長久以來可讀性降低.
- 特徵口徑混亂:各個業務方重複開發特徵,相同特徵的統計口徑也不一致,導致演算法之間難以協同工作。
- 數據分散:同一業務下多個場景、同一場景下多個模型,在數據處理、模型訓練等技術流程上類似,場景重複步驟和數據結果難以重複利用。
- 效率低下:演算法人員和業務人員對分散式機器學習的開發存在技術壁壘,導致數據量和模型複雜度受單機資源限制。
- 進入門檻高:機器學習和深度學習的演算法學習和搭建的門檻很高; 調參和對比演算法效果費時費力。
- 維護成本高:機器環境配置不一,框架日新月異,維護各種演算法框架的繁瑣性高,管理運維成本高,場景不同導致存在周期訓練、定時預估、實時預估等需求,對業務人員和演算法人員的代碼要求高,維護成本高。
二、機器學習平台和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也是很常見的需求。所以模型版本管理就顯得很重要了。
同時,模型管理平台還收集各個服務節點的心跳上報信息,維護模型的狀態和版本切換,確保所有節點上模型版本一致。
底層資源管理
在底層資源管理上,多數是引入容器雲對模型任務進行統一調度、利用鏡像打包模型代碼提高可移植性、實現數據集的分散式存儲以及採用網路加速分散式訓練任務。可以解決了多張 GPU 卡之間的合理調度問題,使得分散式訓練任務能優先滿足機內匯流排和集群網路拓撲,訓練效率和 GPU 線性性能得到提升。
租戶管理
機器學習平台本視解決的就是數據和工程流的問題,自然設計到多角色,多租戶情況,租戶間許可權、數據隔離、租戶資源配額、任務優先順序劃分這些都是必不可少的,一般採用三級或者更多級別來實現。
四、如何評估機器學習平台
機器學習平台的主要在「功能、性能、安全、兼容性」這四個維度進行評估。
五、行業案例
阿里雲PAI
阿里雲PAI是目前國內應用範圍最廣泛的機器學習平台,也是國內技術能力公認最強的平台之一。
騰訊Ti-ML
騰訊推出其機器學習平台相對較晚,但其功能和定位和阿里雲PAI即無二致。
第四範式先知
第四範式公司是專門做機器學習平台的AI技術與服務商,先知是國內曝光率最高的機器學習平台之一。
百度EasyDL
EasyDL是基於百度自主研發的深度學習平台飛槳結合業界先進的工程服務技術打造的簡單易用的模型訓練和服務平台。
九章雲極
九章雲極內置140+模塊構成常用演算法模塊庫,支持自定義編寫。
京東neuCube
JDAI NeuFoundry覆蓋從數據標註-模型開發-模型訓練-服務發布-生態市場的人工智慧開發全生命周期,並預置高凈值的脫敏數據。
華為ModelArts
華為的機器開發平台基於自研MoXing深度學習框架,提升演算法開發效率和訓練速度。
六、寫在結尾的話
對於一個機器學習平台。既然是平台就需要和好多外部做對接,那麼統一的標準是最重要的,但是到目前為止,有許多東西是沒有一個統一的標準的,比如數據標註結果的存儲格式。有太多的框架,太多的環境,太多的版本。與之對應,不同框架最後生成的模型,也都是各不相同的。如果想要實現標準的模型壓縮、發布,也是比較困難的一件事。分散式訓練。這塊目前正在快速發展中,還不是很成熟,需要一一淌下。但是標準只是早晚的事。
搭建一個平台並不是一件簡單的事情,所需要的成本還是很高的,現在已經有的開源框架有可以解決大部分問題。當開源工具無法滿足需求時,企業可以根據自己的開發能力來進行開發,但是也不是都需要搭建自己的機器學習平台,如果是一次性或者短期項目,可能採買是便宜的。如果需要長期使用,自建可能是比較划算的。開始做的時候可以先試驗一些通用模型,然後再結合一些業務屬性整體開發。總體來說就是一開始不需要花費大量力氣在這件事情上,最好可以先試用,有效果的話再大量投入。
做產品的都知道做平台,最怕的是沒有用戶使用平台,或者不能通過平台產生真實業務價值,這才是最重要的。有某一業務場景在平台實現端到端產生價值,才能證明這個平台的價值,才能吸引其他用戶來使用。平台搭建完成部分用戶開始上來試用,然後提各種想法和需求;緊接著,會逐漸遷移部分功能上來試用,看看訓練的情況等。同時,在這個階段,就會需要各種適配用戶原始的系統了,這個過程是個漫長的過程的。 需要持續投入,才會量變之後產品質變,但是需要保持足夠的耐心。
七、名詞解釋
因為文章中存在大量行業名詞,為了方便大家閱讀,現將主要行業名詞做了簡單介紹。
機器學習演算法
簡稱演算法,指使用各類編程語言構建的演算法,主要包括統計方法、傳統機器學習演算法、深度學習甚至某些數學規則等。比如無監督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產品經理,專註於自然語言處理和圖像識別領域。現智能保險創業公司合伙人,希望與人工智慧領域創業者多多交流。
本文原創發佈於人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基於 CC0 協議