色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

如何優雅地將Swin Transformer模型部署到AX650N Demo板上?

愛芯元智AXERA ? 來源:愛芯元智AXERA ? 2023-04-15 10:15 ? 次閱讀

01

背景

今年來以ChatGPT為代表的大模型的驚艷效果,讓AI行業迎來了新的動力。各種AIGC的應用接踵而至。我們知道類似ChatGPT的大模型,其核心網絡結構均基于Google 2017年的論文提出的Transformer的論文《Attention Is All You Need》。在計算機視覺建模一直由卷積神經網絡(CNN)主導,基于Transformer結構的網絡模型長時間停留在各大頂會“刷榜”階段,真正大規模落地并不突出。直到ICCV 2021的最佳論文《Swin Transformer》才達到了準確率和性能雙佳的效果。

但是到目前為止,類似Swin Transformer的視覺類Transformer網絡模型大多數還是部署在云端服務器上,原因是GPU對于MHA結構計算支持更友好,反而邊緣側/端側AI芯片由于其DSA架構限制,為了保證CNN結構的模型效率更好,基本上對MHA結構沒有過多性能優化,甚至需要修改網絡結構才能勉強部署。這也間接限制了算法工程師在邊緣計算應用上進一步發揮Transformer網絡的想象力。

今年3月,愛芯元智發布了新一代產品AX650N,內置了其自主研發的第三代神經網絡單元,進一步提升了最新AI算法模型的部署能力,可幫助用戶在智慧城市,智慧教育,智能制造等領域發揮更大的價值。最近我通過正式渠道有幸拿到了一塊AX650N Demo板進行嘗鮮體驗。

本文的目的是簡單介紹基于AX650N Demo配套的新一代AI工具鏈如何優雅地將Swin Transformer模型部署到AX650N Demo板上,希望能給算法工程師們在Transformer網路部署落地上提供一種新的思路和途徑。

02

Swin Transformer

b18a3090-daca-11ed-bfe3-dac502259ad0.png

The architecture of a Swin Transformer

目前Transformer應用到圖像領域主要有兩大挑戰:

視覺實體變化大,在不同場景下視覺Transformer性能未必很好;

圖像分辨率高,像素點多,Transformer基于全局自注意力的計算導致計算量較大。

2.1 原理

針對上述兩個問題,微軟在《Swin Transformer》的論文中提出了一種包含滑窗操作。其中滑窗操作包括不重疊的local window,和重疊的cross-window。將注意力計算限制在一個窗口中,一方面能引入CNN卷積操作的局部性,另一方面能節省計算量。在各大圖像任務上,Swin Transformer都具有很好的性能。

2.2 分析

相比常見CNN網絡模型,其實也就是新增了MHA(Multi Head Attention)的關鍵算子

LayerNormalization

Matmul

GELU

量化

LN、GELU、Matmul存在掉點風險

計算效率

占比最大的計算操作由Conv變成Matmul,因此要求硬件平臺MatMul計算能力強

03

模型轉換

Pulsar2介紹

Pulsar2(暫定名)是我們的新一代AI工具鏈,在吸取上一代工具鏈Pulsar的優秀行業經驗和不足之處的反思后進行的重構,依然包含“模型轉換、離線量化、模型編譯、異構調度”四合一功能,進一步強化的網絡模型快速、高效的部署需求。在針對第三NPU架構進行了深度定制優化的同時,也擴展了算子&模型支持的能力及范圍,對Transformer結構的網絡也有較好的支持。

b1c17690-daca-11ed-bfe3-dac502259ad0.png

pulsar2 deploy pipeline

3.1 模型下載

從Swin Transformer的官方倉庫獲取模型,由于是基于PyTorch訓練,導出的是原始的pth模型格式,而對于部署的同學而言,更喜歡使用ONNX模型進行后續的產品落地,為了方便測試,我們提供該模型的ONNX版本導出腳本,降低模型獲取門檻,便于之前不熟悉的同學直接掌握其中的關鍵操作。

import onnx
import torch
import requests
from onnxsim import simplify
from PIL import Image
from transformers import AutoFeatureExtractor, SwinForImageClassification


