一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何解決模型部署時(shí)出現(xiàn)算子不匹配問題

英特爾物聯(lián)網(wǎng) ? 來源: 英特爾物聯(lián)網(wǎng) ? 2023-12-08 15:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:顏國(guó)進(jìn)英特爾邊緣計(jì)算創(chuàng)新大使

01前言

英特爾發(fā)行版 OpenVINO 工具套件基于 oneAPI 而開發(fā),可以加快高性能計(jì)算機(jī)視覺深度學(xué)習(xí)視覺應(yīng)用開發(fā)速度工具套件,適用于從邊緣到云的各種英特爾平臺(tái)上,幫助用戶更快地將更準(zhǔn)確的真實(shí)世界結(jié)果部署到生產(chǎn)系統(tǒng)中。通過簡(jiǎn)化的開發(fā)工作流程,OpenVINO 可賦能開發(fā)者在現(xiàn)實(shí)世界中部署高性能應(yīng)用程序和算法。

OpenVINO 2023.2 于 2023 年 11 月 16 日發(fā)布,該工具包帶來了挖掘生成人工智能全部潛力的新功能。更多的生成式 AI 覆蓋和框架集成,以最大限度地減少代碼更改,并且擴(kuò)展了對(duì)直接 PyTorch 模型轉(zhuǎn)換的模型支持。支持更多新的模型,包括 LLaVA、chatGLM、Bark 和 LCM 等著名模型。支持更廣泛的大型語言模型(LLM)和更多模型壓縮技術(shù),支持運(yùn)行時(shí)推理支持以下 Int4 模型壓縮格式,通過神經(jīng)網(wǎng)絡(luò)壓縮框架(NNCF)進(jìn)行本機(jī) Int4 壓縮等一系列新的功能。

通過最新的 OpenVINO 更新信息,我們可以看出,OpenVINO 其實(shí)是在不斷更新迭代,并且適配更多新的模型。其主要原因是不少新出現(xiàn)的模型可能會(huì)帶來更多新的算子,而 OpenVINO 可能會(huì)在后續(xù)的版本更新中才會(huì)適配。但如果我們當(dāng)前階段需要使用 OpenVINO 部署該深度學(xué)習(xí)模型,那我們?cè)撛趺醋觯?/p>

其實(shí)對(duì)于一些編程大佬,以及對(duì) OpenVINO 有深入研究的人,他們可以對(duì) OpenVINO 源碼進(jìn)行修改,然后自己寫模型算子,添加到 OpenVINO 中。但是,開發(fā)算子的門檻是很高的,對(duì)于大多數(shù)開發(fā)者來說,這是很困難很難實(shí)現(xiàn)的。

在之前部署 RT-DETR 模型時(shí),我也遇到了該模型在 OpenVINO 使用 GPU 設(shè)備部署出現(xiàn)算子不支持問題。因此在該文章中,我將結(jié)合該問題的解決過程,向大家展示對(duì)于大多數(shù)開發(fā)者,如何解決模型部署時(shí)出現(xiàn)算子不匹配問題。

02提交 Issues

OpenVINO 是在 GitHub 上開源的一個(gè)項(xiàng)目,源碼開源,因此我們可以將源碼下載下來自己進(jìn)行編譯,因此我們可以修改源碼,但是對(duì)于大多數(shù)開發(fā)者來說,修改源碼是很難實(shí)現(xiàn)的。GitHub 上的開源項(xiàng)目提供了 Issues 功能,開發(fā)者在使用時(shí)如果遇到問題,可以通過提交 Issues 向官方開發(fā)人員求助。

提交 Issues 的流程如下:

01訪問 OpenVINO 廠庫 Issues 頁面,然后創(chuàng)建一個(gè) [new Issues]

OpenVINO 廠庫Issues 頁面:

https://github.com/openvinotoolkit/openvino/issues

ec08d3d6-957b-11ee-8b88-92fbcf53809c.png

