定義云深度學(xué)習(xí)平臺什么是云深度學(xué)習(xí)?隨著機(jī)器學(xué)習(xí)的發(fā)展,單機(jī)運(yùn)行的機(jī)器學(xué)習(xí)任務(wù)存在缺少資源隔離、無法動態(tài)伸縮等問題,因此要用到基于云計(jì)算的基礎(chǔ)架構(gòu)服務(wù)。云機(jī)器學(xué)習(xí)平臺并不是一個(gè)全新的概念,Google、微軟、亞馬遜等都有相應(yīng)的服務(wù),這里列舉幾個(gè)比較典型的例子。
第一個(gè)是Google Cloud Machine Learning Engine,它底層托管在Google Cloud上,上層封裝了Training、Prediction、Model Service等機(jī)器學(xué)習(xí)應(yīng)用的抽象,再上層支持了Google官方的TensorFlow開源框架。
亞馬遜也推出了Amzon machine learning平臺,它基于AWS的Iaas架構(gòu),在Iaas上提供兩種不同的服務(wù),分別是可以運(yùn)行MXNet等框架的EC2虛擬機(jī)服務(wù),以及各種圖象、語音、自然語言處理的SaaS API。
此外,微軟提供了Azure Machine Learning Studio服務(wù),底層也是基于自己可伸縮、可拓展的Microsoft Azure Cloud服務(wù),上層提供了拖拽式的更易用的Studio工具,再上面支持微軟官方的CNTK等框架,除此之外微軟還有各種感知服務(wù)、圖象處理等SaaS API,這些服務(wù)都是跑在Scalable的云基礎(chǔ)平臺上面。
相關(guān)廠商內(nèi)容
基于卷積神經(jīng)網(wǎng)絡(luò)在手機(jī)端實(shí)現(xiàn)文檔檢測 阿里巴巴集團(tuán)千億級別店鋪系統(tǒng)架構(gòu)平臺化技術(shù)實(shí)踐 攜程第四代架構(gòu)之軟負(fù)載 SLB 實(shí)踐之路 解讀百度PB級數(shù)據(jù)倉庫Palo開源架構(gòu) 相關(guān)贊助商
與100+國內(nèi)外技術(shù)專家探索2017前瞻熱點(diǎn)技術(shù)
以上這些都是業(yè)界比較成熟的云深度學(xué)習(xí)平臺,而在真實(shí)的企業(yè)環(huán)境中,我們?yōu)槭裁催€需要實(shí)現(xiàn)Cloud Machine Learning服務(wù)呢?
首先國外的基礎(chǔ)設(shè)施并不一定是國內(nèi)企業(yè)可以直接使用的,而如果只是本地安裝了TensorFlow,那也只能在裸機(jī)上進(jìn)行訓(xùn)練,本地默認(rèn)沒有資源隔離,如果同時(shí)跑兩個(gè)訓(xùn)練任務(wù)就需要自己去解決資源沖突的問題。因?yàn)闆]有資源隔離,所以也做不了資源共享,即使你有多節(jié)點(diǎn)的計(jì)算集群資源,也需要人工的約定才能保證任務(wù)不會沖突,無法充分利用資源共享帶來的便利。此外,開源的機(jī)器學(xué)習(xí)框架沒有集群級別的編排功能,例如你想用分布式TensorFlow時(shí),需要手動在多臺服務(wù)器上啟動進(jìn)程,沒有自動的Failover和Scaling。因此,很多企業(yè)已經(jīng)有機(jī)器學(xué)習(xí)的業(yè)務(wù),但因?yàn)槿鄙貱loud Machine Learning平臺,仍會有部署、管理、集群調(diào)度等問題。
那么如何實(shí)現(xiàn)Cloud Machine Learning平臺呢?
我們對云深度學(xué)習(xí)服務(wù)做了一個(gè)分層,第一層是平臺層,類似于Google cloud、Azure、AWS這樣的IaaS層,企業(yè)內(nèi)部也可以使用一些開源的方案,如容器編排工具Kubernetes或者虛擬機(jī)管理工具OpenStack。有了這層之后,我們還需要支持機(jī)器學(xué)習(xí)相關(guān)的功能,例如Training、Prediction、模型上線、模型迭代更新等,我們在Machine Learning Layer層對這些功能進(jìn)行抽象,實(shí)現(xiàn)了對應(yīng)的API接口。最上面是模型應(yīng)用層,就可以基于一些開源的機(jī)器學(xué)習(xí)類庫,如TensorFlow、MXNet等。
整個(gè)Cloud Machine learning運(yùn)行在可伸縮的云服務(wù)上,包行了模型開發(fā)、模型訓(xùn)練,以及模型服務(wù)等功能,形成一個(gè)完整的機(jī)器學(xué)習(xí)工作流。但這并不是一個(gè)閉環(huán),我們在實(shí)踐中發(fā)現(xiàn),線上的機(jī)器學(xué)習(xí)模型是有時(shí)效性的,例如新聞推薦模型就需要及時(shí)更新熱點(diǎn)新聞的樣本特征,這時(shí)就需要把閉環(huán)打通,把線上的預(yù)測結(jié)果加入到線下的訓(xùn)練任務(wù)里,然后通過在線學(xué)習(xí)或者模型升級,實(shí)現(xiàn)完整的機(jī)器學(xué)習(xí)閉環(huán),這些都是單機(jī)版的機(jī)器學(xué)習(xí)平臺所不能實(shí)現(xiàn)的。
打造云深度學(xué)習(xí)平臺主要包含以下幾個(gè)組件:首先是客戶端訪問的API Service,作為服務(wù)提供方,我們需要提供標(biāo)準(zhǔn)的RESTful API服務(wù),后端可以對接一個(gè)Kubernetes集群、OpenStack集群、甚至是自研的資源管理系統(tǒng)??蛻舳苏埱蟮紸PI服務(wù)后,平臺需要解析機(jī)器學(xué)習(xí)任務(wù)的參數(shù),通過Kubernetes或者OpenStack來創(chuàng)建任務(wù),調(diào)度到后端真正執(zhí)行運(yùn)算的集群資源中。如果是訓(xùn)練任務(wù),可以通過起一個(gè)訓(xùn)練任務(wù)的Container,里面預(yù)裝了TensorFlow或MXNet運(yùn)行環(huán)境,通過這幾層抽象就可以將單機(jī)版的TensorFlow訓(xùn)練任務(wù)提交到由Kubernetes管理的計(jì)算集群中運(yùn)行。在模型訓(xùn)練結(jié)束后,系統(tǒng)可以導(dǎo)出模型對應(yīng)的文件,通過請求云深度學(xué)習(xí)平臺的API服務(wù),最終翻譯成Kubernetes可以理解的資源配置請求,在集群中啟動TensorFlow Serving等服務(wù)。除此之外,在Google Cloud-ML最新的API里多了一個(gè)Prediction功能,預(yù)測時(shí)既可以啟動在線Service,也可以啟動離線的Prediction的任務(wù),平臺只需要創(chuàng)建對應(yīng)的Prediction的容器來做Inference和保存預(yù)測結(jié)果即可 。通過這種簡單的封裝,就可以實(shí)現(xiàn)類似Google Cloud-ML的基礎(chǔ)架構(gòu)了。