您的位置:首頁 > 軟件教程 > 教程 > 昇騰開發(fā)全流程 之 MindSpore華為云模型訓(xùn)練

昇騰開發(fā)全流程 之 MindSpore華為云模型訓(xùn)練

來源:好特整理 | 時(shí)間:2024-05-26 08:53:46 | 閱讀:145 |  標(biāo)簽: S in 開發(fā) 華為   | 分享到:

學(xué)會如何安裝配置華為云ModelArts、開發(fā)板Atlas 200I DK A2, 并打通一個(gè)訓(xùn)練到推理的全流程思路。 > 在本篇章,我們首先開始訓(xùn)練階段!

前言

學(xué)會如何安裝配置華為云ModelArts、開發(fā)板Atlas 200I DK A2,
并打通一個(gè)訓(xùn)練到推理的全流程思路。

在本篇章,我們首先開始訓(xùn)練階段!

訓(xùn)練階段

A. 環(huán)境搭建

MindSpore 華為云 模型訓(xùn)練

Step1 創(chuàng)建OBS并行文件

  1. 登錄華為云 -> 控制臺 -> 左側(cè)導(dǎo)航欄選擇“對象存儲服務(wù) OBS” ->
    在左側(cè)導(dǎo)航欄選擇“桶列表” -> 單擊右上角“創(chuàng)建桶”
    如下圖所示:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練
  2. 在左側(cè)列表中的“并行文件系統(tǒng)” -> 單擊右上角“創(chuàng)建并行文件系統(tǒng)”。
    如下圖所示:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練
    進(jìn)行以下配置:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

主要參數(shù)信息如下,其余配置請保持默認(rèn)配置
區(qū)域 :選擇“ 華北-北京四
文件系統(tǒng)名稱:自定義,本例使用modelarts0009
(請使用modelarts作為文件系統(tǒng)前綴,注意名稱為全局唯一)
數(shù)據(jù)冗余存儲策略 :選擇“ 單AZ存儲
策略 :選擇“ 私有

Step2 上傳數(shù)據(jù)文件至OBS并行文件系統(tǒng)

  1. 點(diǎn)擊已創(chuàng)建的并行文件系統(tǒng) -> 點(diǎn)擊“新建文件夾”
    輸入文件夾的名稱,這里命名為input
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練
  2. 進(jìn)入該文件夾中 -> 點(diǎn)擊“上傳文件”:
    將準(zhǔn)備好的項(xiàng)目工程文件壓縮包上傳至該OBS中。

Step3 基于ModelArts創(chuàng)建Notebook編程環(huán)境

  1. 在“全局配置”頁面查看是否已經(jīng)配置授權(quán),允許ModelArts訪問OBS:
    登錄華為云 -> 控制臺 -> 左側(cè)導(dǎo)航欄選擇“ModelArts” -> 在左側(cè)導(dǎo)航欄選擇“全局配置” -> 單擊“添加授權(quán)”
    首次使用ModelArts:直接選擇“新增委托”中的“普通用戶”權(quán)限
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

  2. 登錄華為云 -> 控制臺 -> 左側(cè)導(dǎo)航欄選擇“ModelArts” -> 在左側(cè)導(dǎo)航欄選擇“開發(fā)環(huán)境”-> “Notebook” -> 點(diǎn)擊“創(chuàng)建”
    進(jìn)行以下配置:

主要參數(shù)信息如下,其余配置請保持默認(rèn)配置
名稱:自定義,本例使用notebook-test
自動停止:自行選擇,本例選擇4小時(shí)
鏡像 :選擇“公共鏡像”,并選擇“ mindspore_1.10.0-cann_6.0.1-py_3.7-euler_2.8.3
資源類型:選擇“公共資源池”
磁盤規(guī)格 :使用 50 GB

Step4 為Notebook編程環(huán)境添加訓(xùn)練階段項(xiàng)目工程文件

  1. 點(diǎn)擊已創(chuàng)建的Notebook -> “存儲配置” -> “添加數(shù)據(jù)存儲”
    進(jìn)行以下配置:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

