我與昇騰那些事(二)

再回首

仔細(xì)想想芥映,我使用過的昇騰AI處理器包括Ascend 310觉壶、Ascend 310P脑题、Ascend 910,涵蓋了訓(xùn)練和推理铜靶,也算是比較全面了。就我個(gè)人來說他炊,希望更接近于實(shí)際應(yīng)用場(chǎng)景争剿,靠近用戶,因而傾向于做應(yīng)用開發(fā)痊末,即將AI算法做成產(chǎn)品化應(yīng)用蚕苇。

個(gè)人分享

產(chǎn)品化應(yīng)用涉及所用硬件性能、模型在實(shí)際業(yè)務(wù)中的準(zhǔn)確度以及適配平臺(tái)或服務(wù)開發(fā)等等凿叠,我個(gè)人認(rèn)為是要根據(jù)實(shí)際情況不斷做調(diào)整的涩笤,比較依賴于對(duì)硬件特性的理解和經(jīng)驗(yàn)嚼吞。這里,我站在個(gè)人開發(fā)者或者說學(xué)生開發(fā)者的角度蹬碧,分享下我的感受舱禽。

首先,要對(duì)待部署的模型有一定了解恩沽,知道輸入節(jié)點(diǎn)誊稚、輸入數(shù)據(jù)和排布方式,輸出節(jié)點(diǎn)罗心、輸出數(shù)據(jù)和排布方式里伯,在此基礎(chǔ)上確定輸入和輸出的數(shù)據(jù)格式,進(jìn)而明確預(yù)處理和后處理渤闷。簡(jiǎn)單來說疾瓮,圍繞模型,向前要知道輸入和預(yù)處理飒箭,向后要知道后處理和輸出狼电。這個(gè)是核心,而至于具體操作以及所用硬件則是盡可能壓榨硬件性能完成模型部署推理补憾。

其次漫萄,了解硬件架構(gòu)和特性。從經(jīng)濟(jì)性的角度來說盈匾,一般選擇低成本而可行的硬件腾务,而最大可能逼近硬件極限,即盡可能用更加親和所用硬件的操作削饵。以Ascend 310為例岩瘦,考慮到具體操作計(jì)算量和無法直接調(diào)度AI Core,可以調(diào)整AI CPU和Ctrl CPU的配比來實(shí)現(xiàn)資源的分配窿撬,再者使用DVPP和AIPP來完成輸入視頻或圖像的解碼操作启昧,專用硬件電路效率會(huì)更高。而這些都是要根據(jù)所用硬件來調(diào)整劈伴。

最后密末,從借鑒開始。初次接觸跛璧,缺乏經(jīng)驗(yàn)严里,這時(shí)候要多看官方倉庫提供的樣例代碼,先按照README跑通追城,之后學(xué)習(xí)代碼刹碾,有不懂的部分,可以自行打印出來查看座柱,或者到昇騰論壇和倉庫提問迷帜,也可以按照自己的需求物舒,試著做些修改,并進(jìn)行驗(yàn)證戏锹,這樣一點(diǎn)一點(diǎn)嘗試冠胯,慢慢搞懂,吃透代碼景用,之后就可以基于此涵叮,進(jìn)行自己想要的開發(fā)了。

實(shí)際操作

下面就簡(jiǎn)單介紹下如何跑通一個(gè)簡(jiǎn)單的圖片分類的官方樣例伞插。圖片分類從名稱上割粮,我們能直觀地看出它的作用:按圖片所屬的類別來區(qū)分圖片。

那么圖片分類是怎么做到這一點(diǎn)的呢媚污?首先要有一個(gè)能做到圖片分類的模型舀瓢,我們可以直接使用一些訓(xùn)練好的開源模型,也可以基于開源模型的源碼根據(jù)我們的需求進(jìn)行修改耗美,并重新訓(xùn)練京髓,甚至可以去構(gòu)建適合自己的模型。鑒于我們是跑通就行商架,此處我們直接使用官方已訓(xùn)練好的開源模型堰怨,畢竟這樣最簡(jiǎn)單,也最快蛇摸。我們以基于Caffe框架的開源模型ResNet-50模型為例說明其輸入备图、輸出,以便理解后續(xù)的開發(fā)場(chǎng)景赶袄,先來介紹下輸入和輸入:

  • 模型對(duì)輸入要求:輸入圖片的編碼格式為RGB揽涮、分辨率為224*224。

  • 模型的輸出:Top5置信度的類別標(biāo)簽及其對(duì)應(yīng)置信度饿肺。

