<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【技術干貨】教你如何基于華為昇騰CANN架構快速實現模型推理應用

英碼科技 ? 來源:英碼科技 ? 作者:英碼科技 ? 2024-03-08 08:36 ? 次閱讀

昇騰的AI全軟件棧平臺、開源框架、CANN、MindSpore、MindX 等工具,可以讓開發者實現「統一端邊云,全端自動部署」,開啟了機器學習開發的新時代,一直被人們寄予厚望。但正因為資源極其豐富,浩如星辰,想要快速尋找,到摸索清楚其中的原理,并最終結合自己手上的項目實現應用部署,人力成本、時間成本將增加不少,不利于快速推進項目。

現在~好消息來了! 經過英碼科技工程師們的認真梳理,本篇文章,我們以英碼科技EA500I邊緣計算盒子為例,為大家介紹在昇騰CANN架構下,基于PyTorch框架的ResNet50模型,以及基于YOLOV7網絡模型如何快速實現模型推理應用。

CANN架構介紹

異構計算架構CANN(Compute Architecture for Neural Networks)是華為針對AI場景推出的異構計算架構,向上支持多種AI框架,包括MindSpore、PyTorch、TensorFlow等,向下服務AI處理器編程,發揮承上啟下的關鍵作用,是提升昇騰AI處理器計算效率的關鍵平臺。同時針對多樣化應用場景,提供多層次編程接口,支持用戶快速構建基于昇騰平臺的AI應用和業務。

01

樣例1介紹(ResNet50模型)

▍基于PyTorch框架的ResNet50模型,對*.jpg圖片分類,輸出各圖片所屬分類的編號、名稱。

樣例的理流程如下圖所示:

dfe64976-dce3-11ee-b759-92fbcf53809c.jpg 1 ? 樣例下載 ?

命令行方式下載(下載時間較長,需稍作等待)。

# 開發環境,非root用戶命令行中執行以下命令下載源碼倉。

cd ${HOME}

git clone https://gitee.com/ascend/samples.git

?

注:如果需要切換到其它tag版本,以v0.9.0為例,可執行以下命令。

git check outv0.9.0

樣例的代碼目錄說明如下:

dfea4c24-dce3-11ee-b759-92fbcf53809c.png

2 準備環境

(1)安裝CANN軟件

最新版本的CANN軟件安裝指南請戳→安裝指南

注:英碼科技EA500I智能工作站系統環境中已適配該軟件,無需另行下載安裝。

(2)設置環境變量

注:“$HOME/Ascend”請替換“Ascend-cann-toolkit”包的實際安裝路徑。

# 設置CANN依賴的基礎環境變量

. ${HOME}/Ascend/ascend-toolkit/set_env.sh

#如果用戶環境存在多個python3版本,則指定使用python3.7.5版本

exportPATH=/usr/local/python3.7.5/bin:$PATH

#設置python3.7.5庫文件路徑

exportLD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH

# 配置程序編譯依賴的頭文件與庫文件路徑

export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest

export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

(3)安裝OpenCV

執行以下命令安裝opencv ,須確保是3.x版本;

sudo apt-get installlibopencv-dev

3 樣例運行

(1)獲取PyTorch框架的ResNet50模型(*.onnx),并轉換為昇騰AI處理器能識別的模型(*.om)

注:此處以昇騰310 AI處理器為 例,針對其它昇騰AI處理器的模型轉換,需修改atc命令中的-- soc_version參數值。

# 為方便下載,這里直接給出原始模型下載及模型轉換命令,可以直接拷貝執行。

cd $HOME/samples/inference/modelInference/sampleResnetQuickStart/

cpp/model wgethttps://obs-9be7.obs.cn-east- 2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx

atc --model=resnet50.onnx--framework=5 --output=resnet50 --

input_shape="actual_input_1:1,3,224,224" --soc_version=Ascend310

atc命令中各參數的解釋如下,詳細約束說明請參見《ATC模型轉換指南》。

--model :ResNet-50網絡的模型文件的路徑

--framework:原始框架類型。5表示ONNX。

--output:resnet50.om模型文件的路徑。請注意,記錄保存該om模型文件的路徑,后續開發應用時需要使用。

--input_shape:模型輸入數據的shape。

--soc_version:昇騰AI處理器的版本。

說明:如果無法確定當前設備的soc_version,則在安裝驅動包的服務器執行npu-smi info 命令進行查詢,在查詢到的“Name“前增加Ascend信息,例如“Name“對應取值為_xxxyy_ , 實際配置的soc_version值為Ascend_xxxyy_。

(2)獲取測試圖片數據

