【sherpa-onnx 問題解決思路】 libcublasLt.so.11: cannot open s

更新於 發佈於 閱讀時間約 12 分鐘
raw-image


我們在「【語音辨識引擎sherpa-onnx GPU下篇】讓您體驗更快的語音辨識功能」建置環境的過程中預到了這樣的錯誤訊息:

RuntimeError: /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:
1209 onnxruntime::Provider& onnxruntime::ProviderLibrary::
Get() [ONNXRuntimeError] : 1 : FAIL :
Failed to load library libonnxruntime_providers_cuda.so with error:
libcublasLt.so.11: cannot open shared object file: No such file or directory


原本以為架構在Docker之上進行安裝會非常的順利, 結果沒想到卻遇到了這樣的插曲…, 不過沒關係, 遇到問題我們就是解決問題, 過程中也不斷精進我們的問題解決能力, 希望透過我們的思路分享讓各位朋友也能有所啟發, 甚至您有更好的解決思路也都歡迎下方留言, 讓我們共同交流想法, 激盪出全新的解決方案。


這次的問題解決思路我們會加上AI的輔助, 我們也送給您幾個實用的工具進行使用, 讓我們排除障礙的效率更上一層樓。


前情提要

我們原先使用「nvidia/cuda:12.2.2-cudnn8-devel-ubuntu22.04」這個Docker Image來進行建置的作業, 內容大致如下:


FROM nvidia/cuda:12.2.2-cudnn8-devel-ubuntu22.04

SHELL ["/bin/bash", "-c"]

# 以下兩行很重要,否則會在 tzdata config 的時候卡住。
ENV TZ=Asia/Taipei

# 以下這一行,是為了 cmake 在運作時,能取得 cuda 相關的 share library,
ENV LD_LIBRARY_PATH /usr/lib/x86_64-linux-gnu:/usr/local/cuda-12.2/compat:/usr/local/cuda/lib64/stubs:$LD_LIBRARY_PATH

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# update to fast mirror site
RUN sed -i -E 's/archive\\.ubuntu\\.com/free\\.nchc\\.org\\.tw/g' /etc/apt/sources.list

# install normal source
RUN apt-get update && \\
apt-get install -y --no-install-recommends \\
automake \\
autoconf \\
gfortran \\
gcc \\
g++ \\
git \\
libtool \\
libssl-dev \\
zlib1g-dev \\
python3 \\
python3-dev \\
python3-pip \\
python-is-python3

WORKDIR /app

RUN pip install cmake

RUN git clone <https://github.com/k2-fsa/sherpa-onnx.git> && \\
export SHERPA_ONNX_CMAKE_ARGS="-DSHERPA_ONNX_ENABLE_GPU=ON" && \\
cd sherpa-onnx && \\
python3 setup.py install

RUN pip install numpy websockets



🔍 找尋可能原因

ChatGPT幫我們找方向

Q: 請問以下的錯誤訊息可能是什麼原因?
A: ....

Q: 幫我重點整理, 簡化一些
A:
當您看到這個錯誤訊息時,通常表示系統缺少 CUDA 相關的庫文件,特別是 libcublasLt.so.11
解決方法包括確保正確安裝 CUDA,設置好 LD_LIBRARY_PATH 環境變數,
以及檢查是否缺少其他必要的 CUDA 套件。

看起來可能是cuda版本問題, 接下來我們就精準一點搜尋一番。


Github上的Issue

第一步當然要找到最源頭, 而sherpa-onnx正好將程式碼開源在Github上, 當然也有許多討論都會在上面進行, 因此我們直觀的作法就是搜尋問題的關鍵字「libcublasLt.so.11」, 我們會發現有底下幾條Issue在討論:


Google

我們直接給它更多完整的錯誤訊息。

Failed to load library libonnxruntime_providers_cuda.so with error:
libcublasLt.so.11: cannot open shared object file: No such file or director

這邊一樣整理出幾個可能的原因:

以上這兩種方法都會耗費我們許多精神在閱讀文章跟理解, 難道就沒有更快的吸收知識技巧嗎? 不! 當然有, 只是我們還沒想到可以怎麼用而已, 相信ChatGPT在大家耳中已經非常熟悉了吧! 那我們底下就會實際使用底下的工具來進行知識的重點整理, 並且透過一些小技巧來互相比對結果, 畢竟我們不能總是相信AI, 除非它足夠準。


💪 借用外力 - NotebookLM

NotebookLMChatgpt/Gemini不同的是它可以參考外部資料來源, 可以讓回答的範圍更加限縮, 避免太過廣泛的知識導致回應錯誤。

首先我們將上面蒐集到的討論連結都喂給NotebookLM

raw-image
raw-image


當我們給予可能的討論清單之後, 接下來就可以開始問問題了

🤔 開始問, 我們把自己的問題盡量問的精確一點,這樣才容易找出我們需要的答案 :

請問我遇到以下的錯誤訊息, 可能會是什麼原因? (請給我繁體中文的回答)

Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.11: cannot open shared object file: No such file or director


