-
雲平台采用K8S(Kubernetes 容器管理必備)+Docker+Nvidia-Docker
- GPU免費樣例(目前GPU是無法共享使用的,也就是你是可以完全獨占一塊顯卡,因此可以實際測試一下對比一下現有的顯卡,就可以確定其型號)+16GB顯存以及8核CPU、64GB內存(因此強烈推薦選擇GPU實例)
- CPU免費樣例為2核4GB內存
-
支持Jupyter Notebook
-
多種鏡像環境
-
免費的一個小時的GPU和CPU容器使用(也就是可以創建兩個一小時的兩個容器-GPU和CPU)(一個小時自動停止,可以無限重啟使用)
-
提供兩種存儲方案:對象存儲Obs(簡單理解:網盤或者類似於亞馬遜S3對象存儲)/雲硬盤(SCSI 遠程掛載?還沒測試過)
實踐
OBS創建
1.首先打開控制台,在上搜索對象存儲服務OBS(可以直接固定在側邊欄方便使用)
-
創建桶
由於成本考慮,選擇單AZ存儲(只有單一數據點,數據比較重要的請選擇多AZ),
創建后可以在該頁面下看到創建的桶Bucket
Notebook創建
雲平台提供Jupyter Notebook的環境
切換到ModelArts(同Obs搜索)-選擇開發環境-NoteBook
創建Notebook
分別選擇公共資源GPU-免費,存儲選擇obs使用之前創建的obs(主要用於工作目錄)然后下一步創建出一個Notebook
回到主界面,可以看到剛剛創建的目錄啟動中
進入JupyterLab,可以看到提供的多種環境(熟悉終端使用可以直接打開終端)
打開終端,查看存儲占用,從圖中可以看到我們擁有100GB左右的臨時存儲空間
查看GPU(16GB顯存-250W)
容器的目錄如下,工作目錄主要在work文件夾里,README里提供了加載多個環境的命令
初始下work是空的(注意OBS是類似於網盤,並不會像硬盤那樣直接掛在work目錄下),左側這些只是Obs目錄,並未同步到work里
官方這里提示使用Obs Sync,但是Obs Sync只允許100MB以下的同步,對於大數據集是遠遠不夠用的,因此這里推薦使用moxing用於obs同步
import moxing as mox
bucket_name = 'obs://{bucket}/{folder}' # 修改為你自己的桶
mox.file.list_directory(bucket_name)
mox.file.copy_parallel(bucket_name,'/home/ma-user/work/')
print("finish")
https://support.huaweicloud.com/moxing-devg-modelarts/modelarts_11_0005.html 具體可以看該鏈接
剩下的只需要上傳到obs就可以愉快的訓練了
總結
K8S自從發布以來被大廠快速運用,非常迅速(Google yyds!),而Nvidia-Docker也使得Docker可以直接調用GPU做訓練。
華為雲提供的環境體驗很不錯,免費樣例可以滿足大部分訓練,存儲費用也不高(幾天下來才快1rmb),同時利用Checkpoint,理論上只要我們一次的epoch不超過一個小時,可以斷點繼續訓練的。