1. 程式人生 > >在阿里雲上輕鬆部署Kubernetes GPU叢集,遇見TensorFlow

在阿里雲上輕鬆部署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 對叢集內部提供服務的地址和埠。


可以看到總共的和可分配的GPU數量都為1。

部署GPU應用

最後我們部署一個基於GPU的TensorFlow Jupyter應用來做一下簡單的測試,以下為我們的Jupyter的部署配置檔案**jupyter.yml**


Deployment配置:

** alpha.kubernetes.io/nvidia-gpu ** 指定呼叫nvidia gpu的數量

為了能讓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的能力,敬請期待哦!

原文連結·:https://yq.aliyun.com/articles/203865?spm=5176.100239.0.0.qITEUW