def download_swin_model(model_name):
  prefix = "microsoft"
  model_id = f"{prefix}/{model_name}" # google/vit-base-patch16-384


  url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
  image = Image.open(requests.get(url, stream=True).raw)
  feature_extractor = AutoFeatureExtractor.from_pretrained(model_id)
  model = SwinForImageClassification.from_pretrained(model_id)
  inputs = feature_extractor(images=image, return_tensors="pt")
  outputs = model(**inputs)
  logits = outputs.logits
  # model predicts one of the 1000 ImageNet classes
  predicted_class_idx = logits.argmax(-1).item()
  print("Predicted class:", model.config.id2label[predicted_class_idx])


  # export
  model_path = f"{model_name}.onnx"
  torch.onnx.export(
    model,
    tuple(inputs.values()),
    f=model_path,
    do_constant_folding=True,
    opset_version=13,
    input_names=["input"],
    output_names=["output"]
  )


  # simplify
  model = onnx.load(model_path)
  model_simp, check = simplify(model)
  assert check, "Simplified ONNX model could not be validated"
  simp_path = f"{model_name}_sim.onnx"
  onnx.save(model_simp, simp_path)


def main():
  download_swin_model(model_name="swin-tiny-patch4-window7-224") # microsoft/swin-tiny-patch4-window7-224


if __name__ == "__main__":
  main()

3.2 模型編譯

Pulsar2為了提升用戶使用體驗,降低Pulsar客戶遷移的學習成本,基本上延續了原有風格,包括Docker環境安裝、命令行指令、配置文件修改參數仿真功能等。同時針對編譯速度慢的痛點,進行了大幅度優化,模型編譯的耗時相比第一代工具鏈平均降低了一個數量級(分鐘->秒)。

$ pulsar2 build --input model/swin-t.onnx --output_dir output --config config/swin-t.json --target_hardware=AX650
32 File(s) Loaded.
[10:22:36] AX Quantization Config Refine Pass Running ... Finished.
[10:22:36] AX Quantization Fusion Pass Running ...    Finished.
[10:22:36] AX Quantize Simplify Pass Running ...     Finished.
[10:22:36] AX Parameter Quantization Pass Running ...   Finished.
Calibration Progress(Phase 1): 100%|████████| 32/32 [00:08<00:00, ?3.92it/s]
Finished.
[10:22:45] AX Passive Parameter Quantization Running ... ?Finished.
[10:22:45] AX Parameter Baking Pass Running ... ? ? ? ? ? Finished.
[10:22:45] AX Refine Int Parameter pass Running ... ? ? ? Finished.
Network Quantization Finished.
quant.axmodel export success: output/quant/quant_axmodel.onnx
Building native ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
......
2023-04-13 10:23:07.109 | INFO ? ? | yasched.test_onepass1475 - max_cycle = 6689562
2023-04-13 10:23:25.765 | INFO ? ? | yamain.command.build832 - fuse 1 subgraph(s)

從編譯log中我們大致看出,計算圖優化、PTQ量化、離線編譯總共耗時只需50秒。然后我們來看一下大家比較關心的MHA結構變成了什么樣子:

b1e98f68-daca-11ed-bfe3-dac502259ad0.png

MHA ONNX原始結構

b214ffc2-daca-11ed-bfe3-dac502259ad0.png

MHA由工具鏈進行圖優化之后的quant.axmodel結構

3.3 仿真運行

在這一代工具鏈,我們提供更方便的pulsar2-run-helper的插件,可以模擬NPU計算流程,方便提前獲得上板運行結果。(請大家記住仿真運行的結果,后續章節將與上板實際部署的推理結果進行比對)

python3 cli_classification.py --post_processing --axmodel_path models/swin-t.axmodel --intermediate_path sim_outputs/0
[I] The following are the predicted score index pair.
[I] 2.6688, 285
[I] 1.9528, 223
[I] 1.8877, 279
[I] 1.8877, 332
[I] 1.8226, 282

04

上板部署

AX650N Demo板的BSP上已經預裝了NPU模型測試需要的工具

/root # sample_npu_classification -m swin-t.axmodel -i cat.jpg -r 100
--------------------------------------
model file : swin-t.axmodel
image file : cat.jpg
img_h, img_w : 224 224
--------------------------------------
Engine creating handle is done.
Engine creating context is done.
Engine get io info is done.
Engine alloc io is done.
Engine push input is done.
--------------------------------------
2.6688, 285
1.9528, 223
1.8877, 332
1.8877, 279
1.8226, 282
--------------------------------------
Repeat 100 times, avg time 8.64 ms, max_time 8.65 ms, min_time 8.64 ms
--------------------------------------

對比上一章節的仿真結果,完全一致。

4.1 算力分配

AX650N的10.8Tops@Int8的算力其實是可分配的,上述內容中,按照默認的編譯選項,其實只發揮了一部分算力(3.6Tops@Int8)。我們來看看滿算力下的耗時表現如何呢?

