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