02選擇一個(gè) Issues 類型,可以根據(jù)自己的問題類型進(jìn)行選擇

ec220130-957b-11ee-8b88-92fbcf53809c.png

03選擇完類型后,就可以根據(jù)自己的問題情況,填寫相關(guān)的內(nèi)容

ec49e27c-957b-11ee-8b88-92fbcf53809c.png

04以該問題為例,簡(jiǎn)單介紹一下 Issues 內(nèi)容:

首先是基礎(chǔ)內(nèi)容填寫,主要包括 OpenVINO 版本、開發(fā)平臺(tái)、推理設(shè)備、模型框架、所部署的模型以及問題的簡(jiǎn)單描述。對(duì)于該問題,所提交的內(nèi)容如下所示:

ec6e5bac-957b-11ee-8b88-92fbcf53809c.png

接下來是詳細(xì)復(fù)述問題出現(xiàn)的流程,為了讓開發(fā)者能夠更清楚地了解問題,這一不需要寫的非常詳細(xì),確保開發(fā)人員能夠完整復(fù)現(xiàn)該問題。如果復(fù)現(xiàn)步驟比較簡(jiǎn)單,可以在此處進(jìn)行詳細(xì)描述,如果問題副相比較復(fù)雜,并且存在多個(gè)文件,那就需要?jiǎng)?chuàng)建一個(gè) GitHub 廠庫存放相關(guān)文件。

最后一步就是添加錯(cuò)誤日志輸出,主要是為了讓開發(fā)人員根據(jù)日志確認(rèn)是否成功復(fù)現(xiàn)問題,或者是可以根據(jù)日志輸出定位問題所在。

在提交 Issues 后,OpenVINO 官方人員會(huì)根據(jù)問題內(nèi)容,分配開發(fā)人員進(jìn)行解決,此時(shí)我們就只需要等待 OpenVINO 官方回復(fù)即可。

03編譯 OpenVINO 源碼

上一步中我們已經(jīng)相關(guān)方求助,不久之后便可以獲得官方的解答,但是官方的解答如果涉及到源碼的修改,可能對(duì)于大多數(shù)開發(fā)者來說會(huì)無從下手,對(duì)于涉及到源碼的改動(dòng),如果想直接在項(xiàng)目中使用,就需要自行進(jìn)行源碼編譯。因?yàn)槟闼岢龅膯栴}官方給出的解決方案如果比較有價(jià)值的話,可能會(huì)在后續(xù)的版本中修復(fù),并發(fā)布到最新版本中。但對(duì)于我們使用者來說,我們需要立刻就使用,而無法等待到下一個(gè)版本發(fā)布。因此,我們將結(jié)合官方給的回復(fù)與改動(dòng),基于 Windows 平臺(tái),一步步從源碼開始,實(shí)現(xiàn)源碼編譯與使用。

3.1 下載源碼

OpenVINO 源碼可以通過 Git 進(jìn)行下載,使用 Git 依次運(yùn)行下面代碼:

git clone https://github.com/openvinotoolkit/openvino.git
cd openvino
git submodule update --init

左滑查看更多

由于網(wǎng)絡(luò)問題,此處下載可能較慢,但一定要保證上面下載的一些附加依賴能夠完整下載,不然后面編譯會(huì)出現(xiàn)錯(cuò)誤。如果后面生成編譯文件時(shí)出現(xiàn)項(xiàng)目缺少,那主要原因就是此處因?yàn)榫W(wǎng)絡(luò)原因,有一些文件沒有下載下來,此處我也是下載了好幾次才下載下來完整的文件。

3.2 修改源碼

上一步我們已經(jīng)下載完源碼,下一步就是需要根據(jù)官方給的修改意見對(duì)源碼進(jìn)行修改,如下圖所示,該截圖為官方提供的源碼修改意見:

ecb38d44-957b-11ee-8b88-92fbcf53809c.png

在該返回意見中,我們需要在源碼中增加一些代碼,所以此處大家可以根據(jù)情況對(duì)源碼進(jìn)行修改即可。

