天天看點

git clone開啟雲上AI開發

摘要:相比于傳統的軟體開發,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開發的優勢:

  1. 任意地點接入,線上開發;
  2. 雲上環境預置多種主流深度學習架構,開“箱“即用;
  3. 雲端充足算力、TB級資料存儲,支援重型訓練任務;
  4. 雲端平台具備訓練任務版本化管理,AI開發更可靠、可高效;

二、雲上AI開發主要步驟

git clone開啟雲上AI開發

三、具體操作步驟

步驟一 Notebook調試

1.準備Python環境

進入ModelArts控制管理台,點選【開發環境】–> 【Notebook】,進入notebook清單頁面,點選頁面左上角“建立”按鈕,建立一個notebook,填寫參數,下圖所示:

git clone開啟雲上AI開發
git clone開啟雲上AI開發

點選“立即建立”,确認産品規格後,點選送出,完成Notebook的建立。

傳回Notebook清單頁面,等待新建立Notebook狀态變為“運作中”後,點選名稱進入Notebook。

進入Notebook頁面後,打開terminal,如下圖所示:

git clone開啟雲上AI開發

輸入如下指令,檢視已安裝Python環境資訊

conda info -e      

點此連結GitHub - IDEA-Research/DINO,下面将以此開源算法為例,示範如何在華為雲Notebook上快速運作,算法詳細介紹請參考 ​​README.md​​ 。

1)在terminal裡繼續輸入如下指令,克隆倉庫

git clone https://github.com/IDEACVR/DINO
cd DINO      
git clone開啟雲上AI開發

如上圖所示,表示已完成代碼克隆,點選左側工作列頂部重新整理按鈕,即可檢視代碼。

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 ../../..  # 回到代碼主目錄      
git clone開啟雲上AI開發

2.準備資料和預訓練參數檔案

1)進入控制台,将光标移動至左邊欄,彈出菜單中選擇“服務清單”->“存儲”->“對象存儲服務OBS”,如下圖所示:

git clone開啟雲上AI開發

點選“建立桶”按鈕進入建立界面。

git clone開啟雲上AI開發

開始建立。配置參數如下:

① 複制桶配置:不選

② 區域:華北-北京四

③ 桶名稱:自定義,将在後續步驟使用

④ 資料備援存儲政策:單AZ存儲

⑤ 預設存儲類别:标準存儲

⑥ 桶政策:私有

⑦ 預設加密:關閉

⑧ 歸檔資料直讀:關閉

單擊“立即建立”>“确定”,完成桶建立。

點選建立的“桶名稱”->“對象”->“建立檔案夾”,建立一個檔案夾,用于存放後續資料集。

git clone開啟雲上AI開發

2)下載下傳COCO 2017資料集子集。該資料集包括train(5000張),val(5000張)及标注檔案。進入下載下傳詳情頁面,下載下傳方式選擇對象存儲服務(OBS),目标區域選擇華北-北京四,目标路徑選擇1中在OBS中建立的路徑,用于資料集存儲,如下圖所示:

git clone開啟雲上AI開發

點選“确認”,跳轉至我的下載下傳頁面,可以檢視資料集下載下傳詳情,等待資料集下載下傳完成,如下圖所示:

git clone開啟雲上AI開發

傳回Notebook頁面,建立一個ipynb檔案,編寫導入資料集腳本,運作代碼,運作完畢後,點選工作列上方“重新整理”按鈕,即可檢視導入dataset,如下圖所示:

import moxing as mox
mox.file.copy_parallel({obs_path},{notebook_path})      

說明:

{obs_path}為OBS存儲資料集的位置

{notebook_path}為資料集在notebook中的存儲路徑

git clone開啟雲上AI開發

3)下載下傳DINO 模型 checkpoint “checkpoint0011_4scale.pth”,下載下傳完成後,傳回Notebook頁面,在DINO頁面,建立檔案夾ckpts,用于存放下載下傳的checkpoint。

git clone開啟雲上AI開發

進入檔案夾,點選工作列上方”上傳“按鈕,選擇下載下傳完成的checkpoint 路徑,檔案大小超過100MB,需選擇OBS中轉,等待資料上傳完畢,如下圖所示:

git clone開啟雲上AI開發

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存儲路徑