/root # ax_run_model -m swin-t-npu3.axmodel -r 100
Run AxModel:
   model: swin-t-npu3.axmodel
    type: NPU3
    vnpu: Disable
  affinity: 0b001
   repeat: 100
   warmup: 1
   batch: 1
  tool ver: 1.0.0
 ------------------------------------------------------
 min =  3.769 ms  max =  3.805 ms  avg =  3.778 ms
 ------------------------------------------------------
/root #
/root # sample_npu_classification -m swin-t-npu3.axmodel -i cat.jpg -r 100
--------------------------------------
model file : swin-t-npu3.axmodel
image file : cat.jpg
img_h, img_w : 224 224
--------------------------------------
Engine creating handle is done.
Engine creating context is done.
Engine get io info is done.
Engine alloc io is done.
Engine push input is done.
--------------------------------------
2.6688, 285
1.9528, 223
1.8877, 332
1.8877, 279
1.8226, 282
--------------------------------------
Repeat 100 times, avg time 3.78 ms, max_time 3.79 ms, min_time 3.77 ms
--------------------------------------

05

性能統計

算力 耗時(ms) 幀率(fps)
3.6Tops@Int8 8.64 115
10.8Tops@Int8 3.77 265

NPU工具鏈的性能優化是個長期堅持的過程,最新版本的性能數據會更優秀。





審核編輯:劉清

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

    關注

    28

    文章

    4729

    瀏覽量

    128899
  • cnn
    cnn
    +關注

    關注

    3

    文章

    352

    瀏覽量

    22204
  • 卷積神經網絡

    關注

    4

    文章

    367

    瀏覽量

    11863
  • ChatGPT
    +關注

    關注

    29

    文章

    1560

    瀏覽量

    7604

原文標題:愛芯分享 | 基于AX650N部署Swin Transformer

