在阿里雲上輕鬆部署Kubernetes GPU集群,遇見TensorFlow
摘要:Kubernetes在版本1.6後正式加入了Nvidia GPU的調度功能,支持在Kubernetes上運行運行和管理基於GPU的應用。而在2017年9月12日,阿里雲發布了新的異構計算類型GN5,基於P100 nvidia GPU, 提供靈活強悍的異構計算模型,從基礎設施到部署環境全面升級,可有效提升矩陣運算、視頻識別、機器學習、搜索排序等處理計算效率。當Kubernetes和GPU在阿里雲上相遇,會有什麼樣美好的事情發生呢?
在阿里雲的GN5上部署一套支持GPU的Kubernetes集群是非常簡單的,利用ROS模板一鍵部署,將阿里雲強大的計算能力便捷的輸送到您的手中。不出10分鐘,您就可以開始在阿里雲的Kubernetes集群上開始您的Kubernetes+GPU+TensorFlow的深度學習之旅了。
前提準備
- 您需要開通容器服務、資源編排(ROS)服務和訪問控制(RAM)服務。 登錄 容器服務管理控制台、ROS 管理控制台 和 RAM 管理控制台 開通相應的服務。
- 所創建的資源均為按量付費,根據阿里雲的計費要求,請確保您的現金賬戶餘額不少於 100 元。
- 目前,按量付費的異構計算gn5需要申請工單開通。 請登錄阿里雲賬號後 ,按照如下內容提交 ECS 工單
當審批通過後,您就可以在 ECS控制台 的 按量付費 的計費方式下查看GPU節點是否可用。
使用限制
目前僅支持華北2(北京),華東2(上海)和華南1(深圳)創建Kubernetes的GPU集群。
集群部署
在本文中, 我們提供了部署單Master節點,並可以配置worker的節點數,同時可以按需擴容和縮容,創建和銷毀集群也是非常簡單的。
- 選擇ROS創建入口
- 單擊此處創建一個位於華北2的GPU Kubernetes集群
- 單擊此處創建一個位於華東2的GPU Kubernetes集群
- 單擊此處創建一個位於華南1的GPU Kubernetes集群
2. 填寫參數並單擊 創建
- 棧名:所部署的 Kubernetes 集群屬於一個 ROS 的棧,棧名稱在同一個地域內不能重複。
- 創建超時:整個部署過程的超時時間,默認為 60 分鐘,無需修改。
- 失敗回滾:選擇 失敗回滾 時,如果部署過程中發生不可自動修復性錯誤,將刪除所有已創建資源;反之,已創建資源將被保留,以便進行問題排查。
- Master節點ECS實例規格:指定 Master 節點所運行的 ECS 實例的規格,默認為 ecs.n4.large。
- Worker節點ECS實例規格:指定 Worker 節點所運行的包含GPU的 ECS 實例規格,默認為 ecs.gn5-c4g1.xlarge。具體配置可以查看ECS規格文檔。
- 部署GPU節點的可用區:指定 GPU節點可以部署的可用區,請根據具體地域選擇。
- ECS系統鏡像:目前指定 centos_7。
- Worker節點數:指定 Worker 節點數,默認為 2,支持後期擴容。
- ECS登錄密碼:所創建的 ECS 實例可通過此密碼登錄,請務必牢記密碼。
3. 單擊 創建, 啟動部署
這樣,部署請求已經成功提交。 可以單擊 進入事件列表 實時監控部署過程
4. 點擊概覽查看,部署完成後的輸出結果
通過輸出結果中返回的信息,可以對 Kubernetes 集群進行管理:
- APIServer_Internet:Kubernetes 的 API server 對公網提供服務的地址和埠,可以通過此服務在用戶終端使用 kubectl 等工具管理集群。
- AdminGateway:可以直接通過 SSH 登錄到 Master 節點,以便對集群進行日常維護。
- APIServer_Intranet:Kubernetes 的 API server 對集群內部提供服務的地址和埠。
5. 通過通過 kubectl 連接 Kubernetes 集群 , 並且通過命令查看GPU節點
可以看到總共的和可分配的GPU數量都為1。
部署GPU應用
最後我們部署一個基於GPU的TensorFlow Jupyter應用來做一下簡單的測試,以下為我們的Jupyter的部署配置文件**jupyter.yml**
Deployment配置:
- ** http://alpha.kubernetes.io/nvidia-gpu ** 指定調用nvidia gpu的數量
- ** type=LoadBalancer ** 指定使用阿里雲的負載均衡訪問內部服務和負載均衡
- 為了能讓GPU容器運行起來,需要將Nvidia驅動和CUDA庫文件指定到容器中。這裡需要使用hostPath,在阿里雲上您只需要將hostPath指定到/var/lib/nvidia-docker/volumes/nvidia_driver/375.39即可,並不需要指定多個bin和lib目錄。
- 環境變數** PASSWORD ** 指定了訪問Jupyter服務的密碼,您可以按照您的需要修改
1. 按照文檔介紹的方式連接Kubernetes Web UI, 點擊 CREATE 創建應用
2. 單擊 Upload a YAML or JSON file。選擇剛才創建的 jupyter.yml 文件
3. 待部署成功後, 在 Kubernetes Web UI 上定位到 default 命名空間,選擇 Services。
可以看到剛剛創建的 jupyter-svc 的 jupyter 服務的外部負載均衡地址(External endpoints)
4. 點擊外部負載均衡的地址,您就可以直接訪問到Jupyter服務, 通過web Terminal內執行nvidia-smi命令查看容器內GPU設備狀況。我們可以看到當前的容器里已經分配了一塊Tesla P100 的GPU卡。
這樣,您就可以正式開始自己的深度學習之旅
總結
利用阿里雲容器服務的Kubernetes+GPU部署方案,您無需操心複雜Nvidia驅動和Kubernetes集群配置,一鍵部署,不出十分鐘就可以輕鬆獲得阿里雲強大的異構計算能力和Kubernetes的GPU應用部署調度能力。這樣您就可以專心的構建和運行自己的深度學習應用了。歡迎您嘗試和體驗。
後續我們會提供通過阿里雲容器服務直接和部署Kubernetes+GPU的能力,敬請期待哦!
原文鏈接
作者:必嘫
更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎
推薦閱讀:
※如何評價文章「谷歌太可怕?專家:中國智能晶元引領世界」?
※如何看待Google的AutoML 已經學會自己編寫機器學習代碼?
※語音識別領域的最新進展目前是什麼樣的水準?
※神經網路的損失函數為什麼是非凸的?
※如何看待用機器學習已經可以根據化學分子的特點預測它的氣味?
TAG:深度学习DeepLearning | 容器 | 图形处理器GPU |