[TOC]
一、前言
用虚拟环境很久了,但是一直都是零零散散的写一些,没有汇总过,这篇博客将用来记录虚拟环境安装命令以及一些常见的问题及解决方案。
二、常见命令
2.1.查看虚拟环境可以安装的cuda,cudnn版本
conda search cudatoolkit
conda search cudnn
2.2.安装cuda和cudnn
conda install cudatoolkit==版本号
conda install cudnn
2.3.安装NCCL(多卡)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt install libnccl2=2.14.3-1+cuda11.7 libnccl-dev=2.14.3-1+cuda11.7
export LD_LIBRARY_PATH=/root/anaconda3/envs/rtdetr/lib # cuda所在的路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu # 添加默认nccl的安装路径
export NCCL_P2P_DISABLE=1 # 需要禁止GPU之间的直接点对点通信(P2P)
source ~/.bashrc
2.4.查看安装环境
conda env list
2.5.pip换源
2.5.1.临时换源
pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple
2.5.2.永久换源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 查看pip换的源
pip config list
2.6.conda换源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --set show_channel_urls yes
# 查看conda源
conda config --show channels
2.7.建立,删除虚拟环境
2.7.1.新建虚拟环境
conda create -n name python==版本
2.7.2.删除虚拟环境
conda remove -n name --all
三、常见问题
3.1.问题一
3.1.1.报错:Could not load dynamic library ‘libcusolver.so.10’
在安装tensorflow2.4.0,安装cuda11.2以及cudnn版本运行tf.test.gpu_is_available(),报错找不到libcusolver.so.10.
3.1.2.原因
主要原因在于cuda11.2与tensorflow2.4.0不匹配(tensorflow与cuda版本查看)
3.1.3.解决方法
-
(1)建立硬连接
需要先运行命令找到是否存在libcusolver.so.11
sudo find / -name 'libcusolver.so.11'
再cd到这个目录运行以下命令建立硬连接
sudo ln libcusolver.so.11 libcusolver.so.10
其实软硬连接应该都行,软链接可以看作是快捷方式,硬链接可以看作是同一份文件
-
(2)重新安装cuda11.0
可以先卸载掉原有cuda再安装cuda11.0
conda search cudatoolkit # 查看可以安装的cuda版本 conda install cudatoolkit==版本号 # 例如:conda install cudatoolkit==11.0.2
-
(3)重新安装cuda11.2对应的tensorflow版本
卸载原有tensorflow,安装适合cuda11.2.的版本
conda uninstall tensorflow conda install tensorflow-gpu==版本号 # 例如:conda install tensorflow-gpu==2.5.0
3.2.问题二
3.2.1.问题
运行nvidia-smi报错Failed to initialize NVML: Driver/library version mismatch NVML library version: 545.29
3.2.2.原因
一般是驱动更新导致驱动版本与cuda内核Kernel Module不匹配,我这里是因为更新服务器宿主机驱动,所以也需要更新虚拟机的驱动
可以重新安装驱动,例如
wgwt https://us.download.nvidia.cn/XFree86/Linux-x86_64/550.54.14/NVIDIA-Linux-x86_64-550.54.14.run
chmod +x NVIDIA-Linux-x86_64-550.54.14.run
sudo ./NVIDIA-Linux-x86_64-550.54.14.run --no-kernel-module