中華電信 hicloud GPU 教學使用手冊

Fammy 蔡豐名
10 min readJun 13, 2019

--

# CHT 提供的雲端伺服器租用服務

site: https://userportal.hicloud.hinet.net/cloud/

環境設定上有點複雜,但設定好之後就可以很容易地使用 GPU 伺服器了,根據本篇的手把手設定教學可以輕鬆開始使用 CHT hicloud 服務

剛好因緣際會得到 hicloud 10 萬元的使用額度,因而誕生此教學文

Outline

[1] 申租 CVPC 軟體資料中心

[2] 申租 IPv4 子網段

[3] 申租網際網路連線

[4] 設定防火牆規則

[5] 申租 GPU 雲伺服器

[6] 申租額外的儲存空間

[7] 開機 GPU 雲伺服器

[8] ssh 連線 GPU 雲伺服器使用

[9] 掛載額外的儲存空間使用

[10] 使用 NGC Docker Image (Nvidia GPU Cloud)

[11] 儲存與載入 Docker Image

  • 登入/註冊
  • 選擇雲端服務 -> hicloud CVPC 雲運算版虛擬私雲

[1] 申租 → CVPC 軟體資料中心

前兩個欄位自行命名,後面如圖示選擇區域

  • 下一步 → 同意條款 → 確認完成送出

(開通需要一些時間,可以半小時以後再回頭來看)

開通完成之後,就可以點擊名稱進入 CVPC 軟體資料中心

[2] 申租 → 子網段 → IPv4 子網段

第四個 IPv4 的位址可以自己設定

  • 下一步 → 同意條款 → 確認完成送出

(子網段申租在數秒內就會完成)

[3] 申租 → 網際網路連線

名稱跟描述都可以自行任意設定

  • 下一步 → 同意條款 → 確認完成送出
  • 網際網路 → NAT 設定
  • 點擊 (+) 新增 NAT 物件

外部 IP 、 IP 網段都不需要填寫,直接從下拉式選單中選擇

  • 送出後一樣等待申租,也很快

[4] 左邊選單:防火牆

  • 點擊 (+) 新增防火牆規則
  • 新增 外對內 防火牆規則

來源端 IP 直接 0.0.0.0 按加入,允許所有 IP 連進來

目的端 IP 下拉式選單選擇剛剛的申租的 NAT 按加入

目的端協定根據需要選擇,我這邊只使用 SSH 為例,選擇 SSH 按加入

  • 再新增一條 內對外 防火牆規則

來源端、目的端 IP 直接加入 0.0.0.0 (任意)

網際網路 IP 位址從下拉式選單中選擇

目的端協定直接把所有協定都加入: ANY

  • 有兩條對內及對外的防火牆協定了,只允許 ssh 連線進來,而伺服器允許往外任意連線
  • 點選 `套用` 啟用防火牆規則
  • 下一步 → 同意條款 → 確認完成送出

[5] 申租 → 雲伺服器 → GPU 雲伺服器

  • 選擇需要的版本,這邊選擇有 Docker 的版本
  • 選擇規格,硬碟可以選擇 HDD 或 SSD
  • 選擇申租的 IPv4 子網段
  • 下一步 → 同意條款 → 確認完成送出

(雲伺服器申租需要一段時間,maybe 15 分鐘)

[6] 申租 → 儲存 → 儲存空間

如果雲伺服器的空間 100G 夠用的話,可以不需要多申租額外的儲存空間 (多 100G SSD 一天多 48 元)

  • 掛載在剛剛申租的雲伺服器下
  • 下一步 → 同意條款 → 確認完成送出

[7] 左邊選單:雲伺服器 → 點擊 GPU 雲伺服器

  • 取得預設密碼
  • 點擊上方 “開機”

[8] ssh 連線雲伺服器

  • 使用 pietty 或 putty 等等可以 ssh 的連線軟體
  • 這邊以 Mac terminal 示範

(使用 ssh 以外的連線方式的話需要在外對內防火牆中增加規則)

  • 連線 IP 可以在左邊選單:Dashboard 裡面找到
  • ssh 連線上雲伺服器
  • command ssh root@210.61.14.53
  • 複製剛剛的預設密碼貼上
  • 成功連上雲伺服器
  • Nvidia driver 為最新版 418.39,CUDA 10.1
  • GPU 為 Nvidia Tesla V100 32GB
  • python 版本為 2.7、3.5
  • 測試網路功能
  • command ping 8.8.8.8