3.3源碼編譯

上一步中已經(jīng)下載并修改好了源碼,接下來就可以進(jìn)行編譯了,此處我們采用 Cmake+vs2022 的方式進(jìn)行編譯,通過 Cmake 編譯生成 VS2022 項(xiàng)目,然后使用 VS 編譯項(xiàng)目源碼。

首先依次運(yùn)行下面兩條命令:

mkdir build && cd build
cmake -G "Visual Studio 17 2022"  -DCMAKE_BUILD_TYPE=Debug

左滑查看更多

此處需要把“”替換成自己的 OpenVINO 路徑,運(yùn)行完第一條命令后,會(huì)創(chuàng)建 build 文件夾并切換到該文件夾中。運(yùn)行完第二條命令后,如下圖所示,會(huì)根據(jù)項(xiàng)目中的 CMakeLists 文件進(jìn)行編譯,最后編譯成功的輸出如第二張圖所示。

edaf0052-957b-11ee-8b88-92fbcf53809c.pngedc465b4-957b-11ee-8b88-92fbcf53809c.png

如果得不到上圖效果,說明編譯中出現(xiàn)了問題,需要回頭查找相關(guān)的錯(cuò)誤。跟俊之前的編譯經(jīng)驗(yàn),主要問題是出現(xiàn)在第一步中,主要原因是因?yàn)榫W(wǎng)絡(luò)問題導(dǎo)致的相關(guān)配置沒有下載。最后編譯成功后,會(huì)在 build 文件中出現(xiàn) OpenVINO.sln 項(xiàng)目解決方案。

ede710e6-957b-11ee-8b88-92fbcf53809c.png

接下來我們使用 VS2022 打開該解決方案,然后通過設(shè)置 Debug 或 Release 來選擇生成的動(dòng)態(tài)鏈接庫是什么版本,然后右擊 ALL_BUILD 項(xiàng)目,點(diǎn)擊生成,便可以運(yùn)行項(xiàng)目進(jìn)行源碼編譯。

ee0659ec-957b-11ee-8b88-92fbcf53809c.png

友情提示,這一步源碼編譯由于涉及的代碼文件角度,因此需要較長(zhǎng)的時(shí)間來生成。

3.4 獲取編譯后的動(dòng)態(tài)鏈接庫

項(xiàng)目運(yùn)行成功后,我們可以在下面路徑下找到編譯出的動(dòng)態(tài)鏈接庫文件,可以看出,編譯所生成的 .dll 文件以及 .lib 文件,是我們所下載的官方發(fā)布的 OpenVINO 發(fā)行版 Runtime 中的文件是一致的,因此在后續(xù)使用時(shí),我們只需要將我們編譯生成的動(dòng)態(tài)鏈接庫文件替換到當(dāng)前項(xiàng)目中即可。

ee2bc27c-957b-11ee-8b88-92fbcf53809c.png

04實(shí)際項(xiàng)目測(cè)試

該案例主要是基于 RT-DETR 模型使用 GPU 部署出現(xiàn)問題為例,最后我們回到該案例中,測(cè)試是否解決了我們的問題。關(guān)于使用在 C++ 部署 RTDETR 模型的流程可以參考我的上一篇文章:《基于OpenVINOC++ API部署RT-DETR模型|開發(fā)者實(shí)戰(zhàn)》,因此此處對(duì)于 C++ 項(xiàng)目配置不再作過多講解。

如下圖所示,該圖片是我們使用當(dāng)前發(fā)行版本 OpenVINO 2023.2 運(yùn)行結(jié)果,此處我們使用的是 GPU.0 集成顯卡運(yùn)行推理,可以看出,模型在推理階段會(huì)出現(xiàn)錯(cuò)誤導(dǎo)致程序崩潰結(jié)束。

ee50cfcc-957b-11ee-8b88-92fbcf53809c.png

