Jetson Orin 安裝 onnxruntime

Jetson Orin 安裝 onnxruntime

onnxruntime在Jetson上安裝只需注意三件事: 版本! 版本! 還是TMD版本!

本機環境

  • Jectpack : 5.1.2
  • CUDA : 11.4
  • cuDNN :8.6.0
    在這里插入圖片描述

版本說明

關于onnxruntime的版本適配不同的官方有不同的推薦

  • 英偉達jetson zoo提供了onnxruntime的預編譯版本,版本號是根據Jetpack的版本號來選擇onnxruntime,這里推薦的是1.17.0和1.18.0
    在這里插入圖片描述
  • onnxruntime官方是根據CUDA版本推薦的,這里推薦的是1.11和1.12

這里二者推薦的版本很矛盾,因此綜上所述,我們選擇的版本是1.16.0 😃 因為前面幾個版本測試安裝都有問題

1、安裝準備

Jetson zoo雖然有onnxruntime的預編譯版本,但是是python版本的,沒有c++部署需要的頭文件和動態庫,所以推薦源碼安裝編譯。
首先需要臨時聲明一些環境變量

sudo apt-get install protobuf-compiler libprotoc-devexport PATH=/usr/local/cuda/bin:${PATH}
export CUDA_PATH=/usr/local/cuda
export cuDNN_PATH=/usr/lib/aarch64-linux-gnu
export CMAKE_ARGS="-DONNX_CUSTOM_PROTOC_EXECUTABLE=/usr/bin/protoc"

2、源碼下載

源碼下載,最好直接用git clone,而不是去github下載對應版本的程序,因為build.sh好像需要git的倉庫,為了不必要的麻煩直接gitclone

git clone --recursive https://github.com/Microsoft/onnxruntime.git   

--recursive 遞歸子庫
切換版本號

git checkout v1.16.0

更新子倉庫

git submodule update --init --recursive --progress

NOTICE1:
這一步可能會遇到如下錯誤
does not match expected value
expected: ‘ee201b07085203ea7bd8eb97cbcb31b07cfa3efb’
actual: ‘5b3adeb17e87b1a6f6a716b2c462f44b5aa01713’
– Hash mismatch, removing…
導致程序卡在eigen這個庫反復下載
在這里插入圖片描述
出現此問題的原因是git下來的eigen庫哈希值與期望的哈希值不一致,即使手動下載此庫也會這樣。目前不清楚expected的哈希值為什么與給出鏈接的不同,可能是版本問題。
找到 ./onnxruntime/cmake/external路徑下的eigen.cmake文件,在文件開始強制修改期望的哈希值為下載的版本,這里舉例我的是

set(DEP_SHA1_eigen "5b3adeb17e87b1a6f6a716b2c462f44b5aa01713")

NOTICE2:
可能會遇到這個錯誤,由于丟失記不清哪個錯誤了,總之就會卡住一會,網絡錯誤,多試幾遍就好
ontent.cmake:2145:EVAL:2 (__FetchContent_doPopulation) /usr/local/cmake/share/cmake-3.31/Modules/FetchContent.cmake:2145 (cmake_language) /usr/local/cmake/share/cmake-3.31/Modules/FetchContent.cmake:1978:EVAL:1 (__FetchContent_Populate) /usr/local/cmake/share/cmake-3.31/Modules/FetchContent.cmake:1978 (cmake_language) external/eigen.cmake:12 (FetchContent_Populate) external/onnxruntime_external_deps.cmake:483 (include) CMakeLists.txt:586 (include) -

3、編譯

cd ./onnnxruntime
./build.sh --config Release --update --build --parallel --build_shared_lib --build_wheel --use_cuda --cuda_home /usr/local/cuda --cudnn_home /usr/lib/aarch64-linux-gnu

--build_shared_lib生成動態庫 --use_cuda使用cuda --parallel多線程編譯

編譯完成標志

...
build [INFO] - Build complete

在這里插入圖片描述

4、安裝

cd ./build/Linux/Release
sudo make install

在這里插入圖片描述
安裝完成后 動態庫 libonnxruntime.so/usr/local/lib
頭文件在/usr/local/include/onnxruntime

5、異常分析

  • ImportError: cannot import name ‘FileError’ from ‘setuptools.errors’
    在這里插入圖片描述
    遇到這個問題可能是setuptools版本問題,檢查更新并安裝依賴庫
    python3 -m venv onnxruntime-env
    source onnxruntime-env/bin/activate
    pip install --upgrade pip setuptools
    pip install -r /mnt/cf/wk_test/onnxruntime/requirements.txt
    
    然后重新編譯

5、其他版本

隨手記錄下其他版本安裝中遇到的問題,以供參考和復盤

  • v1.17.0 / v1.18.0
    首先報錯
CMake Error at CMakeLists.txt:647 (message): The compiler doesn't support BFLOAT16!!! 

此報錯為gcc-9版本不支持BFLOAT16類型,需要升級到gcc-10版本

然后遇到報錯

error: This file was generated by an older version of protoc which is incompatible with your Protocol Buffer headers.  

