跳至主要内容

HowTo:使用 TWCC CLI 部署自動化 AI/ML pipeline

這篇文章將幫助使用者了解如何運用 TWCC CLI 及一台虛擬運算個體 (VCS),將以下工作串接為自動化的流程 (pipeline),提高工作效率並節省容器持續開啟的成本:

1. 建立容器
2. 執行訓練程式
3. 刪除容器

利用部署 pipeline 串接 TWSC 資源,您可將手動工作交由 script 自動化完成,在時間與人力上的安排會更加彈性,且資源在執行完程式即自動刪除,運算所需的成本也會隨之降低。


環境部署

本文範例將使用 TWSC 虛擬運算個體做為 local 端主機,已為使用者安裝 TWCC CLI,可快速執行部署容器自動化管理流程,您也可將 TWCC CLI 安裝於自己的電腦操作。

信息

TWCC-CLI 安裝步驟與資源操作指令,可參考 TWCC-CLI


Step 1. 建立虛擬運算個體

依照建立虛擬運算個體,在使用者網站建立一個虛擬運算個體,設定請參考下方:

映像檔 :Ubuntu 20.04
基本設定:v.super

Step 2. 啟用 TWCC CLI

登入 TWCC CLI 啟用 TWCC CLI。


Step 3. 安裝 jq

jq 是一個 JSON 格式的處理工具。TWCC CLI 資料都可轉換為 JSON 格式呈現,並可利用 jq 截取資料中某些欄位進行運用,相關文件可參考 jq manual

  • 輸入以下指令,安裝 jq:
sudo apt install jq

SSH Without Password

一般 SSH 連線需要帶入金鑰或輸入密碼才能登入,因此將導致自動化過程停止無法繼續。

使用以下方法,建立一個容器並將虛擬運算個體的 SSH key 傳送至容器,往後即可略過帶入金鑰或輸入密碼的動作,直接登入容器。


Step 1. 製作 SSH key

  • 輸入以下指令,製作 SSH key
ssh-keygen -t rsa -n 4096

Enter 鍵略過以下三個問題

Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

  • 輸入以下指令,建立一個開發型容器
twccli mk ccs -gpu 1

Step 2. 將 SSH key 帶入開發型容器

  • 輸入以下指令,將 SSH key 帶入開發型容器
ssh-copy-id <USERNAME>@<CCS_IP> -p <PORT>

# <USERNAME> 主機帳號
# <CCS_IP> 開發型容器的公用 IP
# <PORT> 容器 SSH 的對外埠
  • 首次將 key 放入容器,需請您輸入主機密碼,完成後虛擬運算個體對容器下指令就不再需要輸入密碼:


Step 3. 下載範例程式:GPU Burn

本文使用 GPU Burn 程式做為操作範例,您可參考以下步驟,在進入容器環境後,載入所需的模型訓練程式,或直接 透過 SFTP + Filezilla 將程式上傳至容器預設儲存空間 - 高速檔案系統。

  • 輸入以下指令進入容器環境
ssh <USERNAME>@<CCS_IP> -p <PORT>

# <USERNAME> 主機帳號
# <CCS_IP> 開發型容器的公用 IP
# <PORT> 容器 SSH 的對外埠
  • 下載範例程式 GPU Burn
git clone https://github.com/wilicc/gpu-burn.git
  • 將程式編譯成可用的指令 (可略)
cd gpu-burn
make >> progress.log 2>&1
  • 退出容器回到虛擬運算個體環境
exit
  • 完成以上動作後,可刪除方才部署環境用的容器。請先列出所有容器,並找出容器 ID
twccli ls ccs

  • 刪除部署環境的容器
twccli rm ccs -f -s <SITE_ID>  

#<SITE_ID> 容器 ID

部署環境和載入執行程式完成囉!接下來即可開始製作並執行自動化建立容器、執行運算、刪除容器的 script。


AI/ML pipeline script

自動化 AI/ML pipeline script 內容可分為 5 個步驟:

  1. Create:建立容器運算資源。
  2. Put Data:將相關檔案上傳至容器。
  3. Execution:執行程式。
  4. Collect Data:收集執行程式結果。
  5. Garbage Collection:回收使用完的運算資源。

請參考下方步驟,製作和執行 pipeline script。


Step 1. 製作 pipeline script

  • 輸入以下指令編輯 pipeline script
vi AI_ML.sh
  • 輸入i 進入編輯模式,將以下範例 script 貼入 AI_ML.sh 中。內容可依據您的運算程式修改,也可選擇建立規格更大的容器。
TWCC_CLI_CMD=/usr/local/bin/twccli

echo "1. Creating CCS" # 建立開發型容器
$TWCC_CLI_CMD mk ccs -gpu 1 -wait -json > ccs_res.log

CCS_ID=$(cat ccs_res.log | jq '.id')
echo "2. CCS ID:" $CCS_ID # 開發型容器 ID

echo "3. Checking GPU" # 確認 GPU 狀態
ssh -t -o "StrictHostKeyChecking=no" `$TWCC_CLI_CMD ls ccs -gssh -s $CCS_ID` "/bin/bash --login -c nvidia-smi"

echo "4. RUN GPU" # 執行運算程式
ssh -t -o "StrictHostKeyChecking=no" `$TWCC_CLI_CMD ls ccs -gssh -s $CCS_ID` "cd gpu-burn;/bin/bash --login -c './gpu_burn 150'"
# 可依據您的程式,修改 "cd gpu-burn;/bin/bash --login -c './gpu_burn 150'"

echo "5. GC GPU" # 刪除開發型容器
$TWCC_CLI_CMD rm ccs -f -s $CCS_ID

echo "6. Checking CCS" # 檢視容器狀態
$TWCC_CLI_CMD ls ccs
  • Esc 鍵並輸入 :wq! 存檔。
信息
  • 步驟 echo "4. RUN GPU" 可依據您的程式,修改 "cd gpu-burn;/bin/bash --login -c './gpu_burn 150'" 此部分 script。

Step 2. 執行 pipeline script

  • 輸入以下指令,執行 pipeline script:
bash AI_ML.sh
  • Script 執行畫面如下,將會自動建立容器、執行 GPU burn 程式,並自動刪除容器。