chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

OpenVINO? C++ 在哪吒開發(fā)板上推理 Transformer 模型|開發(fā)者實(shí)戰(zhàn)

研揚(yáng)科技AAEON ? 2024-09-28 08:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

使用 OpenVINO 定制你的 AI 助手丨開發(fā)者實(shí)戰(zhàn)

作者:

王國強(qiáng)蘇州嘉樹醫(yī)療科技有限公司 算法工程師

指導(dǎo):

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

研揚(yáng)科技針對(duì)邊緣 AI 行業(yè)開發(fā)者推出的『哪吒』(Nezha)開發(fā)套件,以信用卡大?。?5 x 56mm)的開發(fā)板-『哪吒』(Nezha)為核心,『哪吒』采用 Intel N97 處理器(Alder Lake-N),最大睿頻 3.6GHz,Intel UHD Graphics 內(nèi)核GPU,可實(shí)現(xiàn)高分辨率顯示;板載 LPDDR5 內(nèi)存、eMMC 存儲(chǔ)及 TPM 2.0,配備 GPIO 接口,支持 Windows 和 Linux 操作系統(tǒng),這些功能和無風(fēng)扇散熱方式相結(jié)合,為各種應(yīng)用程序構(gòu)建高效的解決方案,專為入門級(jí)人工智能應(yīng)用和邊緣智能設(shè)備而設(shè)計(jì)。英特爾開發(fā)套件能完美勝人工智能學(xué)習(xí)、開發(fā)、實(shí)訓(xùn)、應(yīng)用等不同應(yīng)用場景。適用于如自動(dòng)化、物聯(lián)網(wǎng)網(wǎng)關(guān)、數(shù)字標(biāo)牌和機(jī)器人等應(yīng)用。

1.1

OpenVINO 介紹

OpenVINO 是一個(gè)開源工具套件,用于對(duì)深度學(xué)習(xí)模型進(jìn)行優(yōu)化并在云端、邊緣進(jìn)行部署。它能在諸如生成式人工智能、視頻、音頻以及語言等各類應(yīng)用場景中加快深度學(xué)習(xí)推理的速度,且支持來自 PyTorch、TensorFlow、ONNX 等熱門框架的模型。實(shí)現(xiàn)模型的轉(zhuǎn)換與優(yōu)化,并在包括 Intel硬件及各種環(huán)境(本地、設(shè)備端、瀏覽器或者云端)中進(jìn)行部署。

wKgaomcJ2AWAR4sFAAL5VEqUFNM039.png

圖1-2 以深度學(xué)習(xí)為基礎(chǔ)的AI技術(shù)在各行各業(yè)應(yīng)用廣泛

1.2

Ubuntu22.04 上的

OpenVINO 環(huán)境配置

OpenVINO 官方文檔 https://docs.openvino.ai 有最新版本的安裝教程,這里使用壓縮包的方式安裝,選擇對(duì)應(yīng)的 Ubuntu22 的版本:

wKgaomcJ2AWAXC05AAS3ae5XMbg898.png

下載到哪吒開發(fā)板上后將壓縮包解壓:

1 tar -zxvf l_openvino_toolkit_ubuntu22_2024.3.0.16041.1e3b88e4e3f_x86_64.tgz

進(jìn)入解壓目錄,安裝依賴:

1 cd l_openvino_toolkit_ubuntu22_2024.3.0.16041.1e3b88e4e3f_x86_64/ 2 sudo -E ./install_dependencies/install_openvino_dependencies.sh

然后配置環(huán)境變量:

1 source ./setupvars.sh

這樣 OpenVINO 的環(huán)境就配置好了,可以直接在 Intel CPU 上推理模型,如果需要在 Intel iGPU 上推理,還需要另外安裝 OpenCL runtime packages,參考官方文檔:

https://docs.openvino.ai/2024/get-started/configurations/configurations-intel-gpu.html

這里使用 deb 包的方式安裝,按照 Github

https://github.com/intel/compute-runtime

的說明下載7個(gè) deb 包,然后 dpkg 安裝

1 sudo dpkg -i *.deb

wKgZomcJ2AWAdAy0AAO7REDB9QU706.png

如果 dpkg 安裝出現(xiàn)依賴報(bào)錯(cuò),就需要先 apt 安裝依賴,然后再 dpkg 安裝7個(gè) deb 包

1 sudo apt install ocl-icd-libopencl1