這個(gè)樣例是基于Caffe ResNet-50網(wǎng)絡(luò)(單輸入蒋困、單Batch)實(shí)現(xiàn)圖片分類的功能。在該樣例中:

  1. 先使用樣例提供的腳本transferPic.py敬辣,將2張*.jpg圖片都轉(zhuǎn)換為*.bin格式雪标,同時(shí)將圖片從1024683的分辨率縮放為224224。

  2. 加載離線模型om文件溉跃,對(duì)2張圖片進(jìn)行同步推理汰聋,分別得到推理結(jié)果,再對(duì)推理結(jié)果進(jìn)行處理喊积,輸出top5置信度的類別標(biāo)識(shí)。在加載離線模型前玄妈,提前將Caffe ResNet-50網(wǎng)絡(luò)的模型文件轉(zhuǎn)換為適配昇騰AI處理器的離線模型乾吻。

好了髓梅,我們來運(yùn)行看看,先來準(zhǔn)備下環(huán)境绎签,這里我使用的是華為云提供的ECS枯饿,規(guī)格為AI加速型 | ai1s.large.4 | 2vCPUs | 8GiB | 1 * HUAWEI Ascend 310/1 * 8G,需要特別注意的是诡必,我們使用的是【 CANN 訓(xùn)練營 ? 22 年度第三季】 提供的鏡像6.0.RC1.alpha001_new(40GB)奢方,而關(guān)于ECS的購買和連接,大家可以到新手班學(xué)習(xí)哈爸舒,有很詳細(xì)的視頻介紹蟋字。

接下來,我們登錄購買的ECS扭勉,這里我在本地Windows下使用MobaXterm連接鹊奖,因?yàn)槟J(rèn)是root用戶登錄,而CANN運(yùn)行用戶是HwHiAiUser涂炎,這里我們先設(shè)置下密碼忠聚,之后用HwHiAiUser登錄。

先來設(shè)置密碼:

passwd HwHiAiUser
復(fù)制

在切換用戶之前唱捣,我們先改下bash两蟀,執(zhí)行如下命令,并在彈出的界面中選擇 :

sudo dpkg-reconfigure dash
復(fù)制

再執(zhí)行如下命令:

ls -l `which sh`
復(fù)制

若提示/bin/sh -> bash震缭,表示修改成功赂毯。下面切換到HwHiAiUser用戶:

su - HwHiAiUser
復(fù)制

此時(shí)我們?cè)诮K端看到的應(yīng)該是“HwHiAiUser”開頭了:

接下來下載sample 倉 代碼并上傳至環(huán)境。之后請(qǐng)先進(jìn)入本次樣例所在目錄:

cd samples/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification
復(fù)制

請(qǐng)注意蛀序,下文中的樣例目錄均指以上目錄欢瞪。

之后獲取模型,可以從以下鏈接中獲取ResNet-50網(wǎng)絡(luò)的模型文件(*.prototxt)徐裸、權(quán)重文件(*.caffemodel)遣鼓,并以運(yùn)行用戶將獲取的文件上傳至開發(fā)環(huán)境的“樣例目錄/caffe_model“目錄下。如果目錄不存在重贺,需要自行創(chuàng)建骑祟。

ResNet-50網(wǎng)絡(luò)的模型文件(*.prototxt):?jiǎn)螕鬖ink 下載該文件。

ResNet-50網(wǎng)絡(luò)的權(quán)重文件(*.caffemodel):?jiǎn)螕鬖ink 下載該文件气笙。

下面將ResNet-50原始模型轉(zhuǎn)換為適配昇騰AI處理器的離線模型(*.om文件)次企。切換到樣例目錄,執(zhí)行如下命令(以昇騰310 AI處理器為例):

atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --output=model/resnet50 --soc_version=Ascend310 --input_format=NCHW --input_fp16_nodes=data --output_type=FP32 --out_nodes=prob:0
復(fù)制

如下圖所示潜圃,則表示轉(zhuǎn)換模型成功缸棵。

接著準(zhǔn)備數(shù)據(jù),請(qǐng)從以下鏈接獲取該樣例的輸入圖片谭期,并以運(yùn)行用戶將獲取的文件上傳至開發(fā)環(huán)境的“樣例目錄/data“目錄下堵第。如果目錄不存在吧凉,需自行創(chuàng)建。

https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg

https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog2_1024_683.jpg

下面切換到“樣例目錄/data“目錄下踏志,執(zhí)行transferPic.py腳本阀捅,將*.jpg轉(zhuǎn)換為*.bin,同時(shí)將圖片從1024683的分辨率縮放為224224针余。在“樣例目錄/data“目錄下生成2個(gè)*.bin文件饲鄙。


python3.6 ../script/transferPic.py # 不是python3,以免報(bào)錯(cuò)
復(fù)制

如果執(zhí)行腳本報(bào)錯(cuò)“ModuleNotFoundError: No module named 'PIL'”圆雁,則表示缺少Pillow庫忍级,請(qǐng)使用pip3 install Pillow --user命令安裝Pillow庫。

好了摸柄,下面只需要按照該樣例的 README 繼續(xù)操作就行了颤练,最終可以得到推理結(jié)果如下圖所示:

執(zhí)行成功后,在屏幕上的關(guān)鍵提示信息示例如上圖所示驱负,提示信息中的index表示類別標(biāo)識(shí)嗦玖、value表示該分類的最大置信度,這些值可能會(huì)根據(jù)版本跃脊、環(huán)境有所不同宇挫,請(qǐng)以實(shí)際情況為準(zhǔn)。

說明:類別標(biāo)簽和類別的對(duì)應(yīng)關(guān)系與訓(xùn)練模型時(shí)使用的數(shù)據(jù)集有關(guān)酪术,本樣例使用的模型是基于imagenet數(shù)據(jù)集進(jìn)行訓(xùn)練的器瘪,您可以在互聯(lián)網(wǎng)上查閱imagenet數(shù)據(jù)集的標(biāo)簽及類別的對(duì)應(yīng)關(guān)系,例如绘雁,可單擊Link查看橡疼。 當(dāng)前屏顯信息中的類別標(biāo)識(shí)與類別的對(duì)應(yīng)關(guān)系如下: "161": ["basset", "basset hound"]、 "267": ["standard poodle"]庐舟。

好了欣除,至此我們就跑通了這個(gè)圖片分類樣例,大家感興趣可以深入了解具體代碼挪略,還可以自己改改代碼历帚,有機(jī)會(huì)的話,我也會(huì)在講講后續(xù)杠娱。

本文使用 文章同步助手 同步

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挽牢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子摊求,更是在濱河造成了極大的恐慌禽拔,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異奏赘,居然都是意外死亡寥闪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門磨淌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凿渊,你說我怎么就攤上這事梁只。” “怎么了埃脏?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵搪锣,是天一觀的道長。 經(jīng)常有香客問我彩掐,道長构舟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任堵幽,我火速辦了婚禮狗超,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朴下。我一直安慰自己努咐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布殴胧。 她就那樣靜靜地躺著渗稍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪团滥。 梳的紋絲不亂的頭發(fā)上竿屹,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音灸姊,去河邊找鬼拱燃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛厨钻,可吹牛的內(nèi)容都是我干的扼雏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼夯膀,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼诗充!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起诱建,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蝴蜓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茎匠,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡格仲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诵冒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凯肋。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汽馋,靈堂內(nèi)的尸體忽然破棺而出侮东,到底是詐尸還是另有隱情,我是刑警寧澤豹芯,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布悄雅,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秆乳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望容诬。 院中可真熱鬧,春花似錦我碟、人聲如沸放案。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吱殉。三九已至,卻和暖如春厘托,著一層夾襖步出監(jiān)牢的瞬間友雳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工铅匹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留押赊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓包斑,卻偏偏與公主長得像流礁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子罗丰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容