本地掛載目錄 :自定義創(chuàng)建本地掛載目錄,本例使用 /data/input
存儲位置 :選擇所創(chuàng)建的并行文件系統(tǒng)(本例選擇已創(chuàng)建的 moderarts0009 ),以及數(shù)據(jù)集所在的目錄 input

  1. 返回Notebook界面 -> 點(diǎn)擊“打開”notebook-test ->
    打開“ Terminal ”命令行終端界面 ->
    執(zhí)行以下命令,創(chuàng)建用于測試的test文件
    touch /data/input/test
    再執(zhí)行以下命令,可以看到你剛創(chuàng)建的test文件&先前上傳的文件
    ls /data/input

  2. 上傳
    這里選擇 OBS文件上傳 ,
    因?yàn)檫@里 本地上傳 限制為100M文件。
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

  3. 解壓
    打開“ Terminal ”命令行終端界面 ->
    執(zhí)行以下命令,查看是否在正確的路徑下
    pwd
    ls -l
    執(zhí)行以下命令,解壓項(xiàng)目工程文件壓縮包
    (這里以工業(yè)質(zhì)檢Unet為例,具體代碼可參考文末 學(xué)習(xí)資源推薦
    unzip unet.zip
    unzip unet_sdk.zip

  • 訓(xùn)練階段 工程 目錄結(jié)構(gòu) 如下:
    ├──unet
    	├──data                            // 預(yù)處理后的數(shù)據(jù)集文件夾
    	├──raw_data                        // 原始數(shù)據(jù)集
        ├──out_model                       // 模型導(dǎo)出保存文件夾
        ├──pred_visualization              // 可視化圖片保存文件夾(需要自己創(chuàng)建)
        ├──src                             // 功能函數(shù)
        │   ├──unet_medical                   // U-Net網(wǎng)絡(luò)
        │   ├──unet_nested                    // U-Net++網(wǎng)絡(luò)
        │   ├──config.py                      // 配置文件
        │   ├──data_loader.py                 // 數(shù)據(jù)加載
        │   ├──eval_callback.py               // 訓(xùn)練時(shí)評估回調(diào)
        │   ├──loss.py                        // 損失函數(shù)
        │   ├──utils.py                       // 工具類函數(shù)
        ├──draw_result_folder.py           // 文件夾圖片可視化
        ├──draw_result_single.py           // 單張圖片可視化
        ├──eval.py                         // 模型驗(yàn)證
        ├──export.py                       // 模型導(dǎo)出,ckpt轉(zhuǎn)air/mindir/onnx
        ├──postprocess.py                  // 后處理
        ├──preprocess.py                   // 前處理
        ├──preprocess_dataset.py           // 數(shù)據(jù)集預(yù)處理
        ├──train.py                        // 模型訓(xùn)練
        ├──requirements.txt
    
  • 模型轉(zhuǎn)換 工程 目錄結(jié)構(gòu) 如下:
    ├── unet_sdk
        ├── model
        │   ├──air2om.sh                     // air模型轉(zhuǎn)om腳本
        │   ├──xxx.air                       //訓(xùn)練階段導(dǎo)出的air模型
        │   ├──aipp_unet_simple_opencv.cfg   // aipp文件
    

注:
接下來就可以開始旅程,進(jìn)入訓(xùn)練階段。

若中途暫停實(shí)驗(yàn),記得做停止資源操作,消耗最少費(fèi)用;
若返回繼續(xù)實(shí)驗(yàn),再次啟動Notebook編程環(huán)境;
若完成了本實(shí)驗(yàn),最后是釋放資源操作,為了停止計(jì)費(fèi)。

一. 配置文件參數(shù)和數(shù)據(jù)預(yù)處理

MindSpore 數(shù)據(jù)集預(yù)處理preprocess_dataset.py文件需調(diào)用如下腳本:

文件參數(shù)腳本src/config.py文件。

文件參數(shù)腳本為src/config.py,包括
unet_medical,
unet_nested,
unet_nested_cell,
unet_simple,
unet_simple_coco
共5種配置,表示模型與數(shù)據(jù)集之間的組合。
包含超參數(shù)、數(shù)據(jù)集路徑等文件參數(shù)

Step 運(yùn)行腳本

  1. 新建NoteBook中:查看是否在工程目錄unet/路徑下
    !pwd

  2. 進(jìn)入NoteBook中:運(yùn)行示例
    !python3 preprocess_dataset.py --data_url=./data/
    其中--data_url:數(shù)據(jù)集預(yù)處理后的保存路徑。

  • 預(yù)計(jì)數(shù)據(jù)集預(yù)處理所需時(shí)間約為10分鐘。
    預(yù)處理完的數(shù)據(jù)集會保存在/unet/data/文件夾下。
    輸出結(jié)果:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

二. 模型訓(xùn)練

MindSpore模型訓(xùn)練 需調(diào)用如下腳本:

preprocess_dataset.py:將類coco數(shù)據(jù)集 轉(zhuǎn)化成 模型訓(xùn)練需要數(shù)據(jù)格式。
src/unet_xxx/:存放 unet/unet++ 模型結(jié)構(gòu)。
src/data_loader.py:存放 數(shù)據(jù)加載功能函數(shù)。
src/eval_callback:存放 cb 函數(shù),用于訓(xùn)練過程中進(jìn)行eval.
src/utils.py: mindspore 自定義 cb 函數(shù),自定義 metrics 函數(shù)。
train.py

Step 運(yùn)行腳本

  1. 進(jìn)入NoteBook中:運(yùn)行示例
    !python train.py --data_url=./data/ --run_eval=True
    其中--data_url: 數(shù)據(jù)集輸入路徑。
    其中--run_eval: True 表示訓(xùn)練過程中同時(shí)進(jìn)行驗(yàn)證。
  • 預(yù)計(jì)模型訓(xùn)練所需時(shí)間約為36分鐘。
    輸出結(jié)果:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

三. 模型推理

MindSpore模型推理 需調(diào)用如下腳本:

src/unet_xxx/:存放unet/unet++模型結(jié)構(gòu)。
src/data_loader.py:存放數(shù)據(jù)預(yù)處理,數(shù)據(jù)加載功能函數(shù)。
src/utils.py:mindspore自定義cb函數(shù),自定義metrics函數(shù)。
eval.py

Step 運(yùn)行腳本

  1. 進(jìn)入NoteBook中:運(yùn)行示例
    !python eval.py --data_url=./data/ --ckpt_path=./ckpt_0/best.ckpt
    其中--data_url:數(shù)據(jù)集輸入路徑。
    其中--ckpt_path:ckpt 讀取路徑
  • 預(yù)計(jì)模型推理所需時(shí)間約為2分鐘。
    輸出結(jié)果:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練
    注:
    IOU(Intersection over Union)是一個(gè)度量函數(shù),
    用來描述兩個(gè)物體邊界框的重疊程度(取值范圍為[0,1]),
    重疊的區(qū)域越大,IOU值就越大。

四. 結(jié)果可視化

可以通過畫圖的方式將圖像的結(jié)果可視化,方便查看。
可視化方法有兩種。

方法一 單張圖片可視化

draw_result_single.py: 單張圖片可視化
輸出單張圖片的裁剪畫圖結(jié)果crop_plot.png和模型預(yù)測的結(jié)果predict_plot.png。

Step 運(yùn)行腳本

  1. 查看工程目錄unet/路徑下
    確保已經(jīng)事先創(chuàng)建好
    可視化圖片保存文件 pred_visualization文件夾

  2. 進(jìn)入NoteBook中:運(yùn)行示例
    !python draw_result_single.py --data_url=./data/SW1hZ2VfMjAyMTA3MjcxNTEzMzYzNzk --save_url=./pred_visualization --ckpt_path=./ckpt_0/best.ckpt
    其中--data_url:數(shù)據(jù)集輸入路徑(到單張圖像)。
    其中--save_url:輸出圖像保存路徑。
    其中--ckpt_path:ckpt讀取路徑。

  • 單張圖片可視化所需時(shí)間約為1分鐘。
    可視化完的圖片會保存在/unet/pred_visualization文件夾下。
    輸出結(jié)果:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

方法二 文件夾圖片可視化

draw_result_folder.py: 文件夾圖片可視化 ,
輸出文件夾內(nèi)圖片的模型預(yù)測結(jié)果predict.png。

Step 運(yùn)行腳本

  1. 查看工程目錄unet/路徑下
    確保已經(jīng)事先創(chuàng)建好
    可視化圖片保存文件 pred_visualization文件夾

  2. 進(jìn)入NoteBook中:運(yùn)行示例
    !python draw_result_folder.py --data_url=./data/ --save_url=./pred_visualization --ckpt_path=./ckpt_0/best.ckpt
    其中--data_url:數(shù)據(jù)集輸入路徑(到圖像文件夾)。
    其中--save_url:輸出圖像保存路徑。
    其中--ckpt_path:ckpt讀取路徑。

  • 文件夾圖片可視化所需時(shí)間約為10分鐘。
    可視化完的圖片會保存在/unet/pred_visualization文件夾下。
    輸出結(jié)果:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

五. 模型保存

如果想在昇騰AI處理器上執(zhí)行推理,
可以通過網(wǎng)絡(luò)定義和CheckPoint生成AIR格式模型文件。

Step 運(yùn)行腳本

  1. 進(jìn)入NoteBook中:運(yùn)行示例
    !python export.py --ckpt_file="./ckpt_0/best.ckpt" --width=960 --height=960 --file_name="out_model/unet_hw960_bs1" --file_format="AIR"
    其中–-ckpt_file: ckpt路徑。
    其中--width: 模型輸入尺寸。
    其中--height: 模型輸入尺寸。
    其中--file_name: 輸出文件名。
    其中--file_format: 輸出格式,必須為[“ONNX”, “AIR”, “MINDIR”]。
  • 模型保存即導(dǎo)出模型的輸出結(jié)果在out_model/unet_hw960_bs1.air
    最后將導(dǎo)出的模型下載至本地,供后續(xù)推理階段實(shí)驗(yàn)使用:
    右鍵 -> Download
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

六. 模型轉(zhuǎn)換

此處模型轉(zhuǎn)換需要用到ATC工具。
詳細(xì)內(nèi)容&錯(cuò)誤碼請參考 昇騰官網(wǎng)文檔-使用ATC工具轉(zhuǎn)換模型

Step1 上傳air模型

  • 將訓(xùn)練階段實(shí)驗(yàn)?zāi)P捅4娴? air模型 上傳至華為云ModelArts的unet_sdk/model/目錄下