🎯 回答:

根據提供的資訊, 發生錯誤「Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.11: cannot open shared object file: No such file or director」的原因可能是因為 libcublasLt.so.11 檔案版本不符。
錯誤分析
從錯誤訊息「libcublasLt.so.11: cannot open shared object file: No such file or director」可以看出,系統找不到 libcublasLt.so.11 這個檔案。
可能原因
這個錯誤可能是因為系統上的 CUDA 版本與 onnxruntime-gpu 所需的版本不符所導致。 onnxruntime-gpu 1.16.1 版本僅支援到 CUDA 11.8,如果系統上的 CUDA 版本高於 11.8,就會發生這個錯誤。
解決方案
要解決這個問題,可以嘗試以下幾個方法:●
確認 CUDA 版本: 使用 nvcc -V 指令確認系統上的 CUDA 版本。 如果版本高於 11.8,則需要降級 CUDA 版本至 11.8 或更低。●
安裝正確版本的 libcublasLt.so.11 檔案: 確認系統上安裝的 CUDA 版本,並找到對應版本的 libcublasLt.so.11 檔案,並將其所在目錄加入環境變數。
其他資訊
根據提供的內容, 還可以了解到以下資訊:●
在安裝或使用 sherpa-onnx 時,可能會遇到與 libonnxruntime_providers_cuda.so 檔案的路徑或相依性有關的問題。●
如果使用的是 onnxruntime 1.17.1 版本,則需要使用 cudatoolkit 11.8。●
如果使用的是 onnxruntime 1.16 版本以上,則需要 glibc 版本高於 2.17
注意事項
以上資訊僅供參考,實際情況可能有所不同。建議您參考相關軟體的官方文件或搜尋相關資訊,以獲得更準確的解答。



以人為本: 決策與重點歸納

科技始終於人性, 畢竟這些討論串都是來自於我們人類的腦中吸收判斷後進行輸出, 因此最終還是要回到我們「人」身上, AI可以幫助我們快速的定位問題, 加速整體流程, 達到人機協作的最高效率, 但我們還是要對自己負責進行決策。


綜合上面的資訊, 我們可以歸納出這個問題的可能原因與方向:

  • onnxruntime與cuda版本不相容: 找版本對應表。
  • onnxruntime升版可能性。
  • cuda降版可能性。


上面幾個問題, 我們其實可以選擇繼續問NotebookLM或者自行搜尋都可以, 這沒有標準答案, 取決於我們的習慣, 相信您有一天也會玩出屬於自己的一套邏輯, 如果有更聰明的方法歡迎下方留言告訴我, 讓我們一起學習成長。


這裡我們就附上版本對應表的連結, 歡迎自行取用: https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html


我們試著搜尋一下so檔:

find / -name libcublasLt.so*


發現到找出來的都是 libcublasLt.so.12而不是11版, 因此更加確定了我們先前所推測出的答案了。

/usr/local/cuda-12.2/targets/x86_64-linux/lib/stubs/libcublasLt.so
/usr/local/cuda-12.2/targets/x86_64-linux/lib/libcublasLt.so
/usr/local/cuda-12.2/targets/x86_64-linux/lib/libcublasLt.so.12
/usr/local/cuda-12.2/targets/x86_64-linux/lib/libcublasLt.so.12.2.5.6



✅ 最終解決方法

由於我們在sherpa-onnx的專案在2024/06/27為止僅支援到cuda 11, 因此我們的Docker image勢必先降降版才能正常運作, 待onnxruntime升級之後我們再將cuda也跟著升級才是根本解決之道, 雖然我們可以強升onnxruntime, 但很難確保是否會發生更多問題, 所以最好還是配合人家所規範的版本。


Dockerfile內容…

FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04

...



結語

人機協作已然成為目前的趨勢, 我們要學會善用AI來提高我們的效率才不會被淘汰, 因此遇到問題我們不要害怕, 試著用新方法、新工具來試圖解決吧!


更多關於sherpa-onnx語音辨識引擎的教學歡迎至「🔒 阿Han的軟體心法實戰營 - 🎧語音辨識引擎」。

