去哪兒網(wǎng)基于Kubernetes/Ceph的GPU云平臺實踐
原創(chuàng)【51CTO.com原創(chuàng)稿件】今年,深度學(xué)習(xí)領(lǐng)域最火熱的消息莫過于:AIphaGo 0:3打敗柯潔、AIphaGo Zero在沒有人類干預(yù)的情況下,通過自我學(xué)習(xí)及少許訓(xùn)練***擊敗AIphaGo。由此,我們可以看到深度學(xué)習(xí)發(fā)展之迅速。深度學(xué)習(xí)是機器學(xué)習(xí)的一個領(lǐng)域,其概念于上世紀(jì)60年代被提出,但當(dāng)時并沒有掀起太大波瀾。那么,為什么在當(dāng)下又重新走近大眾的視野呢?
近日,由51CTO主辦的第十六期以“Tech Neo”為主題的技術(shù)沙龍在北京舉行,此次活動邀請了來自去哪兒網(wǎng)的DevOps工程師葉璐老師。她給大家?guī)砹岁P(guān)于深度學(xué)習(xí)的興起原因、去哪兒網(wǎng)的深度學(xué)習(xí)應(yīng)用實踐以及構(gòu)建GPU云應(yīng)對資源使用問題的分享。
深度學(xué)習(xí)興起的原因
當(dāng)下,深度學(xué)習(xí)從大學(xué)實驗室和***IT公司走向大眾,諸多公司通過深度學(xué)習(xí)技術(shù)解決實際中遇到的問題。深度學(xué)習(xí)主要的特點是具有多隱層,隨著隱層不斷疊加,效果隨之不斷的提升。
深度學(xué)習(xí)興起的原因,主要有以下三點:
- 和以前相比,數(shù)據(jù)獲取更便捷、數(shù)據(jù)量也是呈指數(shù)倍的增加。
- GPU等計算資源成本降低,以前則是非常***且難獲取。
- 操作簡單的開源工具的普及。
GPU是深度學(xué)習(xí)的加速器,因為在GPU出現(xiàn)之前,一個實驗可能需要等幾個月,或者跑一天才能發(fā)現(xiàn)某個試驗的參數(shù)不好。現(xiàn)在,優(yōu)秀的GPU可以在深度學(xué)習(xí)網(wǎng)絡(luò)上進(jìn)行快速迭代,幾天就能跑完之前幾個月的試驗,或者幾小時代替之前的幾天,幾分鐘代替之前的幾小時。
去哪兒網(wǎng)在深度學(xué)習(xí)方面的應(yīng)用實踐
去哪兒網(wǎng)在深度學(xué)習(xí)方面的應(yīng)用有很多, 如機票驗證碼識別、看圖寫詩-小詩機、智能客服、“拿去花”用戶信用評級、根據(jù)歷史訪問記錄推薦酒店、計算不同酒店房型的價格系數(shù)、酒店推薦的模型等等。其中智能客服、“拿去花”用戶信用評級、酒店推薦是去哪兒網(wǎng)深度學(xué)習(xí)的經(jīng)典實踐案例。
應(yīng)用實踐過程中深度學(xué)習(xí)存在一定的共通性,就是輸入數(shù)據(jù)并設(shè)置算法,讓計算機對我們的世界進(jìn)行充分建模,從而達(dá)到我們所說的“智能”。讓機器和人腦一樣,能辨別好壞,幫助風(fēng)控工程師進(jìn)行風(fēng)險分析;能迎合喜好,給用戶推薦更合適的酒店。而深度學(xué)習(xí),讓模型變得更加可靠,在數(shù)據(jù)變化的情況下,模型持續(xù)可用。
以前去哪兒網(wǎng)的GPU資源是多個團隊共享的使用方式,常遇到某位同事非常憤怒的說:“誰把老子跑了三天的任務(wù)殺了!”這樣的情況。
GPU的使用資源問題,還有如下幾點:
- 環(huán)境無隔離。
- 采購周期長。
- 資源利用率低。
- 各種工具的環(huán)境部署成本高。
那么,要如何應(yīng)對GPU使用資源的一系列問題呢?去哪兒網(wǎng)的解決方案是構(gòu)建GPU云,降低資源使用門檻,提升資源利用率。
為什么選擇Tensorflow?GPU云***期的目標(biāo)是GPU資源云化。業(yè)務(wù)線的同學(xué)能夠快捷定制機器學(xué)習(xí)應(yīng)用,秒建秒刪,一鍵釋放GPU資源,建立統(tǒng)一GPU資源申請和管理等入口到Portal,降低業(yè)務(wù)線同學(xué)的接入和學(xué)習(xí)成本。做到環(huán)境隔離的同時又能保證訓(xùn)練數(shù)據(jù)在分布式環(huán)境下的持久化和可靠性,以及支持Tensorflow全工具鏈。
為什么是Tensorflow呢?構(gòu)建GPU云初期之所以選擇Tensorflow,是因為開源且使用的人相對比較多,社區(qū)的活躍度也相對較高。并且在中后期,Tensorflow也會支持其他的用于數(shù)值計算的軟件庫。
如下圖,是Tensorflow與其他社區(qū)Issue和Pull Request量對比:
如下圖,是Tensorflow的一段Mnist代碼:
這段Mnist代碼總共只有149行,沒有多余的代碼,且還包含一些注釋。短短的代碼,定義了兩個隱層,并構(gòu)建了一個softmax回歸模型,工程師不用再擔(dān)心底層的實現(xiàn),更專注于模型本身。
如下圖,是Tensorboard部分截圖:
Tensorboard是Tensorflow全工具鏈之一,研發(fā)人員在可視化的情況下,既可以對模型進(jìn)行調(diào)優(yōu),也可以直觀方便地看到模型的訓(xùn)練效果。
去哪兒網(wǎng)的GPU云平臺架構(gòu)簡述
如下圖,是機器學(xué)習(xí)應(yīng)用部署的示意圖,大家可以直觀的看到兩臺機器Server1與Server2。
在OPS Namespace下,部署了一個分布式的Tensorflow集群,這個Tensorflow集群可以跨兩臺機器。Fight Namespace下是一個機票的應(yīng)用,選擇的是單機部署。
如下圖,是一個GPU實例初始化的過程:
研發(fā)人員可以自主選擇符合的模型來定義應(yīng)用,生成一個面向K8S的資源定義文件。去哪兒網(wǎng)在資源類型上,選擇的是Deployment,剩下的調(diào)度和和應(yīng)用初始化工作根據(jù)這個文件完成。
對于機器學(xué)習(xí)來說,數(shù)據(jù)存在哪里很關(guān)鍵。去哪兒網(wǎng)提供給開發(fā)者的是同時支持Ceph、塊存儲和對象存儲,這樣不僅提高了數(shù)據(jù)使用的靈活性,同時還能支持在線擴容。
去哪兒網(wǎng)為用戶提供的是Jupyter,選擇Jupyter是因為對于算法工程師來說,容易上手。
如下圖,是Jupyter使用界面:
Jupyter Notebook提供了網(wǎng)頁版的代碼編寫運行平臺,背后由Python ikernel支撐,可以選擇不同的Python版本,而且同一個應(yīng)用的負(fù)責(zé)人能協(xié)同編輯。
目前GPU云一期已經(jīng)完成,并且正在公測中,使用前后的對比結(jié)果如下:
- 環(huán)境秒建秒刪、環(huán)境隔離,這個特性給開發(fā)同學(xué)提供了極大的便利。
- 在對接Ceph后,數(shù)據(jù)的可用性和可靠性大大提升,也不用擔(dān)心因為更換機器帶來的訓(xùn)練數(shù)據(jù)遷移、丟失。
- 權(quán)限部分,Spectrum接入了去哪兒網(wǎng)的應(yīng)用管理中心Portal,管理模式和傳統(tǒng)應(yīng)用沒有差別,降低了新同學(xué)的接入門檻。
- 提高資源使用,這里需要提醒的是,如果不用,要及時停止GPU環(huán)境,減少耗費,或把資源讓給另一個環(huán)境。這個動作可以通過界面上的簡單的disable application一個按鈕就可以做到。
未來展望
GPU云的基礎(chǔ)環(huán)境固化,讓開發(fā)同學(xué)免受環(huán)境安裝之苦是***期的目標(biāo)?,F(xiàn)在Spectrum第二期也在開發(fā)中,開發(fā)工程師可以自定義環(huán)境模板,這樣不僅僅提供了更高的環(huán)境定制自由度;同時Tensorflow serving的上線,為機器學(xué)習(xí)真正落地提供了更完整的pipeline。其他的優(yōu)化包括,完善上下游的數(shù)據(jù)獲取管道,預(yù)處理流程優(yōu)化,Jupyter插件系統(tǒng)集成等等。
【嘉賓簡介】
葉璐,去哪兒網(wǎng)DevOps工程師,機器學(xué)習(xí)云平臺負(fù)責(zé)人。主要工作涉及Qunar私有云平臺建設(shè)、運維、容器云落地等方面。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】