(沒有東西回傳的話表示網路沒連接)

[9] 使用掛載的 EBS 硬碟

  • 在雲伺服器下面可以看到掛載的 EBS 硬碟

(這邊使用了一顆 100G 的 HDD,每天大約 16 塊,之後退租費用昂貴的 GPU 雲伺服器不退租硬碟,資料儲存在裡面)

  • 列出機器中所有的硬碟資訊
  • command fdisk -l

上面那一顆 Disk /dev/sda 就是我們雲伺服器的 100G SSD

下面 Disk /dev/sdb 就是我們掛載的 100G HDD

  • 列出機器中的儲存空間資訊
  • command df -h

可以發現 /dev/sdb 還並不是我們能使用的儲存空間,需要做一些設定

  • 首先先將硬碟分割出來使用 (就像 windows 切 D、E 槽那樣)
  • command fdisk /dev/sdb

輸入 n 表示 new partition

接下來都直接輸入 enter 用 default 值

輸入 w 表示 write and save

  • 再看一次硬碟資訊 fdisk -l

最下面的 /dev/sdb 分割出了一個 partition /dev/sdb1 準備來做使用

  • 再來將 /dev/sdb1 這個分割硬碟格式化
  • command mkfs -t ext4 /dev/sdb1
  • 最後把硬碟掛載在我們的儲存空間底下
  • 先在 root 底下創立一個新的資料夾來掛載
  • command mkdir /hdd
  • 掛載硬碟
  • command mount /dev/sdb1 /hdd

最底下可以看到 /dev/sdb1 的 100G hdd 空間可以開始使用

下一次重新申租掛載之後,只要下 mount 掛載到機器上即可存取裡面的資料

[10] NGC (Nvidia GPU Cloud) Docker Image

  • 可以上 NGC 官網上面提供各種框架的 docker image,這裡以 tensorflow 為例
  • https://ngc.nvidia.com/catalog/containers/nvidia:tensorflow
  • 下載 tensorflow docker image (幾乎每月都會更新一版,可以試著下載最新版本的 docker)
  • command: docker pull nvcr.io/nvidia/tensorflow:19.04-py3

(下載 docker 需要一些時間,maybe 10 分鐘)

  • 列出 docker image 的資訊
  • command docker images

可以看到剛剛 pull 下來的 tensorflow19.04

  • run docker image
  • command nvidia-docker run -it -v /ssd:/container_ssd 621fd859db33
  • -v 設定 image 裡面與本機端的資料夾連結,否則在 image 上的更動不會同步,只會儲存在 image 中
  • 最後面是要 run 的 image ID,可以在上面那個指令找到
  • 就開啟了這個 nvidia 的 tensorflow image
  • 簡單測試一下 tensorflow 可以使用

[11] 儲存 Docker Image 到 HDD 儲存空間

  • 在 image workspace 輸入 exit 可以離開關閉 workspace
  • 列出所有的 image
  • command docker ps -a
  • restart 剛剛關閉的 image
  • command docker start xenodochial_galois
  • 看一下 image 的 STATUS 啟動了
  • command docker ps -a
  • commit image
  • command docker commit xenodochial_galois robust:19.04
  • save image
  • command docker save -o /hdd/robust_tf19.04.img robust:19.04
  • 確認儲存在 hdd 裡面
  • 我們把 image 刪除掉,重 load 回來測試
  • command docker stop xenodochial_galois
  • command docker rm xenodochial_galois
  • load saved image
  • command docker load --input /hdd/robust_tf19.04.img
  • run image
  • command nvidia-docker run -it -v /ssd:/container_ssd robust:19.04
  • 如此一來在 image 做的環境更動都可以被儲存下來,只要退租大量花費的雲伺服器即可,下次只需要掛載回 hdd 就能 load 回 docker image 使用

--

--

Fammy 蔡豐名

曾擔任 AIA 台灣人工智慧學校新竹分校助教,對技術與教學充滿熱忱,現為一線 IC 設計廠 AI 顧問