留言
avatar-img
留言分享你的想法!
阿Han-avatar-img
發文者
2024/08/17
是的 善用工具讓我們更具價值
Peter Lu-avatar-img
2024/08/14
AI不會淘汰軟體工程師,會淘汰不會使用AI的軟體工程師XD
avatar-img
阿Han的沙龍
131會員
289內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2025/04/23
我們在「【🤖 cursor AI】如何在ubuntu 24.04安裝」有分享如何在Ubuntu安裝cursro這套AI編輯器, 使用起來大幅度的提昇開發效率, 但仍有些問題點需要克服, 比如說: LLM壓根不知道我們的數據庫長怎樣啊? 怎麼分析結構呢? 假設文檔又不足的狀況下更是艱辛, 如果LLM
Thumbnail
2025/04/23
我們在「【🤖 cursor AI】如何在ubuntu 24.04安裝」有分享如何在Ubuntu安裝cursro這套AI編輯器, 使用起來大幅度的提昇開發效率, 但仍有些問題點需要克服, 比如說: LLM壓根不知道我們的數據庫長怎樣啊? 怎麼分析結構呢? 假設文檔又不足的狀況下更是艱辛, 如果LLM
Thumbnail
2025/03/12
我們在「【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務」分享了語音合成技術, 該套GPT-SoVITS也非常的出色, 但效能有點不是非常理想, 加上需要GPU才能達到較佳的體驗, 如此一來成本就會有點高了, 因此我們找了另外一套MeloTTS, 這一套強調CPU推理非常的快!
Thumbnail
2025/03/12
我們在「【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務」分享了語音合成技術, 該套GPT-SoVITS也非常的出色, 但效能有點不是非常理想, 加上需要GPU才能達到較佳的體驗, 如此一來成本就會有點高了, 因此我們找了另外一套MeloTTS, 這一套強調CPU推理非常的快!
Thumbnail
2025/03/05
我們在「【語音合成技術 - GPT-SoVITS】如何架設API伺服器」分享如何架設API V3版本的TTS服務, 但發音的部份似乎只有早期的API版本才使用到g2pw這類的技術, 因此我們可能會需要將API退回舊版, 在這裡我們也整理了早期版本api與api_v2的一些差異, 期望幫助到正在面臨選
Thumbnail
2025/03/05
我們在「【語音合成技術 - GPT-SoVITS】如何架設API伺服器」分享如何架設API V3版本的TTS服務, 但發音的部份似乎只有早期的API版本才使用到g2pw這類的技術, 因此我們可能會需要將API退回舊版, 在這裡我們也整理了早期版本api與api_v2的一些差異, 期望幫助到正在面臨選
Thumbnail
看更多
你可能也想看
Thumbnail
我們在「【語音辨識引擎sherpa-onnx GPU下篇】讓您體驗更快的語音辨識功能」建置環境的過程中預到了這樣的錯誤訊息: RuntimeError: /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc: 1209
Thumbnail
我們在「【語音辨識引擎sherpa-onnx GPU下篇】讓您體驗更快的語音辨識功能」建置環境的過程中預到了這樣的錯誤訊息: RuntimeError: /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc: 1209
Thumbnail
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
牽涉到的工具:wsl2 + anaconda + jupyter-nootbook
Thumbnail
牽涉到的工具:wsl2 + anaconda + jupyter-nootbook
Thumbnail
上集回顧 上集我們提到「【語音辨識引擎sherpa-onnx CPU上篇】讓您輕鬆體驗語音辨識功能(Docker架設)」, 相信大家對於sherpa-onnx具備一定的基本概念並學會如何架設了吧! 如果還不會的兄弟姊妹們別擔心, 歡迎底下留言, 我們會盡量的協助您直到學會為止, 那麼雖然CPU版本
Thumbnail
上集回顧 上集我們提到「【語音辨識引擎sherpa-onnx CPU上篇】讓您輕鬆體驗語音辨識功能(Docker架設)」, 相信大家對於sherpa-onnx具備一定的基本概念並學會如何架設了吧! 如果還不會的兄弟姊妹們別擔心, 歡迎底下留言, 我們會盡量的協助您直到學會為止, 那麼雖然CPU版本
Thumbnail
R036 Blog API 伺服器的維護更新日誌 (2024/04/30) 開發環境技術 語言: Javascript 環境: Node JS 框架: Express.js 本次維護目的 優化及測試API伺服器程運行 重溫程式碼架構以便日後更新優化 Reac
Thumbnail
R036 Blog API 伺服器的維護更新日誌 (2024/04/30) 開發環境技術 語言: Javascript 環境: Node JS 框架: Express.js 本次維護目的 優化及測試API伺服器程運行 重溫程式碼架構以便日後更新優化 Reac
Thumbnail
搜尋.......支援的driver: apt search nvidia-drive 最新支援到545,我們來裝545好了(通常我會選擇前一版,我也建議選前一版,像是python12 我們就選python11) sudo apt install nvidia-driver-545 sudo
Thumbnail
搜尋.......支援的driver: apt search nvidia-drive 最新支援到545,我們來裝545好了(通常我會選擇前一版,我也建議選前一版,像是python12 我們就選python11) sudo apt install nvidia-driver-545 sudo
Thumbnail
這篇文章將分享最近遇到 NVIDIA GPU driver 的問題,並提供瞭解決步驟,以及證實問題解決的測試方法。當您遇到類似問題時,可以參考這篇文章進行解決。文章中包含了定位庫文件目錄、備份和替換文件以及測試修改的步驟。
Thumbnail
這篇文章將分享最近遇到 NVIDIA GPU driver 的問題,並提供瞭解決步驟,以及證實問題解決的測試方法。當您遇到類似問題時,可以參考這篇文章進行解決。文章中包含了定位庫文件目錄、備份和替換文件以及測試修改的步驟。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News