接下來我們用我們上面自行編譯生成的動(dòng)態(tài)鏈接庫運(yùn)行程序,可以看出,在使用 GPU.0 集成顯卡運(yùn)行推理時(shí),錯(cuò)誤已經(jīng)消失了,并且成功運(yùn)行模型推理,并打印出了結(jié)果。

ee719496-957b-11ee-8b88-92fbcf53809c.png

通過對(duì)比測(cè)試,說明官方所給出的解決方案是正確的,我們也成功根據(jù)官方給出的解決方案解決了當(dāng)前問題,并且不用等待官方發(fā)布下一個(gè)版本便可以提前使用,方便大家。

05總結(jié)

在本文中,我們結(jié)合一個(gè)模型部署案例,向大家講解了使用 OpenVINO 時(shí)出現(xiàn)算子不匹配等問題時(shí),對(duì)于我們使用者來說,如何在官方開發(fā)者的幫助下,解決自己所遇到的問題。另外,通過該方式,我們也向 OpenVINO 反饋了代碼中存在的 Bug,在解決我們問題的同時(shí),也積極為開源做出了自己的貢獻(xiàn)。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 英特爾
    +關(guān)注

    關(guān)注

    61

    文章

    10190

    瀏覽量

    174470
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3512

    瀏覽量

    50301
  • 邊緣計(jì)算
    +關(guān)注

    關(guān)注

    22

    文章

    3313

    瀏覽量

    50809
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    114

    瀏覽量

    462

原文標(biāo)題:當(dāng) OpenVINO? 不支持你所部署模型算子時(shí),你該如何做?|開發(fā)者實(shí)戰(zhàn)