這個錯誤是在編譯時源碼報的錯,錯誤表明 ?Protocol Buffer(protoc)版本不兼容?,導致生成的 onnx-ml.pb.h 文件與當前系統安裝的 protobuf 頭文件沖突,直接放棄

  • v1.16.3
    1.16.3在編譯時可以通過,但是在編譯后的test測試會報錯
----------] Global test environment tear-down [==========] 4119 tests from 289 test suites ran. (344132 ms total)[ PASSED ] 4110 tests. 
[ SKIPPED ] 6 tests, listed below: 
[ SKIPPED ] AttentionTest.AttentionPastState_dynamic [ SKIPPED ] AttentionTest.Attention_Mask2D_Fp32_B2_S32 
[ SKIPPED ] AttentionTest.Attention_Mask1D_Fp32_B2_S64 [ SKIPPED ] AttentionTest.Attention_NoMask_Fp16[ SKIPPED ] MatMulFpQ4.MatMul2DSym [ SKIPPED ] MatMulFpQ4.MatMul2DBlkZp[ FAILED ] 3 tests, listed below: 
[ FAILED ] MultiHeadAttentionTest.CrossAttention_Batch2_HeadSize32_NoBias_NoMask_PackedKV 
[ FAILED ] MultiHeadAttentionTest.SelfAttention_Batch2_HeadSize32_NoBias_NoMask_PackedQKV 
[ FAILED ] QuantizeLinearOpMLFloat16Test.Float8 3FAILED TESTS YOU HAVE 9 DISABLED TESTS <end of output> Test time = 344.85 sec ---------------------------------------------------------- Test Failed. "onnxruntime_test_all"

搜索后可能是注意力機制和量化模塊有問題,解決了之后又報

packed KV format is not implemented for current GPU. Please disable packed kv in fusion options?

