WSL2下使用miniconda+cuda+cudnn方案进行机器/深度学习环境配置方案
WSL2下使用miniconda + cuda + cudnn方案进行机器/深度学习环境配置方案
前言
笔者这几天需要使用Google的mediapipe框架进行自定义的数据训练,值得注意到的是Google家的这个方便的自定义训练只支持在Linux下完成。具体原因可以参考到
tty — Terminal control functions — Python 3.13.0 documentation
也即是google.colab库需要的环境就是Unix系的OS。。。所以没办法(耸肩),只好在WSL上完成mediapipe应用框架的搭建,刚好笔者准备尝鲜。
方案简单前置
笔者认为您的电脑已经安装好了WSL2且使用的是默认的发行版(Ubuntu)
➜ wsl --list 适用于 Linux 的 Windows 子系统分发: Ubuntu-24.04 (默认)
您可以参考任何一篇安装WSL2的教程,笔者认为官方的最为权威:
笔者认为您的电脑上有可以使用的GPU用于深度学习模型的训练。
笔者自己就在windows上有nvcc等工具链,因此直接梭哈,当然没有也没关系,我们后面安装的是WSL的驱动
➜ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2024 NVIDIA Corporation Built on Fri_Jun_14_16:44:19_Pacific_Daylight_Time_2024 Cuda compilation tools, release 12.6, V12.6.20 Build cuda_12.6.r12.6/compiler.34431801_0
笔者认为您的电脑已经安装好了vscode。且安装好了python插件用于辅助我们在VSCode上书写Python程序
方案配置说明
最终,你的WSL2的目标发行版上将会有一个可以使用Host OS上正在使用的GPU训练深度模型的一个深度学习框架。
Step 1: 安装Miniconda
这是Miniconda的官方网站,下载这个的原因十分简单:它简单轻量。
有代理的朋友直接使用wget梭哈脚本就行了
没有代理的朋友使用清华源下载:
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
特定版本的前往:Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror慢慢搜索
使用wget下好脚本之后,我们就可以梭哈了。
bash Miniconda3-latest-Linux-x86_64.sh
一路摁enter(默认的,我懒)
STEP 2: 创建一个环境
但是你会发现:你没有办法使用conda,因为你的bash没有检索到它!
export PATH=$PATH:/home/charliechen/miniconda3/bin
笔者的偷懒办法是在自己的bashrc上添加一行这个,让我们的环境变量找到我们的conda可执行文件就OK!
➜ conda --help
usage: conda [-h] [-v] [--no-plugins] [-V] COMMAND ...
conda is a tool for managing and deploying applications, environments and packages.
...
现在输出就是正确的了。
下面我们创建一个环境,使用conda创建环境很简单:
conda -n env_name(不要照抄!自己设置一个有意义的名字) python=python_version
举个例子,笔者的创建是:
conda -n Ican_Model_Train python=3.8
现在,使用
conda activate Ican_Model_Train
激活我们刚刚创建的环境,这个时候你会发现你的shell多了(Ican_Model_Train),那就是成功了。
STEP 3: VSCode链接WSL虚拟机
这个事情参考WSL如何链接虚拟机:Get started using VS Code with WSL | Microsoft Learn
STEP 4:安装WSL的nvidia tool kit
欸!先别急着apt install,不是这样玩的:
参考官网的教程,人家叫你使用手动安装的方式,WSL现在可以直通GPU了。所以不要使用旧的方案!!!不要使用旧的方案!!!
办法是:CUDA Toolkit 12.6 Update 2 Downloads | NVIDIA Developer
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.6.2/local_installers/cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6
笔者列出来当时Nvidia官方给予我的方案。如上所示,照做即可。看官可以自行进入上述网址完成自己的方案配置。
检查我们的安装是否正常:
➜ nvidia-smi # 这个是Windows上如果就有就会带,没有请安装Windows的nvidia-smi程序!在Windows上的!!!
Thu Oct 10 23:16:41 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.28.03 Driver Version: 560.76 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3060 ... On | 00000000:01:00.0 On | N/A |
| N/A 39C P8 14W / 95W | 1450MiB / 6144MiB | 3% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 25 G /Xwayland N/A |
+-----------------------------------------------------------------------------------------+
➜ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Sep_12_02:18:05_PDT_2024
Cuda compilation tools, release 12.6, V12.6.77
Build cuda_12.6.r12.6/compiler.34841621_0
如果你的nvcc —version找不到,不要气馁:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib
export PATH=$PATH:/usr/local/cuda/bin
现在试试看!成功的话可以考虑写入bashrc文件!
STEP 5:安装上层框架
笔者玩的是Google MediaPipe,所以只需要一行话就可以把所有的上层框架装好就行!当然,如果是tensorflow,那就需要安装如下的python接口库:
conda install -c conda-forge cudatoolkit=11.8.0
pip install nvidia-cudnn-cu11==8.6.0.163
版本可以自行调整,建议如果常常使用GPU,将加载写入conda目标虚拟环境的加载脚本中
mkdir -p $CONDA_PREFIX/etc/conda/activate.d
#如果跳过了第三节,则即使用sudo下面的命令也会报权限错误,需要在~/miniconda3/etc/conda/activate.d目录下新建env_vars.sh文件,将单引号中的内容复制到文件中
echo 'CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
现在我们的动态依赖库安装好了
下面就是安装torch或者是tensorflow了
[Optional if target is torch]安装torch
查看PyTorch的解决方案就行
[Optional if using Tensorflow]安装tensourflow
pip install tensorflow
笔者玩的mediapipe
pip install mediapipe-model-maker
STEP 6:测试
Tensorflow系列
mediapipe底下使用的是tensorflow,因此这里可以合并检测tensorflow的使用
➜ head model_train.py -n 30
# from google.colab import files
import os
import tensorrt as trt
import tensorflow as tf
assert tf.__version__.startswith('2')
print(tf.__version__)
from mediapipe_model_maker import gesture_recognizer
import tensorflow as tf
print(tf.test.is_gpu_available()) # True
print(tf.config.list_physical_devices('GPU')) # 你的GPU列表
Torch系列
torch.cuda.is_available()
若返回为True,则使用的是GPU版本的torch,若为False,则为CPU版本
print(torch.cuda.get_device_name(0))
返回的GPU型号为你使用的GPU型号