文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用CUBEAI部署tflite模型到STM32F0中,模型創(chuàng)建失敗怎么解決?

    CRC IP,用MX生成工程時(shí)已經(jīng)啟用了CRC,代碼中也有。 但是依舊無法生成模型。 想問問該如何解決,還是說F0還是無法部署AI模型
    發(fā)表于 03-15 08:10

    使用TVM量化部署模型報(bào)錯(cuò)NameError: name \'GenerateESPConstants\' is not defined如何解決?

    各位好,我在使用TVM部署模型時(shí),遇到一下錯(cuò)誤,請(qǐng)問如何解決?我進(jìn)esp.py文件看,有如下兩個(gè)函數(shù)是找不到定義的: GenerateESPConstants(), ExtractConstantsFromPartition
    發(fā)表于 06-28 10:50

    K230D部署模型失敗的原因?

    MicroPython部署的無法正常運(yùn)行,采用C++版本的無法實(shí)現(xiàn)部署 嘗試解決過程 1.考慮到可能是固件匹配的問題,重新燒錄了流程(生成模型
    發(fā)表于 03-11 06:19

    Hibernate模型匹配的解決方法

    模型匹配(阻抗匹配)Java面向?qū)ο笳Z言,對(duì)象模型,其主要概念有:繼承、關(guān)聯(lián)、多態(tài)等;數(shù)據(jù)庫
    發(fā)表于 05-23 06:34

    系統(tǒng)內(nèi)的阻抗匹配問題淺析

    存在的阻抗匹配問題大家遇到的比較多,兩兩之間的差異性也比較明顯,問題主要出現(xiàn)在BOM和Java Object之間的阻抗匹配上。從字面上看
    發(fā)表于 05-31 07:02

    VHDL類型匹配錯(cuò)誤

    嗨,我正在嘗試編寫以下文件DorQ.vhd,但Quartus 2一直給我一個(gè)錯(cuò)誤錯(cuò)誤(10381):在DorQ.vhd(49)的VHDL類型匹配錯(cuò)誤:索引名稱返回一個(gè)類型匹配的值
    發(fā)表于 03-23 07:12

    部署基于嵌入的機(jī)器學(xué)習(xí)模型

    1、如何在生產(chǎn)中部署基于嵌入的機(jī)器學(xué)習(xí)模型  由于最近大量的研究,機(jī)器學(xué)習(xí)模型的性能在過去幾年里有了顯著的提高。雖然這些改進(jìn)的模型開辟了新的可能性,但是它們只有在可以
    發(fā)表于 11-02 15:09

    模塊間接口設(shè)計(jì)匹配問題

    模塊間接口設(shè)計(jì)匹配引起的問題   如果沒有一個(gè)技術(shù)能力很強(qiáng)的集成者,往往在模塊間容易出現(xiàn)設(shè)計(jì)上的錯(cuò)誤。這種情況是災(zāi)難性的,雙方都是在
    發(fā)表于 11-21 14:01 ?755次閱讀

    何解決打印模型出現(xiàn)虛層的現(xiàn)象?

    如果你會(huì)使用3D打印機(jī),那么你的各種奇思妙將想變成現(xiàn)實(shí),一個(gè)嶄新的DIY世界正向你敞開大門。但是對(duì)于一些新手朋友,在剛開始使用3D打印機(jī)時(shí),打印模型會(huì)出現(xiàn)虛層,這樣就會(huì)影響模型的精度和美觀,那么,我們今天就教大家如
    的頭像 發(fā)表于 06-19 11:15 ?3349次閱讀

    ONNX格式模型部署兼容性框架介紹

    ? ONNXRUNTIME介紹 ONNX格式模型部署兼容性最強(qiáng)的框架 ONNXRUNTIME,基本上不會(huì)有算子不支持跟兼容的情況出現(xiàn),只要
    的頭像 發(fā)表于 06-19 11:50 ?3261次閱讀
    ONNX格式<b class='flag-5'>模型</b><b class='flag-5'>部署</b>兼容性框架介紹

    自定義算子開發(fā)

    一個(gè)完整的自定義算子應(yīng)用過程包括注冊(cè)算子、算子實(shí)現(xiàn)、含自定義算子模型轉(zhuǎn)換和運(yùn)行含自定義op模型四個(gè)階段。在大多數(shù)情況下,您的
    的頭像 發(fā)表于 04-07 16:11 ?3338次閱讀
    自定義<b class='flag-5'>算子</b>開發(fā)

    opencv寫好的算子,比如找邊 找圓 模版匹配

    opencv寫好的算子,比如找邊 找圓 模版匹配
    的頭像 發(fā)表于 10-16 09:54 ?702次閱讀

    arcgis空間參考與數(shù)據(jù)框匹配何解

    當(dāng)使用ArcGIS軟件進(jìn)行空間數(shù)據(jù)處理時(shí),經(jīng)常會(huì)遇到空間參考與數(shù)據(jù)框匹配的問題。這種匹配可能導(dǎo)致數(shù)據(jù)顯示不正確,分析結(jié)果不準(zhǔn)確,甚至引發(fā)其他錯(cuò)誤。本文將詳細(xì)介紹空間參考與數(shù)據(jù)框
    的頭像 發(fā)表于 02-25 11:17 ?1.7w次閱讀

    BOM與焊盤為什么匹配?

    何解決BOM與焊盤匹配的問題? ①同步更新BOM與焊盤設(shè)計(jì) 在設(shè)計(jì)變更時(shí),確保BOM和焊盤設(shè)計(jì)同步更新,避免信息不一致。
    的頭像 發(fā)表于 04-12 12:33 ?1053次閱讀

    何解決羅德與施瓦茨示波器新探頭量程匹配問題

    在電子測(cè)量領(lǐng)域,示波器與探頭的匹配度直接影響測(cè)量精度與效率。當(dāng)用戶為新購的羅德與施瓦茨示波器配置新探頭時(shí),若出現(xiàn)量程匹配(如信號(hào)顯示異常、測(cè)量誤差過大等),往往源于探頭參數(shù)設(shè)置、硬件
    的頭像 發(fā)表于 06-07 15:32 ?153次閱讀
    如<b class='flag-5'>何解</b>決羅德與施瓦茨示波器新探頭量程<b class='flag-5'>不</b><b class='flag-5'>匹配</b>問題