這里因?yàn)槟P椭杏衞ptype[ArgMaxD],因此需要在Ascend910系列芯片上執(zhí)行模型轉(zhuǎn)換才能成功。
(此次華為云ModelArts使用的正是Ascend910A)
而一般情況,模型訓(xùn)練完進(jìn)行的模型轉(zhuǎn)換是可以選擇在開發(fā)者套件(Ascend310系列芯片)和Ubuntu系統(tǒng)中執(zhí)行的。
(具體方法請參考 昇騰官網(wǎng)文檔-轉(zhuǎn)換模型 )

Step2 模型轉(zhuǎn)換命令

  • 打開unet_sdk/model/air2om.sh文件
    使用atc命令如下,可根據(jù)實(shí)際開發(fā)情況進(jìn)行修改。
atc --framework=1 --model=unet_hw960_bs1.air --output=unet_hw960_bs1 --input_format=NCHW --soc_version=Ascend910A --log=error --insert_op_conf=aipp_unet_simple_opencv.cfg

本實(shí)驗(yàn)將 訓(xùn)練階段 實(shí)驗(yàn) 模型保存 air模型 轉(zhuǎn)為昇騰Al處理器支持的 om格式離線模型
注意:air 模型轉(zhuǎn) om 只支持靜態(tài) batch,這里 batchsize=1。
其中--framework:原始框架類型。
其中--model:原始模型文件路徑與文件名。
其中--output:轉(zhuǎn)換后的離線模型的路徑以及文件名。
其中--input_format:輸入數(shù)據(jù)格式。
其中--soc_version:模型轉(zhuǎn)換時(shí)指定芯片版本。
這句話指的是當(dāng)前執(zhí)行模型轉(zhuǎn)換時(shí)候所在機(jī)器的芯片版本 ,可通過命令行終端輸入 npu-smi info 查看)