請從以下鏈接獲取該樣例的測試圖片dog1_ 1024_683.jpg,放在data目錄下。

cd $HOME/samples/inference/modelInference/

sampleResnetQuickStart/cpp/data wget

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

注:若需更換測試圖片,則需自行準備測試圖片,并將測試圖片放到data錄下。

(3)編譯樣例源碼

執行以下命令編譯樣例源碼:

cd $HOME/samples/inference/modelInference/

sampleResnetQuickStart/

cpp/scripts bash sample_build.sh

(4)運行樣例

執行以下腳本運行樣例:

bash sample_run.sh

執行成功后,在屏幕上的關鍵提示信息示例如下,提示信息中的label表示類別標識、conf表示該分類的最大置信度,class表示所屬類別。這些值可能會根據版本、環境有所不同,請以實際情況為準:

[INFO] The sample starts to run

out_dog1_1024_683.jpg

label:162 conf:0.902209 class:beagle

[INFO] Theprogram runs successfully

4 代碼邏輯詳解(C&C++語言)

樣例中的接口調用流程如下圖所示:

dffa7360-dce3-11ee-b759-92fbcf53809c.png

在此樣例基礎上:

若想要更換測試圖片,只需自行準備好新的jpg圖片并存放到樣例的data目錄下,圖片數據預處理時會自 動從該目錄下讀取圖片數據、再縮放至模型所需的大小。

若想要更換模型,則需關注以下修改點:

1.準備模型:需自行準備好原始模型并存放到樣例的model目錄下,再參考《ATC模型轉換指南》轉換模型;

2. 加載模型:在aclmdlLoadFromFile接口處加載轉換后的模型;

3. 準備模型輸入/輸出數據結構:根據新模型的輸入、輸出個數準備;

4. 獲取推理結果&后處理:根據新模型的輸出數據進行后處理。

須知:一般來說,更換其它圖片分類模型(例如resnet50- >resnet101) ,由于同類模型的輸入、輸出類 似,在此樣例基礎上改動較小,但如果更換為其它類型的模型(例如目標檢測模型),由于不同類型模型的輸入、輸出差別較大,在此樣例基礎上數據預處理、模型輸入&輸出準備以及數據后處理等改動很大,建議在Ascend Sample倉先找到目標檢測類的樣例,再基于目標檢測樣例修改。

02

樣例2介紹(YOLOV7模型)

以YOLOV7網絡模型為例,使能Acllite對圖片進行預處理,并通過模型轉換使能靜態AIPP功能,使能AIPP功能后,YUV420SP_U8格式圖片轉化為RGB,然后減均值和歸一化操作,并將該信息固化到轉換后的離線模型中,對YOLOV7網絡執行推理,對圖片進行物體檢測和分類,并給出標定框和類別置信度。

樣例輸入:圖片。

樣例輸出:圖片物體檢測,并且在圖片上給出物體標注框,類別以及置信度。 1 獲取源碼包

可以使用以下兩種方式下載,請選擇其中一種進行源碼準備。

命令行方式下載(下載時間較長,但步驟簡單):

# 開發環境,非root用戶命令行中執行以下命令下載源碼倉。

cd ${HOME}

git clone https://gitee.com/ascend/samples.git

注:如果需要切換到其它tag版本,以v0.5.0為例,可執行以下命令。

git checkoutv0.5.0 壓縮包方式下載(下載時間較短,但步驟稍微復雜)。

注:如果需要下載其它版本代碼,請先請根據前置條件說明進行samples倉分支切換。 # 1. samples倉右上角選擇【克隆/下載】下拉框并選擇【下載ZIP】。

# 2. 將ZIP包上傳到開發環境中的普通用戶家目錄中, 【例如:${HOME}/ascend-samples- master.zip】。

# 3. 開發環境中,執行以下命令,解壓zip包。

cd ${HOME}

unzip ascend-samples-master.zip

2 第三方依賴安裝 設置環境變量,配置程序編譯依賴的頭文件,庫文件路徑?!?HOME/Ascend”請替換“Ascend-cann-toolkit”包的實際安裝路徑。 export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest

export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

export THIRDPART_PATH=${DDK_PATH}/thirdpart

export LD_LIBRARY_PATH=${THIRDPART_PATH}/lib:$LD_LIBRARY_PATH

創建THIRDPART_PATH路徑:

mkdir-p${THIRDPART_PATH}

acllite

注:源碼安裝ffmpeg主要是為了acllite庫的安裝 執行以下命令安裝x264 # 下載x264

cd ${HOME}

git clonehttps://code.videolan.org/videolan/x264.git

cdx264

# 安裝x264

./configure --enable-shared --disable-asm

