首先,先了解怎么在容器里面使用nvidia的GPU,就要看看容器所在的wsl下的ubuntu是否能使用GPU,输入
nvidia-smi
显示无果 nvidia在wsl都检测不了驱动,去了解了一些,原来是宿主机(windows)下的驱动太老,需要更新,需要新的cuda驱动CUDA driver for WSL
我参考的博文下文链接:
在Windows11中的Docker Desktop创建的容器内使用GPU_怎么在wsl的docker容器里面使用gpu-CSDN博客
我的GPU是MX450,更新驱动后升级为551.86版本
但是在wsl下的ubuntu输入nvidia-smi,却出错了
出现Segmentation fault,不知道什么原因还在寻找
折腾了一天,在github的wsl论坛上找到了答案,就是上面更新的cuda驱动太新了,支持不完善
链接:nvidia-smi segmentation fault in wsl2 but not in Windows · Issue #11277 · microsoft/WSL · GitHub
我的MX450的驱动从551.86降到551.23即可,结果如下:
安装流程
按照自己的试一试,更改nvidia驱动之后,创建能使用GPU的ubuntu:latest(20.04 LTS)容器
运行下面代码
# 拉起镜像
docker pull ubuntu
# 能使用gpu的容器 python_development_environment_container改成想要创建的容器名
# 8000:8000更改成端口映射
# D:/docker/volume/python_development_environment_container:/var/backend 更改挂载映射
docker run -u root -itd --gpus all --name python_development_environment_container -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all -p 8000:8000 -v D:/docker/volume/python_development_environment_container:/var/backend ubuntu:latest /bin/bash
参考:https://www.cnblogs.com/chester-cs/p/14444247.html
在vscode进入容器之后
apt-get update
apt-get install sudo
sudo apt-get update
sudo apt-get upgrade
sudo apt install build-essential
安装CUDA,CUDA Toolkit 11.8 Downloads | NVIDIA Developer
安装好了之后
# 安装nano编辑器
sudo apt-get install nano
# 修改环境变量
nano ~/.bashrc
# 在最下面增加环境变量
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-11.8
# 按键Ctrl+O Enter Ctrl+X
# 刷新
source ~/.bashrc
# 验证一下
nvcc -V
继续安装cudnn,链接:cuDNN Archive | NVIDIA Developer
安装到挂载目录
# 安装压缩包软件
sudo apt install tar xz-utils
# 解压
tar -xf cudnn-linux-x86_64-8.9.5.30_cu
# 复制
cp cudnn-linux-x86_64-8.9.5.30_cuda11-archive/lib/* /usr/local/cuda-11.8/lib64/
cp cudnn-linux-x86_64-8.9.5.30_cuda11-archive/include/* /usr/local/cuda-11.8/include/
# 验证是否成功安装cudnn
cat /usr/local/cuda-11.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
安装miniconda3,和上一篇文章一样的做法:
Windows下的docker容器(ubuntu)进行pytorch+paddlepaddle环境部署(CPU环境)-CSDN博客
另外创建一个gpu_env里面安装下面的包
先安装torch再是torchvision