架構(gòu)上進行了分層抽象,實現(xiàn)上也只需要三步。
第一步是創(chuàng)建一個Docker鏡像,下面的Dockerfile例子是從TensorFlow項目中截取出來的,官方已經(jīng)提供了一個可以運行的Docker鏡像,通過加入定制的啟動腳本就可以實現(xiàn)開發(fā)環(huán)境、模型訓(xùn)練以及模型服務(wù)等功能。
第二步是實現(xiàn)一個標準的API服務(wù),下面是一個Python實現(xiàn)的實例,用戶發(fā)送一個啟動訓(xùn)練任務(wù)的請求,服務(wù)端可以解析請求的參數(shù)和內(nèi)容,并將任務(wù)提交到Kubernetes等后端集群中。
第三步是生成Kubernetes所需的文件格式,下面的JSON文件大家也可以在GitHub中找到,實現(xiàn)了將分布式TensorFlow任務(wù)提交到Kubernetes集群中運行。
我們通過簡單的三個配置就可以完成機器學(xué)習(xí)任務(wù)從本地到云端的遷移過程,也就是實現(xiàn)了Cloud Machine Learning服務(wù)。前面提到云深度學(xué)習(xí)平臺需要支持資源隔離和資源共享,這是如何實現(xiàn)的呢,其實Kubernetes本身就有這個抽象,用戶可以在請求時申明需要的CPU、內(nèi)存、甚至是GPU資源,通過cgroups、namespace等容器技術(shù)來實現(xiàn)資源隔離,而kube-scheduler實現(xiàn)了資源調(diào)度和資源共享等功能。實現(xiàn)自研或者公有云的Cloud Machine Learning平臺,開發(fā)者可以很容易提交訓(xùn)練任務(wù)、創(chuàng)建模型服務(wù)等,但在一個真實的機器學(xué)習(xí)場景中,只解決計算資源的隔離和調(diào)度是遠遠不夠的,我們還需要重新思考如何集成數(shù)據(jù)處理、特征工程等問題。
重新定義云深度學(xué)習(xí)平臺TensorFlow是一個可用于深度學(xué)習(xí)的數(shù)值計算庫,基于TensorFlow可以實現(xiàn)MLP、CNN、RNN等機器學(xué)習(xí)模型,但有了它是不是就不需要Spark呢?他們的關(guān)系是什么?
在生產(chǎn)環(huán)境中,我們發(fā)現(xiàn)TensorFlow并沒有完全取代已有的大數(shù)據(jù)處理工具,我們需要用Spark做數(shù)據(jù)分析和特征工程,還需要數(shù)據(jù)倉庫等服務(wù)去存儲和查詢結(jié)構(gòu)化數(shù)據(jù)。TensorFlow是一個非常優(yōu)秀的深度學(xué)習(xí)框架,但在真實場景中用戶還需要一些PowerGraph處理的圖關(guān)系特征作為輸入,這都是單獨一個框架無法解決的。對于用戶的建模流程如何組織、如何做數(shù)據(jù)清洗、如何做特征抽取、如何上線訓(xùn)練好的模型、如何預(yù)估模型效果,這些可以使用Azure ML Studio工具去完成,而且是TensorFlow所缺乏的。
前面我們介紹了Cloud Machine Learning,可以實現(xiàn)一個類似Google的分布式、高可用、帶集群編排的計算平臺,但這遠遠不夠,因為我們還需要使用大數(shù)據(jù)處理的框架,包括MapReduce、流式處理、圖計算等框架。TensorFlow只是整個機器學(xué)習(xí)流程里面做模型訓(xùn)練其中一部分,我們可能還需要Kubernetes做CPU、GPU的管理和調(diào)度。如果我們要完成一個機器學(xué)習(xí)的業(yè)務(wù),就需要同時掌握TensorFlow、Spark、Hadoop、Hive、Kubernetes等框架的原理和應(yīng)用,而不只是提供一個Google Cloud-ML或者AWS服務(wù)就夠了,這也是我們要重新定義Cloud Machine Learning的原因。
前面在客觀上我們需要這么多知識,但主觀上我們希望有什么呢?我們更希望有一個從數(shù)據(jù)處理到模型訓(xùn)練再到模型上線的一個全閉環(huán)服務(wù),而不僅僅是機器學(xué)習(xí)框架或者通用計算平臺,我們希望不寫代碼就可以做特征抽取的工作,我們希望機器學(xué)習(xí)的工作流是很容易描述的,而不需要通過編寫代碼的方式來實現(xiàn),我們需要一個很靈活的基礎(chǔ)架構(gòu)可以支持各種異構(gòu)的計算資源,我們希望平臺是可拓展的可以實現(xiàn)自動Failover和Scaling。 除了前面提到的Google、微軟、亞馬遜做的云機器學(xué)習(xí)平臺,我們還需要從IaaS、PaaS、SaaS多維度上提供使用接口,滿足不同層次用戶的使用需求,另一方面這應(yīng)該是低門檻的產(chǎn)品服務(wù),讓任意的領(lǐng)域?qū)<叶伎梢暂p易使用。
后面我們會介紹在真實場景下如何改造Cloud Machine Learning平臺,并且介紹第四范式對外提供的低門檻、分布式、高可用的先知機器學(xué)習(xí)平臺。
第四范式的云深度學(xué)習(xí)實踐經(jīng)驗第四范式先知平臺是一個基于Cloud的全流程機器學(xué)習(xí)產(chǎn)品,用戶通過Web登陸到先知平臺就可以使用模型調(diào)研、預(yù)估服務(wù)的功能,并且可以通過拖拽的方式來描述機器學(xué)習(xí)的工作流 。