make

sudomakeinstall

sudo cp /usr/local/lib/libx264.so.164 /lib 執行以下命令安裝ffmpeg:

# 下載ffmpeg

cd ${HOME}

wge thttp://www.ffmpeg.org/releases/ffmpeg-4.1.3.tar.gz --no-check-certificatetar-zxvfffmpeg-4.1.3.tar.gz

cdffmpeg-4.1.3

# 安裝ffmpeg

./configure --enable-shared --enable-pic --enable-static--disable-x86asm--enable-libx264 --enable-gpl--prefix=${THIRDPART_PATH}

make-j8

make install

執行以下命令安裝acllite: cd ${HOME}/samples/inference/acllite/cplusplus

make

make install

安裝opencv

執行以下命令安裝opencv(注:須確保是3.x版本)

sudo apt-get installlibopencv-dev

3 樣例運行

(1)數據準備

請從以下鏈接獲取該樣例的輸入圖片,放在data目錄下。

cd $HOME/samples/inference/modelInference/sampleYOLOV7/data

wgethttps://obs-9be7.obs.cn-east-

2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg (2)ATC模型轉換 將YOLOV7原始模型轉換為適配昇騰310處理器的離線模型(*.om文件),放在model路徑下。 #為了方便下載,在這里直接給出原始模型下載及模型轉換命令,可以直接拷貝執行。 cd $HOME/samples/inference/modelInference/ sampleYOLOV7/model

wgethttps://obs-9be7.obs.cn-east-

2.myhuaweicloud.com/003_Atc_Models/yolov7/yolov7x.onnx

wgethttps://obs-9be7.obs.cn-east-

2.myhuaweicloud.com/003_Atc_Models/yolov7/aipp.cfg

atc--model=yolov7x.onnx--framework=5 --output=yolov7x --

input_shape="images:1,3,640,640" --soc_version=Ascend310 --

insert_op_conf=aipp.cfg 樣例編譯

執行以下命令,執行編譯腳本,開始樣例編譯。 cd $HOME/samples/inference/modelInference/ sampleYOLOV7/scripts

bash sample_build.sh 樣例運行

執行運行腳本,開始樣例運行。 bash sample_run.s

(3)樣例結果展示

運行完成后,會在樣例工程的out目錄下生成推理后的圖片,顯示對比結果如下所示。

結語

以上內容詳細介紹了在昇騰CANN架構下,基于PyTorch框架的ResNet50模型,以及基于YOLOV7網絡模型如何快速實現模型推理應用的主要流程,尤其方便已購買英碼科技EA500I邊緣計算盒子的開發者朋友們快速實現推理應用。

下期將會繼續更新關于昇騰開發工具的其他詳細使用教程,歡迎關注!

# end

e016cc18-dce3-11ee-b759-92fbcf53809c.png ? ?

關于英碼科技

廣州英碼信息科技有限公司成立于2006年,是一家致力提供“云-邊-端”協同的AIoT產品與細分場景解決方案的人工智能企業。

英碼旗下的“深元”AI產品體系,打造了一個以高、中、低多層次算力硬件為基礎,算法自訓練和生態整合為驅動,AI賦能平臺為支撐,工具鏈為輔助的全棧式AI應用服務架構,打通場景需求-算法-硬件集成-業務平臺對接-項目交付的全鏈條,為客戶提供算法、算力雙重自定義的產品和服務,推動AI和邊緣計算在細分場景的廣泛應用。

英碼的AIoT產品以及定制服務面向智慧城市、智慧交通、智慧金融、智慧校園、智慧應急、智慧園區等不同行業和細分場景,為客戶提供全方位的軟硬件支撐和產品自定義能力。

英碼科技的以“感知萬物,智算賦能”為核心理念,軟硬結合全面賦能千行百業智能化轉型,構建無所不及的智能世界。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 華為
    +關注

    關注

    215

    文章

    33827

    瀏覽量

    247515
  • AI
    AI
    +關注

    關注

    87

    文章

    26909

    瀏覽量

    264694
  • 架構
    +關注

    關注

    1

    文章

    490

    瀏覽量

    25268
  • pytorch
    +關注

    關注

    2

    文章

    766

    瀏覽量

    12877