這樣在哪吒開發(fā)板 Ubuntu22.04 上使用 Intel iGPU 進(jìn)行 OpenVINO 推理的環(huán)境就配置完成了。

1.3

Transformer模型推理

模型是一個(gè)基于 Transformer 結(jié)構(gòu)的模型,訓(xùn)練后生成 ONNX 中間表示,OpenVINO 可以直接使用 ONNX 模型進(jìn)行推理,也可以轉(zhuǎn)為 OpenVINO IR格式,轉(zhuǎn)換命令如下:

1 ovc model.onnx

默認(rèn)會(huì)生成 FP16 的模型,如果精度有較大損失,可指定 compress_to_fp16 為 False 就不會(huì)進(jìn)行 FP16 量化了:

1 ovc model.onnx --compress_to_fp16=False

轉(zhuǎn)換后將生成.xml和.bin兩個(gè)文件,.xml文件描述了模型的結(jié)構(gòu),.bin文件包含了模型各層的參數(shù)。

推理代碼如下:

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 const int length = 300; 9 void read_csv(const char* filepath, float* input) 10 { 11 std::ifstream file(filepath); 12 std::string line; 13 if (file.is_open()) 14 { 15 std::getline(file, line); 16 for (int i = 0; i < 300; i++) ? ? ? 17? { ? ? ? ? ? ? 18 std::getline(file, line); ? ? ? ? ? ? 19 std::stringstream ss(line); ? ? ? ? ? ? 20 std::string field; ? ? ? ? ? 21? if (std::getline(ss, field, ',')) ? ? ? ? ? 22? { ? ? ? ? ? ? ? 23? if (std::getline(ss, field, ',')) ? ? ? ? ? ? ? ? 24 { ? ? ? ? ? ? ? ? ? ? 25 input[i] = std::stof(field); ? 26 ? ? ? ? ? ? ? } ? ? ? ? ? 27? } ? ? ? 28? } ? ? ? 29? file.close(); ? 30 } ? ? 31 float maxVal = *std::max_element(input, input + 300); 32? for (int i = 0; i < 300; i++) ? 33 { ? ? ? 34? input[i] /= maxVal; 35? } 36 } 37 std::vector softmax(std::vector input) 38 { 39 ? ? std::vector output(input.size()); ? 40? float sum = 0; ? ? 41 for (int i = 0; i < input.size(); i++) ? ? 42 { ? ? ? ? 43 output[i] = exp(input[i]); ? ? ? ? 44 sum += output[i]; ? ? 45 } ? ? 46 for (int i = 0; i < input.size(); i++) ? 47 { ? ? ? ? 48 output[i] /= sum; ? ? 49 } ? ? 50 return output; 51 } 52 void warmup(ov::InferRequest request) 53 { ? ? 54 std::vector inputData(length); ? 55 memcpy(request.get_input_tensor().data(), inputData.data(), length * sizeof(float)); ? ? 56 request.infer(); 57 } 58 int main() 59 { ? 60 const char* modelFile = "/home/up/openvino/AutoInjector_Transformer/AutoInjector_Transformer/2024-07-17-17-28-00_best_model.xml"; ? ? 61 const char* dirpath = "/home/up/openvino/AutoInjector_Transformer/AutoInjector_Transformer/data"; ? ? 62 const char* device = "GPU"; ? ? 63 std::vector inputs(length); ? ? 64 std::vector outputs(length * 4); ? ? 65 ov::Core core; ? 66? // Load Model 67? ? std::cout << "Loading Model" << std::endl; ? ? 68 auto start_load_model = std::chrono::high_resolution_clock::now(); 69? ? auto model = core.read_model(modelFile); ? ? 70 auto compiled_model = core.compile_model(model, device); ? 71? ov::InferRequest request = compiled_model.create_infer_request(); ? ? 72 std::cout << "Model Loaded, " << "time: " << std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - start_load_model).count() << "ms" << std::endl; ? ? 73 request.get_input_tensor().set_shape(std::vector{1, length}); ? ? 74 // Warmup ? ? 75 warmup(request); ? ? 76 for (auto& filename : std::filesystem::directory_iterator(dirpath)) ? ? 77 { ? ? ? ? 78 std::string pathObj = filename.path().string(); ? ? ? ? 79 const char* filepath = pathObj.c_str(); ? ? ? ? 80 std::cout << "Current File: " << filepath << std::endl; ? ? ? ? 81 // Read CSV ? ? ? ? 82 auto start = std::chrono::high_resolution_clock::now(); ? ? ? ? 83 read_csv(filepath, inputs.data()); ? ? ? 84? memcpy(request.get_input_tensor().data(), inputs.data(), length * sizeof(float)); ? ? ? ? 85 // Infer ? ? ? ? 86 request.infer(); ? ? ? ? 87 // Get Output Data ? ? ? ? 88 memcpy(outputs.data(), request.get_output_tensor().data(), length * sizeof(float) * 4); ? ? ? ? 89 // Softmax ? ? ? ? 90 std::vector softmax_results(length); ? ? ? ? 91 std::vector temp(4); ? ? ? ? 92 std::vector softmax_tmp(4); ? ? ? ? 93 for (int i = 0; i < length; i++) ? ? ? 94? { ? ? ? ? ? ? 95 for (int j = 0; j < 4; j++) ? ? ? ? ? 96? { ? ? ? ? ? ? ? 97 temp[j] = outputs[j * length + i]; ? ? ? ? ? 98? } ? ? ? ? ? ? 99 softmax_tmp = softmax(temp); ? ? ? ? ? ? 100 auto maxVal = std::max_element(softmax_tmp.begin(), softmax_tmp.end()); ? ? ? ? ? ? 101 auto maxIndex = std::distance(softmax_tmp.begin(), maxVal); ? ? ? ? ? ? 102 softmax_results[i] = maxIndex; ? ? ? ? 103 } ? ? ? ? 104 std::cout << "Infer time: " << std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - start).count() << "ms" << std::endl; 105 106? ? ? ? ? // Print outputs ? ? ? ? 107 for (int i = 0; i < length; i++) ? ? ? 108? { ? ? ? ? ? ? 109 std::cout << softmax_results[i] << " "; ? ? ? 110? } ? ? 111 } ? ? 112 return 0; 113 }

使用 cmake 進(jìn)行構(gòu)建,在 CMakeLists.txt 中指定變量 ${OpenVino_ROOT} 為前面解壓的 OpenVINO 壓縮包路徑:

1 cmake_minimum_required(VERSION 3.10.0) 2 3 project(AutoInjector_Transformer) 4 5 set(CMAKE_CXX_STANDARD 20) 6 set(CMAKE_CXX_STANDARD_REQUIRED ON) 7 set(OpenVino_ROOT /home/up/openvino/l_openvino_toolkit_ubuntu22_2024.3.0.16041.1e3b88e4e3f_x86_64/runtime) 8 set(OpenVINO_DIR ${OpenVino_ROOT}/cmake) 9 10 find_package(OpenVINO REQUIRED) 11 12 include_directories( 13 ${OpenVino_ROOT}/include 14 ${OpenVino_ROOT}/include/openvino 15 ) 16 17 link_directories( 18 ${OpenVino_ROOT}/lib 19 ${OpenVino_ROOT}/lib/intel64 20 ) 21 22 add_executable(AutoInjector_Transformer AutoInjector_Transformer.cpp) 23 target_link_libraries(AutoInjector_Transformer openvino)

然后 cmake 構(gòu)建項(xiàng)目:

1 mkdir build && cd build 2 cmake .. 3 make

wKgZomcJ2AaAa6ZGAAP66NDOA5Y092.png

然后運(yùn)行生成的可執(zhí)行文件:

wKgaomcJ2AaAWfODAAQNGh1gBJg693.png

可以看到,在 Intel iGPU 上的推理速度還是很快的,前幾次推理稍慢,8ms,后續(xù)基本穩(wěn)定在 4ms,這跟我之前在 RTX4060 GPU 上用 TensorRT 推理并沒有慢多少。然后我這里修改了代碼改為 CPU 運(yùn)行,重新編譯、運(yùn)行,結(jié)果在 Intel CPU 上的速度還要更快一點(diǎn)。

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

    關(guān)注

    90

    文章

    3709

    瀏覽量

    96821
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    6150

    瀏覽量

    113869
  • 開發(fā)教程
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    9623
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    117

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    這塊樂鑫科技ESP32-C3開發(fā)板太懂開發(fā)者了!雙無線+全接口,不要太實(shí)用

    做智能家居項(xiàng)目時(shí),開發(fā)板接口不夠用?調(diào)試工業(yè)傳感器時(shí),無線連接總是不穩(wěn)定?想快速驗(yàn)證創(chuàng)意,卻被復(fù)雜的燒錄流程耽誤半天時(shí)間?不要慌!真正懂開發(fā)者的物聯(lián)網(wǎng)開發(fā)板來了!WT9901C3-SN
    的頭像 發(fā)表于 12-01 18:02 ?421次閱讀
    這塊樂鑫科技ESP32-<b class='flag-5'>C</b>3<b class='flag-5'>開發(fā)板</b>太懂<b class='flag-5'>開發(fā)者</b>了!雙無線+全接口,不要太實(shí)用

    迅為iTOP-3568開發(fā)板?Linux驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn):menuconfig圖形化配置實(shí)驗(yàn)

    迅為iTOP-3568開發(fā)板?Linux驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn):menuconfig圖形化配置實(shí)驗(yàn)
    的頭像 發(fā)表于 11-24 15:29 ?552次閱讀
    迅為iTOP-3568<b class='flag-5'>開發(fā)板</b>?Linux驅(qū)動(dòng)<b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b>:menuconfig圖形化配置實(shí)驗(yàn)

    【獲獎(jiǎng)名單】2025開發(fā)板評(píng)測大賽優(yōu)秀開發(fā)者、最受歡迎開發(fā)板公布

    各位發(fā)燒友們,大家好!2025開發(fā)板試用評(píng)測大賽已圓滿落幕。經(jīng)過廠商與發(fā)燒友平臺(tái)的共同評(píng)選,優(yōu)秀作品及人選名單現(xiàn)已評(píng)選完成,共選出24位優(yōu)秀作品開發(fā)者,被評(píng)選上的用戶將獲得榮譽(yù)證書。各工程師參與完
    發(fā)表于 11-21 09:31

    迅為RK3568開發(fā)板模型推理測試實(shí)戰(zhàn)LPRNet?車牌識(shí)別

    迅為RK3568開發(fā)板模型推理測試實(shí)戰(zhàn)LPRNet 車牌識(shí)別
    的頭像 發(fā)表于 08-25 14:55 ?1084次閱讀
    迅為RK3568<b class='flag-5'>開發(fā)板</b><b class='flag-5'>模型</b><b class='flag-5'>推理</b>測試<b class='flag-5'>實(shí)戰(zhàn)</b>LPRNet?車牌識(shí)別

    啟揚(yáng)受邀參加2025瑞芯微開發(fā)者大會(huì)

    微戰(zhàn)略合作伙伴,受邀參加本次開發(fā)者大會(huì)。本次開發(fā)者大會(huì),啟揚(yáng)智能將攜全新發(fā)布的RK3576、RK3506開發(fā)板亮相。啟揚(yáng)RK3576開發(fā)板,搭載8核高性能處理器,
    的頭像 發(fā)表于 07-10 17:25 ?1091次閱讀
    啟揚(yáng)受邀參加2025瑞芯微<b class='flag-5'>開發(fā)者</b>大會(huì)

    68元撬動(dòng)智能硬件未來:SSD2351開發(fā)板如何重塑開發(fā)者生態(tài)?

    在物聯(lián)網(wǎng)、人工智能與智能硬件技術(shù)深度融合的今天,開發(fā)者對(duì)開發(fā)工具的需求已從“能用”進(jìn)化為“好用且高效”。傳統(tǒng)開發(fā)板往往陷入“高性能高成本”或“低成本低性能”的兩難困境,而明遠(yuǎn)智睿推出的SSD2351
    的頭像 發(fā)表于 06-27 15:06 ?1125次閱讀

    【免費(fèi)試用】開發(fā)板評(píng)測大賽開啟!OH 、RISC-V、Rockchip頂級(jí)開發(fā)板等你試用~

    技術(shù)人的狂歡,開發(fā)者的盛宴!2025年最值得期待的硬核賽事——電子發(fā)燒友開發(fā)板評(píng)測大賽正式啟動(dòng)!無論你是開源生態(tài)的探索、芯片架構(gòu)的極客,還是物聯(lián)網(wǎng)領(lǐng)域的創(chuàng)新達(dá)人,本次大賽三大賽
    的頭像 發(fā)表于 06-05 08:05 ?779次閱讀
    【免費(fèi)試用】<b class='flag-5'>開發(fā)板</b>評(píng)測大賽開啟!OH 、RISC-V、Rockchip頂級(jí)<b class='flag-5'>開發(fā)板</b>等你試用~

    開發(fā)板評(píng)測大賽開啟!頂級(jí)開發(fā)板等你來戰(zhàn)!

    技術(shù)人的狂歡,開發(fā)者的盛宴!2025年最值得期待的硬核賽事——電子發(fā)燒友開發(fā)板評(píng)測大賽正式啟動(dòng)!無論你是開源生態(tài)的探索、芯片架構(gòu)的極客,還是物聯(lián)網(wǎng)領(lǐng)
    的頭像 發(fā)表于 05-20 08:07 ?388次閱讀
    <b class='flag-5'>開發(fā)板</b>評(píng)測大賽開啟!頂級(jí)<b class='flag-5'>開發(fā)板</b>等你來戰(zhàn)!

    【米爾-STM32MP257開發(fā)板試用體驗(yàn)】初次體驗(yàn)米爾-STM32MP257開發(fā)板

    接口。 為了幫助開發(fā)者更好地理解與應(yīng)用STM32MP257D處理器和MYD-LD25X開發(fā)板,米爾將與ST在2025年1月7日和2025年1月10日分別于南京、北京聯(lián)合舉辦線下培訓(xùn)會(huì),培訓(xùn)會(huì)上將詳細(xì)介紹
    發(fā)表于 04-30 16:21

    創(chuàng)建了用于OpenVINO?推理的自定義C++和Python代碼,從C++代碼中獲得的結(jié)果與Python代碼不同是為什么?

    創(chuàng)建了用于OpenVINO?推理的自定義 C++ 和 Python* 代碼。 在兩個(gè)推理過程中使用相同的圖像和模型。 從
    發(fā)表于 03-06 06:22

    為什么無法在運(yùn)行時(shí)C++推理中讀取OpenVINO?模型?

    使用模型優(yōu)化器 2021.1 版OpenVINO?轉(zhuǎn)換模型 使用 Runtime 2022.3 版本在 C++ 推理實(shí)現(xiàn) ( core.r
    發(fā)表于 03-05 06:17

    RK3588開發(fā)板上部署DeepSeek-R1大模型的完整指南

    與OK3588-C開發(fā)板的深度融合,標(biāo)志著國產(chǎn)AI大模型從云端向邊緣端的延伸。這種“先進(jìn)算法+定制化芯片”的協(xié)同模式,不僅解決了邊緣側(cè)實(shí)時(shí)性、隱私保護(hù)等關(guān)鍵需求,更構(gòu)建起從技術(shù)研發(fā)到產(chǎn)業(yè)賦能的完整價(jià)值鏈條,為
    發(fā)表于 02-27 16:45

    添越智創(chuàng)基于 RK3588 開發(fā)板部署測試 DeepSeek 模型全攻略

    能精準(zhǔn)理解自然語言,生成高質(zhì)量文本,還免費(fèi)向全球開發(fā)者開放,極大地推動(dòng)了 AI 技術(shù)的普及與應(yīng)用,為無數(shù)開發(fā)者打開了全新的探索大門。今天,我們就一起深入探討如何在 RK3588 開發(fā)板
    發(fā)表于 02-14 17:42

    英特爾的開發(fā)板評(píng)測

    Linux系統(tǒng),測試比較方便,雖然Windows+Python代碼也可以開發(fā),搞點(diǎn)難度的Ubuntu+ ? ? 配置一下OpenVINO ,參考手冊(cè)。這個(gè)主要后面寫代碼和轉(zhuǎn)模型用。但是我用C+
    的頭像 發(fā)表于 01-24 09:37 ?1669次閱讀
    英特爾的<b class='flag-5'>開發(fā)板</b>評(píng)測

    基于英特爾開發(fā)板開發(fā)ROS應(yīng)用

    隨著智能機(jī)器人技術(shù)的快速發(fā)展,越來越多的研究開發(fā)者開始涉足這一充滿挑戰(zhàn)和機(jī)遇的領(lǐng)域。哪吒開發(fā)板,作為一款高性能的機(jī)器人開發(fā)平臺(tái),憑借其強(qiáng)
    的頭像 發(fā)表于 12-20 10:54 ?2223次閱讀
    基于英特爾<b class='flag-5'>開發(fā)板</b><b class='flag-5'>開發(fā)</b>ROS應(yīng)用