文章出處:【微信號:愛芯元智AXERA,微信公眾號:愛芯元智AXERA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于AX650N的M.2智能推理卡解決方案

    2024年是大模型在邊緣側&端側落地的第一年。從這一年開始,頭部手機廠商在自己的旗艦機型中內置了3B以下的本地大模型,證明了3B以下大模型的商業落地可行性。
    的頭像 發表于 12-23 16:39 ?65次閱讀

    Transformer模型能夠做什么

    盡管名為 Transformer,但它們不是電視銀幕的變形金剛,也不是電線桿垃圾桶大小的變壓器。
    的頭像 發表于 11-20 09:27 ?286次閱讀
    <b class='flag-5'>Transformer</b><b class='flag-5'>模型</b>能夠做什么

    基于AX650N/AX630C部署多模態大模型InternVL2-1B

    InternVL2是由上海人工智能實驗室OpenGVLab發布的一款多模態大模型,中文名稱為“書生·萬象”。該模型在多學科問答(MMMU)等任務上表現出色,并且具備處理多種模態數據的能力。
    的頭像 發表于 11-18 17:32 ?697次閱讀
    基于<b class='flag-5'>AX650N</b>/<b class='flag-5'>AX</b>630C<b class='flag-5'>部署</b>多模態大<b class='flag-5'>模型</b>InternVL2-1B

    基于AX650N芯片部署MiniCPM-V 2.0高效端側多模態大模型

    今年4月份,面壁智能&清華大學自然語言處理實驗室推出MiniCPM系列的最新多模態版本MiniCPM-V 2.0。該模型基于MiniCPM 2.4B和SigLip-400M構建,共擁有
    的頭像 發表于 07-15 09:34 ?887次閱讀
    基于<b class='flag-5'>AX650N</b>芯片<b class='flag-5'>部署</b>MiniCPM-V 2.0高效端側多模態大<b class='flag-5'>模型</b>

    Transformer語言模型簡介與實現過程

    任務,隨后迅速擴展其他NLP任務中,如文本生成、語言理解、問答系統等。本文詳細介紹Transformer語言模型的原理、特點、優勢以及實現過程。
    的頭像 發表于 07-10 11:48 ?1633次閱讀

    llm模型本地部署有用嗎

    這些模型部署本地環境可能會帶來一些挑戰和優勢。 1. LLM模型概述 大型語言模型(LLM
    的頭像 發表于 07-09 10:14 ?484次閱讀

    基于AX650N/AX630C部署端側大語言模型Qwen2

    本文分享如何最新的端側大語言模型部署超高性價比SoC,向業界對端側大
    的頭像 發表于 07-06 17:43 ?3519次閱讀
    基于<b class='flag-5'>AX650N</b>/<b class='flag-5'>AX</b>630C<b class='flag-5'>部署</b>端側大語言<b class='flag-5'>模型</b>Qwen2

    使用PyTorch搭建Transformer模型

    Transformer模型自其問世以來,在自然語言處理(NLP)領域取得了巨大的成功,并成為了許多先進模型(如BERT、GPT等)的基礎。本文深入解讀如何使用PyTorch框架搭建
    的頭像 發表于 07-02 11:41 ?1603次閱讀

    愛芯元智AX620E和AX650系列芯片正式通過PSA Certified安全認證

    萬物互聯的時代,安全性已成為物聯網產品設計及部署的基本要求。近日,愛芯元智AX620E和AX650系列芯片(包含AX630C/AX620Q/
    的頭像 發表于 04-23 15:45 ?807次閱讀
    愛芯元智<b class='flag-5'>AX</b>620E和<b class='flag-5'>AX650</b>系列芯片正式通過PSA Certified安全認證

    基于AX650N/AX620Q部署YOLO-World

    目標檢測是計算機視覺領域一項重要的任務。開集目標檢測(Open-set Object Detection)與閉集目標檢測(Closed-set Object Detection)是目標檢測領域的兩個概念。
    的頭像 發表于 04-17 15:36 ?3594次閱讀
    基于<b class='flag-5'>AX650N</b>/<b class='flag-5'>AX</b>620Q<b class='flag-5'>部署</b>YOLO-World

    使用CUBEAI部署tflite模型STM32F0中,模型創建失敗怎么解決?

    看到CUBE_AI已經支持STM32F0系列芯片,就想拿來入門嵌入式AI。 生成的模型很小,是可以部署F0的,但是一直無法創建成功。
    發表于 03-15 08:10

    基于Transformer模型的壓縮方法

    基于Transformer架構的大型模型在人工智能領域中發揮著日益重要的作用,特別是在自然語言處理(NLP)和計算機視覺(CV)領域。
    的頭像 發表于 02-22 16:27 ?648次閱讀
    基于<b class='flag-5'>Transformer</b><b class='flag-5'>模型</b>的壓縮方法

    【愛芯派 Pro 開發試用體驗】在愛芯派 Pro上部署坐姿檢測

    。考慮AX650N強大的能力,直接在編譯。 首先,git clone https://github.com/AXERA-TECH/ax
    發表于 01-16 22:41

    使用愛芯派Pro開發部署人體姿態估計模型

    在經過之前對于開發的使用,以及通過幾個愛芯派官方給出的示例demo(mobilenet/yolov5)在開發部署之后,筆者也逐漸了解
    的頭像 發表于 01-09 09:50 ?1414次閱讀
    使用愛芯派Pro開發<b class='flag-5'>板</b><b class='flag-5'>部署</b>人體姿態估計<b class='flag-5'>模型</b>

    【愛芯派 Pro 開發試用體驗】+ 圖像分割和填充的Demo測試

    的實時分割和進一步可選修復。原始代碼由愛芯官方開源于 GITHUB:https://github.com/AXERA-TECH/SAM-ONNX-AX650-CPP。倉庫內的文本介紹了如何在AX650N
    發表于 12-26 11:22
    主站蜘蛛池模板: 欧美高清69hd| 狼人射综合| 韩国黄电影| 九九精品视频一区二区三区| 久久两性视频| 欧洲人交xxx69| 天堂无码人妻精品AV一区| 亚洲麻豆精品成人A在线观看 | 久久这里有精品| 女教师跟黑人男朋友激情过后| 成年人视频免费在线播放| 无码专区久久综合久综合字幕| 麻豆三级电影| 精品国产在线亚洲欧美| 毛片大全网站| 色99蜜臀AV无码| 亚洲在线2018最新无码| 97在线播放视频| 国产精品99AV在线观看| 久久操韩国自偷拍| 青柠在线观看免费高清电视剧荣耀| 丝袜足控免费网站xx91| 伊人激情综合网| 爆操日本美女| 很很射影院| 欧美伦理片第7页| 亚洲精品在线网址| 97公开超碰在线视频| 国产精品免费一区二区三区四区| 恋夜影院支持安卓视频美女| 上课失禁丨vk| 2022精品福利在线小视频| 国产精品1区2区| 伦理片在线线手机版韩国免费观看 | 亚洲中文字幕永久在线全国| Chinesetube国产中文| 国产亚洲精品久久久久久白晶晶 | 亚洲va久久久久| 99久久久国产精品免费调教| 国产中文在线观看| 欧洲内射VIDEOXXX3D|