其中--log:顯示日志的級別。
其中--insert_op_conf:插入算子的配置文件路徑與文件名,這里使用AIPP預(yù)處理配置文件,用于圖像數(shù)據(jù)預(yù)處理。

Step3 運(yùn)行腳本

  1. 確保在工程目錄unet_sdk/model/路徑下,首先查看文件權(quán)限
    ls -l
    (如果文件權(quán)限列中沒有x,你才需要繼續(xù)下一命令賦予它執(zhí)行權(quán)限)
    輸入
    chmod +x air2om.sh

  2. 運(yùn)行示例
    輸入
    ./air2om.sh

  • 輸出結(jié)果:
    昇騰開發(fā)全流程  之  MindSpore華為云模型訓(xùn)練

注:
到此我們在華為云上使用MindSpore的訓(xùn)練階段實(shí)驗(yàn)就結(jié)束了。
有了導(dǎo)出的air模型及其模型轉(zhuǎn)換出的om模型,我們就可以繼續(xù)進(jìn)入下一篇章: AscendCL推理階段

結(jié)束后記得 及時(shí)關(guān)閉云上環(huán)境 ,避免資源浪費(fèi)和產(chǎn)生額外的費(fèi)用。!

學(xué)習(xí)資源推薦

  • 昇思官網(wǎng)教程1.9:模型訓(xùn)練
  • GitHub:mindspore-ai / models
小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2024 haote.com 好特網(wǎng)