簡(jiǎn)介
是華為昇騰開(kāi)發(fā)的深度學(xué)習(xí)框架,旨在提供端邊云全場(chǎng)景的AI框架。
是由推出的AI框架。
本教程使用中的功能自動(dòng)將腳本轉(zhuǎn)換為腳本的案例。使用的模型是分類任務(wù)模型,數(shù)據(jù)集是cifar-100。
本教程對(duì)應(yīng)的視頻講解鏈接:
環(huán)境準(zhǔn)備
端:
官網(wǎng):
需要配置在環(huán)境變量中,需要安裝三個(gè)軟件包()
pip3 #版本需大于或等于1.2.4
pip3 # 版本號(hào)需要大于或等于0.4.3
pip3 jedi #跨文件分析庫(kù),安裝后有助于工具解析不同文件中的變量,推薦安裝
源代碼下載
訓(xùn)練服務(wù)器:
硬件平臺(tái): 910 arm64架構(gòu)
操作系統(tǒng): 18.04.6 LTS
軟件環(huán)境:
.7.5
1.8.0 框架安裝請(qǐng)參考
#
CANN 5.1.RC2
請(qǐng)參考昇騰軟件快速部署指南:
簡(jiǎn)介
工具可將基于和開(kāi)發(fā)的模型及其訓(xùn)練腳本根據(jù)適配規(guī)則遷移為可基于運(yùn)行的代碼,大幅度提高了腳本遷移速度,降低了開(kāi)發(fā)者的工作量。
項(xiàng)目創(chuàng)建
安裝好后新建一個(gè)項(xiàng)目,左側(cè)選擇 ,然后點(diǎn)擊選擇遠(yuǎn)程服務(wù)器的CANN ,參照下圖。
需要填寫(xiě)服務(wù)器的IP,端口,用戶名,密碼。
配置好之后,選擇正確的 CANN ,按照自己安裝的CANN路徑選擇,最后需要選擇到5.1.RC2(這個(gè)名字和安裝的CANN版本相同)
點(diǎn)擊后,需要等待一段時(shí)間完成CANN同步。
設(shè)置項(xiàng)目路徑軟件老是腳本錯(cuò)誤,點(diǎn)擊即可完成項(xiàng)目創(chuàng)建。
菜單欄依次選擇-> Tools->
:原始腳本框架類型,選擇
Input Path:原始項(xiàng)目輸入路徑就是我們要轉(zhuǎn)換的源代碼文件
Path:輸出路徑是轉(zhuǎn)換完成后的路徑,可以新建一個(gè)文件夾
點(diǎn)擊,這個(gè)是選擇轉(zhuǎn)為分布式訓(xùn)練腳本,選擇。
參照截圖都選擇完成后,點(diǎn)擊。
等待一段時(shí)間,出現(xiàn)這個(gè)界面就代表轉(zhuǎn)換成功了。
如果有找不到包這種報(bào)錯(cuò)一般是環(huán)境的問(wèn)題,教程末尾FAQ有相關(guān)解決方案。
轉(zhuǎn)換完成后在 Path下面會(huì)生成一個(gè)文件夾,現(xiàn)在看一下項(xiàng)目下有哪些文件,工具會(huì)在輸出路徑下額外生成一些文件
這里介紹幾個(gè)重要的,更多細(xì)節(jié)請(qǐng)參考官方文檔
nd.sh 啟動(dòng)分布式訓(xùn)練的shell腳本
.json 2卡組網(wǎng)配置文件
.json 8卡組網(wǎng)配置文件
這兩個(gè)配置文件格式一樣,根據(jù)自己訓(xùn)練服務(wù)器卡的數(shù)量選擇。
.log轉(zhuǎn)換日志文件(可以查看轉(zhuǎn)換過(guò)程是否有報(bào)錯(cuò))
.csv結(jié)尾的文件是關(guān)于API的支持與否信息,可用于深入分析轉(zhuǎn)換情況。
項(xiàng)目打開(kāi)與配置
-,這個(gè)就是我們轉(zhuǎn)換成功后的項(xiàng)目文件,現(xiàn)在需要在中打開(kāi)這個(gè)項(xiàng)目
左上角依次點(diǎn)擊File、Open
選擇轉(zhuǎn)換完成的文件夾,然后點(diǎn)擊OK
直接打開(kāi)一個(gè)文件夾默認(rèn)是一個(gè)非昇騰項(xiàng)目,需要把它轉(zhuǎn)換為 項(xiàng)目。
菜單欄依次點(diǎn)擊、 To
然后選擇項(xiàng)目類型 ,選擇框架,點(diǎn)擊OK
設(shè)置部署路徑,方便我們將端的代碼同步到服務(wù)器端,服務(wù)器端輸出的日志也可以同步回來(lái)。
path根據(jù)自己服務(wù)器情況選擇一個(gè)路徑。
右鍵選擇, to上傳到服務(wù)器,是下載到本地。
這個(gè)功能可以選中部分文件或者文件夾,根據(jù)自己需要使用。
數(shù)據(jù)集配置 數(shù)據(jù)集下載
~kriz/cifar.html
下載CIFAR-100 ( for C )
可以點(diǎn)擊鏈接下載,也可以直接Linux下用命令下載。我這里用提供的SSH 來(lái)操作。
菜單欄點(diǎn)擊Tools,Start SSH
然后點(diǎn)擊設(shè)置好的
切換到合適的數(shù)據(jù)下載目錄中,然后按照下圖所示命令下載數(shù)據(jù)集。
curl ~kriz/cifar-100-.tar.gz -- ./cifar-100-.tar.gz
使用命令解壓該壓縮包
tar -zxvf cifar-100-.tar.gz
然后就得到了訓(xùn)練需要的數(shù)據(jù)集
我把數(shù)據(jù)放置在了/home/sddx//data 大家按照自己的情況放置即可。
數(shù)據(jù)集路徑修改
在utils.py文件做三處修改
腳本訓(xùn)練 步驟簡(jiǎn)介
(1)配置.json
(2)修改nd.sh
(3)啟動(dòng)腳本
配置.json
.json 需要我們寫(xiě)入組網(wǎng)信息
服務(wù)器的IP地址軟件老是腳本錯(cuò)誤,可以使用命令獲取
表示集成網(wǎng)卡的IP地址,可以在當(dāng)前機(jī)器執(zhí)行指令cat /etc/hccn.conf,的鍵值就是網(wǎng)卡IP地址。
nd.sh介紹
(1)指定了shell腳本解釋器的路徑
(3-8)輸出一些提示信息到終端
(10)定義變量,值是pwd命令獲得的當(dāng)前目錄
(13)$1是命令第一個(gè)參數(shù),多卡環(huán)境的組網(wǎng)信息文件
(14)$2是命令第二個(gè)參數(shù),卡的數(shù)量
(15)$3是命令第三個(gè)參數(shù),卡邏輯起始編號(hào)
(16)$4是命令第四個(gè)參數(shù),卡物理起始編號(hào)
(17)循環(huán)次,開(kāi)啟個(gè)進(jìn)程,也就是一個(gè)卡對(duì)應(yīng)一個(gè)進(jìn)程
(19-20)導(dǎo)出環(huán)境變量,
(21)刪除執(zhí)行路徑下面的目錄(之前運(yùn)行過(guò)會(huì)創(chuàng)建,所以先清空)
(22)新建執(zhí)行路徑下面的目錄
(23)切換當(dāng)前目錄到目錄
(24)啟動(dòng)訓(xùn)練腳本,-net參數(shù)指定使用的網(wǎng)絡(luò),后面的 > .log 2>&1 是將標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到.log 中,末尾的&設(shè)置該進(jìn)程為后臺(tái)進(jìn)程。
修改nd.sh
這個(gè)啟動(dòng)腳本需要我們修改的就是第24行,我們需要把單卡訓(xùn)練啟動(dòng)腳本的命令寫(xiě)在這里,特別需要注意的是:涉及到文件的路徑需要使用 ‘/’開(kāi)頭的絕對(duì)路徑,不然會(huì)因?yàn)閳?zhí)行目錄在中而找不到該文件。
/home/sddx/-/-/train.py -net
啟動(dòng)分布式訓(xùn)練腳本
兩種方式都可以啟動(dòng),推薦第一種
方式一:內(nèi)啟動(dòng)
左上角點(diǎn)擊選擇Edit
點(diǎn)擊加號(hào),選擇
已經(jīng)配置好,直接選中即可
選擇自己項(xiàng)目路徑下面的nd.sh
命令參數(shù),共有四個(gè),第一個(gè)是.json(寫(xiě)服務(wù)器端絕對(duì)路徑),8是卡數(shù)量,后兩個(gè)一般寫(xiě)0。之前的“nd.sh介紹”小節(jié)有詳細(xì)介紹,可以返回觀看。
全部選擇好之后點(diǎn)擊OK
點(diǎn)擊綠色三角即可啟動(dòng)
方式二:命令啟動(dòng)
配置好nd.sh 以及.json這兩個(gè)文件后,就可以啟動(dòng)分布式訓(xùn)練腳本了
bash nd.sh
多卡環(huán)境的組網(wǎng)信息文件,.json
卡的數(shù)量
卡邏輯起始編號(hào),當(dāng)前僅支持單機(jī)多卡,填0即可
卡物理起始編號(hào)
實(shí)例命令:(根據(jù)實(shí)際路徑修改)
bash nd.sh /home/sddx//-/.json 8 0 0
注意:使用絕對(duì)路徑
bash nd.sh .json 8 0 0 (這樣寫(xiě)是不行的)
訓(xùn)練腳本運(yùn)行情況查看
npu-smi info 查看卡信息,HBM-Usage(MB)被使用了一部分就說(shuō)明程序正常運(yùn)行起來(lái)了。
同時(shí)項(xiàng)目路徑下會(huì)自動(dòng)生成/.log,訓(xùn)練輸出的日志信息在這里可以看到。
我這里只讓它訓(xùn)練了一個(gè)epoch,可以看到訓(xùn)練正常。
FAQ 安裝依賴找不到gmp這個(gè)包
可能是源的問(wèn)題,更新源,換源
cp /etc/apt/.list /etc/apt/.list.copy #備份源
sudo vim /etc/apt/.list
換源
# See for how to to
# newer of the .
deb main
# deb-src main
## Major bug fix after the final of the
## .
deb - main
# deb-src - main
## N.B. from this is by the
## team. Also, note that in WILL NOT any
## or from the team.
deb
# deb-src
deb -
# deb-src -
## N.B. from this is by the
## team, and may not be under a free . as to
## your to use the . Also, note that in
## WILL NOT any or from the
## team.
deb
# deb-src
deb -
# deb-src -
## N.B. from this may not have been as
## as that in the main , it
## newer of some which may .
## Also, note that in WILL NOT any
## or from the team.
deb - main
# deb-src - main
## the two lines to add from 's
## '' .
## This is not part of , but is by and the
## as a to users.
# deb
# deb-src
deb - main
# deb-src - main
deb -
# deb-src -
deb -
# deb-src -
deb main
# deb-src main
同步軟件源的軟件包版本
sudo apt-get
安裝問(wèn)題
1.9.0 and AI ( Data ) 1.81 does not match, the of one of ['1.83']
版本不匹配,重新安裝1.8版本的,請(qǐng)參考官方文檔選擇對(duì)應(yīng)CANN的版本安裝。
: /home//.local/lib/.7/site-//lib/.so: : ck
版本與cann版本對(duì)應(yīng)關(guān)系必須對(duì)應(yīng)!!!
往下翻有對(duì)應(yīng)關(guān)系
: /ccsrc////hal//:52 ] Error: Get HBM size , ret = 0, total HBM size :0
推理服務(wù)器不支持訓(xùn)練,需要使用訓(xùn)練類型服務(wù)器。
: Not to get for : ''
The first be a , but got (Type: , Value: : '', Shape: )
需要正確配置 對(duì)應(yīng)的服務(wù)器的cann版本
: The ./data does not exist or is not a or !
數(shù)據(jù)需要使用絕對(duì)路徑
訓(xùn)練后查看/.log 顯示 can't open file 'train.py'
: can't open file 'train.py': [Errno 2] No such file or
運(yùn)行命令需要使用絕對(duì)路徑
: init
() /ccsrc//jit/:1538
初始化hccl失敗了,通常由于rank json沒(méi)寫(xiě)對(duì)
我這里是因?yàn)?json沒(méi)有使用絕對(duì)路徑,修改為
/home/sddx//-/.json
功能找不到
工具欄沒(méi)有相應(yīng)圖標(biāo)且右鍵單擊工程目錄中的文件夾,找不到“”
原因分析:該項(xiàng)目不是項(xiàng)目,需要進(jìn)行轉(zhuǎn)換。
解決步驟:
單擊> To 根據(jù)自己的需要選擇好和后點(diǎn)擊“OK”
解決成功界面:
點(diǎn)擊轉(zhuǎn)換提示“ : No named '' ”
原因分析:包未安裝好。運(yùn)行的時(shí)候使用的是默認(rèn)路徑下的.exe,而不是虛擬環(huán)境中的.exe。如果想讓它使用虛擬環(huán)境中的.exe,需要設(shè)置環(huán)境變量。注意安裝包的時(shí)候需要在運(yùn)行時(shí)使用的的環(huán)境下安裝,否則就會(huì)出現(xiàn)以上的錯(cuò)誤。
解決步驟:pip3 #注意版本號(hào)需要大于或等于0.4.3
建議
大家可以登錄昇騰論壇分享 使用經(jīng)驗(yàn)
遇到解決不了的問(wèn)題可以在這里提問(wèn),能得到華為專家的技術(shù)指導(dǎo)。