此問題屬于 ONNX Runtime 對特定 GPU 架構的算子支持不完整,因此放棄了此版本。

  • v1.12.0
    編譯時總是遇到 undefined reference to `libiconv_close’ 這個錯誤,但是已經安裝了libiconv庫,并且export臨時聲明了庫的地址,試過了很多方法還是報錯,放棄。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71688.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71688.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71688.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Manus AI : Agent 元年開啟.pdf

Manus AI : Agent 元年開啟.pdf 是由華泰證券出品的一份調研報告&#xff0c;共計23頁。報告詳細介紹了Manus AI 及 Agent&#xff0c;主要包括Manus AI 的功能、優勢、技術能力&#xff0c;Agent 的概念、架構、應用場景&#xff0c;以及 AI Agent 的類型和相關案例&#xff0…

【為什么會有 map、weakmap 類型?】

為什么會有 map、weakmap 類型? 傳統對象的局限性催生 Map?1. 鍵類型單一性?2. 有序性與迭代支持?3. 性能優化場景? 內存管理需求催生 WeakMap?1.弱引用機制?2. 私有數據存儲?3. 規避循環引用問題? 總結 傳統對象的局限性催生 Map? 1. 鍵類型單一性? 傳統對象&…

SpringSecurity認證授權完整流程

SpringSecurity認證流程&#xff1a;loadUserByUsername&#xff08;&#xff09;方法內部實現。 實現步驟&#xff1a; 構建一個自定義的service接口&#xff0c;實現SpringSecurity的UserDetailService接口。建一個service實現類&#xff0c;實現此loadUserByUsername方法。…

本地部署DeepSeek R1大數據模型知識庫

DeepSeek-V3 的綜合能力 DeepSeek-V3 在推理速度上相較歷史模型有了大幅提升。在目前大模型主流榜單中&#xff0c;DeepSeek-V3 在開源模型中位列榜首&#xff0c;與世界上最先進OpenAI 閉源模型不分伯仲。 1、下載Ollama運行大數據庫 Ollama支持 Llama 3.3, DeepSeek-R1, Phi-…

云端秘境:EC2的奇幻之旅

在一個神秘的云端世界里&#xff0c;流傳著一個傳說——只要掌握了 EC2&#xff08;Elastic Compute Cloud&#xff09; 的奧秘&#xff0c;就能召喚出強大的騎士軍團&#xff0c;在云端之上建造屬于自己的帝國。年輕的程序法師 艾倫&#xff08;Allen&#xff09;&#xff0c;…

【javaEE】多線程(基礎)

1.????前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 親愛的朋友們&#x1f44b;&#x1f44b;&#xff0c;這里是E綿綿呀????。 如果你喜歡這篇文章&#xff0c;請別吝嗇你的點贊????和收藏&#x1f4d6;&#x1f4d6;。如果你對我的…

一周學會Flask3 Python Web開發-WTForms表單驗證

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程&#xff1a; 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 我們可以通過WTForms表單類屬性的validators屬性來實現表單驗證。 常用的WTForms驗證器 驗證器說明DataRequired(messageNo…

STM32標準庫代碼詳解之GPIO

GPIO的初始化代碼如下&#xff1a; /*開啟時鐘*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //開啟GPIOA的時鐘&#xff0c;使用外設必須開啟/*GPIO初始化*/ GPIO_InitTypeDef GPIO_InitStructure; //定義結構體變量 GPIO_InitStructure.GPIO_Mode GPIO_Mo…

華為歐拉系統 Tomcat 安裝詳解

1. 安裝或確認安裝 Java Tomcat 需要 Java 環境(JDK 或 JRE)才能運行。如果系統尚未安裝 Java,可以使用以下命令安裝 OpenJDK: # 更新軟件包索引 yum update -y# 安裝 OpenJDK 21(可根據需求安裝其他版本,如 8、11、17 等) yum install -y java-21-openjdk java-21-op…

第六課:數據庫集成:MongoDB與Mongoose技術應用

本文詳細介紹了如何在Node.js應用程序中集成MongoDB數據庫&#xff0c;并使用Mongoose庫進行數據操作。我們將涵蓋MongoDB在Ubuntu 20系統中的安裝、Bash命令的CRUD操作、Mongoose數據建模&#xff08;Schema/Model&#xff09;、關聯查詢與聚合管道&#xff0c;以及實戰案例—…

大數據學習(56)-Impala

&&大數據學習&& &#x1f525;系列專欄&#xff1a; &#x1f451;哲學語錄: 承認自己的無知&#xff0c;乃是開啟智慧的大門 &#x1f496;如果覺得博主的文章還不錯的話&#xff0c;請點贊&#x1f44d;收藏??留言&#x1f4dd;支持一下博主哦&#x1f91…

【C#】async與await介紹

1. 實例1 1.1 代碼 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp1 {class Program{static void Main(string[] args){Method1();Method2();Console.ReadKey();}public static…

【大模型基礎_毛玉仁】1.1 基于統計方法的語言模型

【大模型基礎_毛玉仁】1.1 基于統計方法的語言模型 1.語言模型基礎1.1 基于統計方法的語言模型1.1.1 n-grams 語言模型1.1.2 n-grams 的統計學原理 1.語言模型基礎 語言是概率的。語言模型&#xff08;LanguageModels, LMs&#xff09;旨在準確預測語言符號的概率。 將按照語…

JavaScript(最后一個元素的索引就是數組的長度減 1)array.length - 1

在不同的編程語言中&#xff0c;表示數組中最后一個元素的方法略有不同&#xff0c;但基本思路都是利用數組的長度或索引來實現。 以下是一些常見編程語言中獲取數組最后一個元素的方法&#xff1a; 1. JavaScript: 使用 array.length - 1 索引: 這是最常見和傳統的方法。Java…

SpringCloud中使用服務名調用場景總結

一 API Gateway 在 Spring Cloud API Gateway 中&#xff0c;通過使用 lb:// 前綴可以實現基于服務名的負載均衡路由。以下是具體的配置和使用方法&#xff1a; 1. 配置服務注冊與發現 確保你的服務已經注冊到服務注冊中心&#xff08;如 Nacos 或 Eureka&#xff09;。API …

7V 至 30V 的超寬 VIN 輸入范圍,轉換效率高達 96%的WD5030

WD5030 具備 7V 至 30V 的超寬 VIN 輸入范圍&#xff0c;這一特性使其能夠適應多種不同電壓等級的供電環境&#xff0c;無論是在工業設備中常見的較高電壓輸入&#xff0c;還是在一些便攜式設備經過初步升壓后的電壓&#xff0c;WD5030 都能輕松應對&#xff0c;極大地拓展了應…

深度學習模型Transformer核心組件—自注意力機制

第一章&#xff1a;人工智能之不同數據類型及其特點梳理 第二章&#xff1a;自然語言處理(NLP)&#xff1a;文本向量化從文字到數字的原理 第三章&#xff1a;循環神經網絡RNN&#xff1a;理解 RNN的工作機制與應用場景(附代碼) 第四章&#xff1a;循環神經網絡RNN、LSTM以及GR…

利用Ollama+AnythingLLM+本地向量數據庫Milvus+本地DeepSeek大模型實現知識庫的搭建

1. Ollama的搭建 基本介紹 Ollama是一個支持在Windows、Linux和MacOS上本地運行大語言模型的工具。它允許用戶非常方便地運行和使用各種大語言模型,比如Qwen模型等。用戶只需一行命令就可以啟動模型。 Ollama 下載&#xff1a;https://ollama.com/download Ollama 官方主頁&a…

如何搭建個人靜態住宅IP:從零開始

你好&#xff01;今天我們將一起探索如何從頭開始搭建個人靜態住宅IP。無論您是為了遠程辦公、在線教育還是游戲加速&#xff0c;靜態住宅IP都能帶給您更穩定的網絡體驗。 一、準備階段 1. 明確需求 首先&#xff0c;您需要清楚自己為什么需要靜態住宅IP。可能是為了實現遠程…

國產編輯器EverEdit - 安裝擴展功能的方式

1 擴展管理 1.1 應用場景 由于各行各業工作場景的不同&#xff0c;編輯器不可能為所有行業都定制功能&#xff0c;因此&#xff0c;對于一些特殊的行業應用場景&#xff0c;某些資深工程師可能已經做了一些擴展&#xff0c;并分享到了共享平臺&#xff0c;普通工程師可以安裝這…