如下圖所示:

git clone開啟雲上AI開發

整個過程約等待13分鐘左右,運作結果如下:

git clone開啟雲上AI開發

2)推理及可視化

打開DINO目錄下的inference_and_visualization.ipynb,選擇Kernel Pytorch-1.8,如下圖所示:

git clone開啟雲上AI開發

修改代碼:

...
model_checkpoint_path = "ckpts/checkpoint0011_4scale.pth"  # 修改checkpoint路徑
...
args.coco_path = "../dataset"  # 修改coco資料集路徑      

運作代碼檢視推理結果。

git clone開啟雲上AI開發

步驟二 運作訓練作業

1.儲存鏡像

1)傳回ModelArts管理控制台,在左側菜單欄中選擇**“開發環境 > Notebook”**,進入新版Notebook管理頁面。在Notebook清單中,點選名稱進入建立的Notebook詳情頁

git clone開啟雲上AI開發

2)點選右側“更多”,選擇“儲存鏡像”

git clone開啟雲上AI開發

3)在儲存鏡像對話框中,設定組織、鏡像名稱、鏡像版本和描述資訊。單擊“确認”儲存鏡像。

git clone開啟雲上AI開發

在“組織”下拉框中選擇一個組織。如果沒有組織,可以單擊右側的“立即建立”,建立一個組織。建立組織的詳細操作請參見建立組織。

同一個組織内的使用者可以共享使用該組織内的所有鏡像。

4)鏡像會以快照的形式儲存,儲存過程約5分鐘,請耐心等待。此時不可再操作執行個體(對于打開的JupyterLab界面和本地IDE 仍可操作)。

5)鏡像儲存成功後,執行個體狀态變為**“運作中”**,使用者可在“鏡像管理”頁面檢視到該鏡像詳情。

6)單擊鏡像的名稱,進入鏡像詳情頁,可以檢視鏡像版本/ID,狀态,資源類型,鏡像大小,SWR位址等。

7)還可在左側菜單欄中選擇**“鏡像管理”**,檢視鏡像清單及詳情,如下圖所示:

git clone開啟雲上AI開發

2.上傳訓練代碼

傳回Notebook頁面,在建立的ipynb中輸入以下代碼,完成代碼上傳至OBS桶中

mox.file.copy_parallel("./DINO/","obs://dino-coco/DINO")      

如下圖所示:

git clone開啟雲上AI開發

3.建立訓練作業

1)在左側菜單欄中選擇**“訓練管理 > 訓練作業”**,點選右上角“建立訓練作業”,如下圖所示:

git clone開啟雲上AI開發

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桶,點選建立檔案夾,建立一個檔案夾,用于存放訓練輸出,如下圖所示:

git clone開啟雲上AI開發

資源池:公幹資源池

資源類型:GPU

規格: GPU: 1*NVIDIA-V100(32GB) | CPU: 8 核 64GB 3200GB

永久儲存日志:開啟,選擇OBS桶,建立檔案夾,用于存放訓練日志,如下圖所示:

git clone開啟雲上AI開發

事件通知:開啟,可監控訓練作業的事件的狀态,可短信通知。

主題名:如不存在點選右側“建立主題”。主題是消息釋出或用戶端訂閱通知的特定事件類型。它作為發送消息和訂閱通知的信道,為釋出者和訂閱者提供一個可以互相交流的通道。

事件:全部勾選

自動停止:可開啟(訓練時長大于1小時)

如下圖所示:

git clone開啟雲上AI開發
git clone開啟雲上AI開發

3)參數設定完成之後,點選送出,确認訓練資訊,點選“确認”

git clone開啟雲上AI開發

跳轉至訓練作業清單,等待建立的訓練作業,可點選訓練作業名稱,檢視詳細資訊,系統日志,及資源占用情況,如下圖所示:

git clone開啟雲上AI開發
git clone開啟雲上AI開發

4)在訓練任務跑完之後,可在“代碼目錄”處線上編輯代碼,儲存之後,可再次進行訓練模型,如下圖所示:

git clone開啟雲上AI開發

4.訓練輸出

訓練完成之後,可在配置的OBS訓練輸出路徑檢視訓練結果

git clone開啟雲上AI開發

繼續閱讀