摘要:相比于傳統的軟體開發,AI開發存在以下4個痛點:算法繁多;訓練時間長;算力需求大;模型需手動管理,我們可以使用雲上AI開發的方式來緩解以上4個痛點。
本文分享自華為雲社群《git clone開啟雲上AI開發》,作者:ModelArts開發者。
已釋出位址:https://developer.huaweicloud.com/develop/aigallery/article/detail?id=17052711-f3f5-4b53-bdbc-5d5c7cdc64fa
一、為什麼需要雲上AI開發?
相比于傳統的軟體開發,AI開發存在以下4個痛點:
1)算法繁多;
2)訓練時間長;
3)算力需求大;
4)模型需手動管理
我們可以使用雲上AI開發的方式來緩解以上4個痛點,雲上AI開發的優勢:
- 任意地點接入,線上開發;
- 雲上環境預置多種主流深度學習架構,開“箱“即用;
- 雲端充足算力、TB級資料存儲,支援重型訓練任務;
- 雲端平台具備訓練任務版本化管理,AI開發更可靠、可高效;
二、雲上AI開發主要步驟
三、具體操作步驟
步驟一 Notebook調試
1.準備Python環境
進入ModelArts控制管理台,點選【開發環境】–> 【Notebook】,進入notebook清單頁面,點選頁面左上角“建立”按鈕,建立一個notebook,填寫參數,下圖所示:
點選“立即建立”,确認産品規格後,點選送出,完成Notebook的建立。
傳回Notebook清單頁面,等待新建立Notebook狀态變為“運作中”後,點選名稱進入Notebook。
進入Notebook頁面後,打開terminal,如下圖所示:
輸入如下指令,檢視已安裝Python環境資訊
conda info -e
點此連結GitHub - IDEA-Research/DINO,下面将以此開源算法為例,示範如何在華為雲Notebook上快速運作,算法詳細介紹請參考 README.md 。
1)在terminal裡繼續輸入如下指令,克隆倉庫
git clone https://github.com/IDEACVR/DINO
cd DINO
如上圖所示,表示已完成代碼克隆,點選左側工作列頂部重新整理按鈕,即可檢視代碼。
2)檢視Pytorch版本
pip list | grep torch
3)安裝其他需要的包
pip install -r requirements.txt
4)編譯CUDA算子
cd models/dino/ops
python setup.py build install
# unit test (should see all checking is True)
python test.py
cd ../../.. # 回到代碼主目錄
2.準備資料和預訓練參數檔案
1)進入控制台,将光标移動至左邊欄,彈出菜單中選擇“服務清單”->“存儲”->“對象存儲服務OBS”,如下圖所示:
點選“建立桶”按鈕進入建立界面。
開始建立。配置參數如下:
① 複制桶配置:不選
② 區域:華北-北京四
③ 桶名稱:自定義,将在後續步驟使用
④ 資料備援存儲政策:單AZ存儲
⑤ 預設存儲類别:标準存儲
⑥ 桶政策:私有
⑦ 預設加密:關閉
⑧ 歸檔資料直讀:關閉
單擊“立即建立”>“确定”,完成桶建立。
點選建立的“桶名稱”->“對象”->“建立檔案夾”,建立一個檔案夾,用于存放後續資料集。
2)下載下傳COCO 2017資料集子集。該資料集包括train(5000張),val(5000張)及标注檔案。進入下載下傳詳情頁面,下載下傳方式選擇對象存儲服務(OBS),目标區域選擇華北-北京四,目标路徑選擇1中在OBS中建立的路徑,用于資料集存儲,如下圖所示:
點選“确認”,跳轉至我的下載下傳頁面,可以檢視資料集下載下傳詳情,等待資料集下載下傳完成,如下圖所示:
傳回Notebook頁面,建立一個ipynb檔案,編寫導入資料集腳本,運作代碼,運作完畢後,點選工作列上方“重新整理”按鈕,即可檢視導入dataset,如下圖所示:
import moxing as mox
mox.file.copy_parallel({obs_path},{notebook_path})
說明:
{obs_path}為OBS存儲資料集的位置
{notebook_path}為資料集在notebook中的存儲路徑
3)下載下傳DINO 模型 checkpoint “checkpoint0011_4scale.pth”,下載下傳完成後,傳回Notebook頁面,在DINO頁面,建立檔案夾ckpts,用于存放下載下傳的checkpoint。
進入檔案夾,點選工作列上方”上傳“按鈕,選擇下載下傳完成的checkpoint 路徑,檔案大小超過100MB,需選擇OBS中轉,等待資料上傳完畢,如下圖所示:
3.運作代碼
1)執行下面的指令,評估預訓練模型,你可以期待得到最終的AP大約49.0。
bash scripts/DINO_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
說明:
/path/to/your/COCODIR 為Notebook資料集的存儲路徑
/path/to/your/checkpoint 為Notebookcheckpoint存儲路徑
如下圖所示:
整個過程約等待13分鐘左右,運作結果如下:
2)推理及可視化
打開DINO目錄下的inference_and_visualization.ipynb,選擇Kernel Pytorch-1.8,如下圖所示:
修改代碼:
...
model_checkpoint_path = "ckpts/checkpoint0011_4scale.pth" # 修改checkpoint路徑
...
args.coco_path = "../dataset" # 修改coco資料集路徑
運作代碼檢視推理結果。
步驟二 運作訓練作業
1.儲存鏡像
1)傳回ModelArts管理控制台,在左側菜單欄中選擇**“開發環境 > Notebook”**,進入新版Notebook管理頁面。在Notebook清單中,點選名稱進入建立的Notebook詳情頁
2)點選右側“更多”,選擇“儲存鏡像”
3)在儲存鏡像對話框中,設定組織、鏡像名稱、鏡像版本和描述資訊。單擊“确認”儲存鏡像。
在“組織”下拉框中選擇一個組織。如果沒有組織,可以單擊右側的“立即建立”,建立一個組織。建立組織的詳細操作請參見建立組織。
同一個組織内的使用者可以共享使用該組織内的所有鏡像。
4)鏡像會以快照的形式儲存,儲存過程約5分鐘,請耐心等待。此時不可再操作執行個體(對于打開的JupyterLab界面和本地IDE 仍可操作)。
5)鏡像儲存成功後,執行個體狀态變為**“運作中”**,使用者可在“鏡像管理”頁面檢視到該鏡像詳情。
6)單擊鏡像的名稱,進入鏡像詳情頁,可以檢視鏡像版本/ID,狀态,資源類型,鏡像大小,SWR位址等。
7)還可在左側菜單欄中選擇**“鏡像管理”**,檢視鏡像清單及詳情,如下圖所示:
2.上傳訓練代碼
傳回Notebook頁面,在建立的ipynb中輸入以下代碼,完成代碼上傳至OBS桶中
mox.file.copy_parallel("./DINO/","obs://dino-coco/DINO")
如下圖所示:
3.建立訓練作業
1)在左側菜單欄中選擇**“訓練管理 > 訓練作業”**,點選右上角“建立訓練作業”,如下圖所示:
2)參數配置
建立方式:自定義算法
啟動方式:自定義,選擇已儲存鏡像
啟動指令:
cd ${MA_JOB_DIR}/DINO && python main.py -c config/DINO/DINO_4scale.py --options dn_scalar=100 embed_init_tgt=TRUE dn_label_coef=1.0 dn_bbox_coef=1.0 use_ema=False dn_box_noise_scale=1.0
訓練輸入:選擇OBS桶内上傳代碼路徑
訓練輸出:選擇建立的OBS桶,點選建立檔案夾,建立一個檔案夾,用于存放訓練輸出,如下圖所示:
資源池:公幹資源池
資源類型:GPU
規格: GPU: 1*NVIDIA-V100(32GB) | CPU: 8 核 64GB 3200GB
永久儲存日志:開啟,選擇OBS桶,建立檔案夾,用于存放訓練日志,如下圖所示:
事件通知:開啟,可監控訓練作業的事件的狀态,可短信通知。
主題名:如不存在點選右側“建立主題”。主題是消息釋出或用戶端訂閱通知的特定事件類型。它作為發送消息和訂閱通知的信道,為釋出者和訂閱者提供一個可以互相交流的通道。
事件:全部勾選
自動停止:可開啟(訓練時長大于1小時)
如下圖所示:
3)參數設定完成之後,點選送出,确認訓練資訊,點選“确認”
跳轉至訓練作業清單,等待建立的訓練作業,可點選訓練作業名稱,檢視詳細資訊,系統日志,及資源占用情況,如下圖所示:
4)在訓練任務跑完之後,可在“代碼目錄”處線上編輯代碼,儲存之後,可再次進行訓練模型,如下圖所示:
4.訓練輸出
訓練完成之後,可在配置的OBS訓練輸出路徑檢視訓練結果