收藏 人收藏

    評論

    相關推薦

    進一步解讀英偉達 Blackwell 架構、NVlink及GB200 超級芯片

    人工智能模型在規模和復雜性上呈指數級增長,對先進計算能力和內存容量的需求變得至關重要。Blackwell圖形處理器架構通過在性能和效率方面實現大幅躍升,解決了這些需求。 HGX B200 訓練性能提升3倍
    發表于 05-13 17:16

    【大語言模型:原理與工程實踐】大語言模型的應用

    實際應用前需解決的挑戰。為提升大語言模型的性能,高級的提示詞技術可以促進大語言模型與環境進行動態交互,引導其生成和推理規劃。 檢索增強生成技術
    發表于 05-07 17:21

    【大語言模型:原理與工程實踐】揭開大語言模型的面紗

    關系,從而在各種任務中表現出色。Transformer架構的推出,標志著語言模型技術的重大突破。它摒棄了傳統的遞歸方式,利用自注意力機制捕捉序列中的依賴關系。這一創新極大地提高了模型
    發表于 05-04 23:55

    自然語言處理應用LLM推理優化綜述

    當前,業界在將傳統優化技術引入 LLM 推理的同時,同時也在探索從大模型自回歸解碼特點出發,通過調整推理過程和引入新的模型結構來進一步提升
    發表于 04-10 11:48 ?177次閱讀
    自然語言處<b class='flag-5'>理應</b>用LLM<b class='flag-5'>推理</b>優化綜述

    ONNX Runtime支持龍架構,AI推理生態再添新翼

    近日,備受矚目的AI推理框架開源社區ONNX Runtime宣布推出支持龍架構的新版本1.17.0,這一里程碑式的更新意味著龍芯平臺上的AI推理應用開發與部署將更加便捷。
    的頭像 發表于 03-27 10:58 ?330次閱讀

    HarmonyOS:使用MindSpore Lite引擎進行模型推理

    場景介紹 MindSpore Lite 是一款 AI 引擎,它提供了面向不同硬件設備 AI 模型推理的功能,目前已經在圖像分類、目標識別、人臉識別、文字識別等應用中廣泛使用。 本文介紹
    發表于 12-14 11:41

    澎峰科技發布大模型推理引擎PerfXLLM

    要的巨額開銷也引發了相關研究者的關注。如何高效地進行推理,并盡可能地減少成本,從而促進大模型應用的落地成為了目前的關鍵問題。 于是,澎峰科技研發了一款 大模型推理引擎—PerfXLLM
    的頭像 發表于 11-25 15:35 ?566次閱讀
    澎峰科技發布大<b class='flag-5'>模型</b><b class='flag-5'>推理</b>引擎PerfXLLM

    使用rk3588多npu推理模型,模型推理時間還增加了,這怎么解釋

    使用rk3588多npu推理模型,模型推理時間還增加了,這怎么解釋
    發表于 11-05 18:22

    主流大模型推理框架盤點解析

    vLLM是一個開源的大模型推理加速框架,通過PagedAttention高效地管理attention中緩存的張量,實現了比HuggingFace Transformers高14-24倍的吞吐量。
    發表于 10-10 15:09 ?2373次閱讀
    主流大<b class='flag-5'>模型</b><b class='flag-5'>推理</b>框架盤點解析

    k210可以采集傳感器的數據進行模型推理嗎?

    k210可以采集傳感器的數據進行模型推理嗎?
    發表于 09-14 08:52

    盤古大模型與ChatGPT的模型基礎架構

    華為盤古大模型以Transformer模型架構為基礎,利用深層學習技術進行訓練。模型的每個數量達
    的頭像 發表于 09-05 09:55 ?1601次閱讀

    AscendCL快速入門——模型推理篇(上)

    CANN平臺專用的離線模型,既然要調用模型進行推理,首先當然是要把模型加載進來,最簡單的場景就
    發表于 08-24 11:04

    如何提高YOLOv4模型推理性能?

    使用 PyTorch 對具有非方形圖像的 YOLOv4 模型進行了訓練。 將 權重轉換為 ONNX 文件,然后轉換為中間表示 (IR)。 無法確定如何獲得更好的推理性能。
    發表于 08-15 06:58

    華為發布大模型時代ai存儲技術

    OceanStor A310深度學習數據湖存儲,面向基礎/行業大模型數據湖場景,實現從數據歸集、預處理到模型訓練、推理應用的AI全流程海量數據管理。
    發表于 07-21 14:51 ?440次閱讀

    教你如何用兩行代碼搞定YOLOv8各種模型推理

    大家好,YOLOv8 框架本身提供的API函數是可以兩行代碼實現 YOLOv8 模型推理,這次我把這段代碼封裝成了一個類,只有40行代碼左右,可以同時支持YOLOv8對象檢測、實例分割、姿態評估
    的頭像 發表于 06-18 11:50 ?2259次閱讀
    <b class='flag-5'>教你</b>如何用兩行代碼搞定YOLOv8各種<b class='flag-5'>模型</b><b class='flag-5'>推理</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>