問題背景:這段時間抽空在自學paddle框架,自己的筆記本系統是ubuntu20.4的,本身自己安裝好了cuda11.8跟cudnn9.5.1,然後用conda創建了一個paddle的虛擬環境,安裝了paddle2.6,根據官網文檔其實很簡單,但是有坑!!!所以我才説明了cudnn版本號。
根據官方文檔只需要一條指令安裝就好,非常簡單:

安裝后測試導入以及驗證是否能調用gpu結果均正常。

然後找了個代碼開始嘗試訓練模型。(坑來了!)
剛開始跑第一輪訓練,報錯了,報錯内容如下:
----------------------
Error Message Summary:
----------------------
FatalError: `Segmentation fault` is detected by the operating system.
[TimeInfo: *** Aborted at 1735545694 (unix time) try "date -d @1735545694" if you are using GNU date ***]
[SignalInfo: *** SIGSEGV (@0x0) received by PID 26643 (TID 0x7fd5d984f180) from PID 0 ***]
Segmentation fault (core dumped)
查了很久,最後在overflow的一條評論中發現他說他的cudnn版本不太對,重裝就好了,但沒有說什麽版本號,我就開始查paddle官網,在安裝指令下面往下拉,最後發現這個東西。

好了,現在有個新方向:重裝cudnn,麻煩死了,我cuda跟cudnn全部卸載了(conda的虛擬環境我也刪了,重新創建並安裝paddle,安裝指令還是按照官網提供的那條指令就好)。
#先刪cuda
sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
sudo apt-get autoremove --purge -V
cd /usr/local/
# 如果有cuda等文件,如果有,就删掉。
sudo rm -rf /usr/local/cuda*
#查看cudnn位置
sudo dpkg -l | grep cudnn
# 然後一個個刪(我自己的刪除的時候沒有截圖,找了別人的出來,一樣的用指令刪就行)
sudo dpkg -r libcudnn8-samples
sudo dpkg -r libcudnn8-dev
sudo dpkg -r libcudnn8
sudo apt-get purge cudnn-local-repo-ubuntu2004-8.9.5.29
#刪除記得再次查詢是否還有cudnn
好了,開始裝cuda11.8,cudnn8.6.0
访问NVIDIA官方网站:
https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=runfile_local
选择正确的操作系统、发行版和架构,然后下载对应版本的CUDA Toolkit,个人选择的是.run版,然后根据下方方官方给的命令一步步来,比较省事。
安装CUDA Toolkit。可以按照官方文档提供的步骤进行安装,通常包括运行安装脚本
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
设置环境变量
在 ~/.bashrc 文件中添加以下行,然后执行 source ~/.bashrc:
编辑配置文件
sudo vim ~/.bashrc
# 添加以下两行(注意我的cuda版本是11.8,根据自己的版本来):
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 激活配置环境
source ~/.bashrc
# 驗證cuda版本
nvcc --version

安裝cudnn:https://developer.nvidia.com/rdp/cudnn-archive
# 解壓
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_amd64.deb
# 導入密鑰
sudo cp /var/cudnn-local-repo-ubuntu2004-8.6.0.163/cudnn-local-B0FE0A41-keyring.gpg /usr/share/keyrings/
# 更新軟連接
sudo apt-get update
# 安裝這幾個依賴包
sudo apt-get install libcudnn8=8.6.0.163-1+cuda11.8
sudo apt-get install libcudnn8-dev=8.6.0.163-1+cuda11.8
sudo apt-get install libcudnn8-samples=8.6.0.163-1+cuda11.8
#驗證安裝是否成功,查看版本號
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
# 但每個人的版本號文件不一定是上面地址,先查詢版本文件在哪
sudo find /usr/local/ -name cudnn_version.h
# 將查到的地址換到下面的指令去就可以看到了
cat /正确的/路径/to/cudnn_version.h | grep CUDNN_MAJOR -A 2
經過以上,代碼終於能正常訓練了,感覺是個坑,自己做個筆記吧,以後多留點心眼,多看看┭┮﹏┭┮
3万+

被折叠的 条评论
为什么被折叠?



