在阿里雲上輕鬆部署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的節點數,同時可以按需擴容和縮容,創建和銷毀集群也是非常簡單的。

  1. 選擇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配置:

  • ** alpha.kubernetes.io/nvi ** 指定調用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 |