从零搭建WSL2深度学习环境:用Anaconda管理CUDA 11.6、PyTorch和TensorRT
从零搭建WSL2深度学习环境:用Anaconda管理CUDA 11.6、PyTorch和TensorRT
在Windows 11上通过WSL2搭建深度学习开发环境,已经成为越来越多开发者的选择。这种方案既能享受Windows系统的易用性,又能获得Linux环境下高效的开发体验。对于需要同时处理多个项目的机器学习工程师来说,如何在同一台机器上管理不同版本的CUDA、PyTorch和TensorRT,同时保持环境隔离和项目独立性,是一个常见且棘手的问题。
本文将详细介绍如何在WSL2的Ubuntu系统中,使用Anaconda创建隔离的Python环境,并正确配置CUDA 11.6、PyTorch和TensorRT的开发环境。不同于简单的安装教程,我们更关注工程实践中的环境隔离和版本管理问题,帮助你在同一台机器上为不同项目维护独立的深度学习环境。
1. 环境准备与基础配置
在开始之前,确保你的系统满足以下基本要求:
- Windows 11 21H2或更高版本
- 已启用WSL2功能并安装Ubuntu发行版(建议20.04 LTS或22.04 LTS)
- NVIDIA显卡驱动已正确安装在Windows主机上(无需在WSL中重复安装)
- 至少50GB的可用磁盘空间(深度学习环境占用空间较大)
首先,我们需要验证WSL2和NVIDIA驱动的准备工作:
# 在Windows PowerShell中检查WSL版本
wsl --list --verbose
# 在WSL Ubuntu终端中检查NVIDIA驱动
nvidia-smi
如果nvidia-smi命令能够正确显示GPU信息,说明NVIDIA驱动已经正确配置。接下来,我们需要在WSL中安装一些基础工具:
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential cmake git wget unzip
2. Miniconda安装与环境管理
Anaconda/Miniconda是管理Python环境的理想工具,特别适合需要同时维护多个项目的开发者。我们选择安装更轻量级的Miniconda:
# 下载并安装Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda
# 初始化conda
~/miniconda/bin/conda init bash
source ~/.bashrc
安装完成后,我们可以创建专为深度学习项目设计的conda环境。假设我们有两个项目:一个使用PyTorch 1.12,另一个使用TensorFlow:
# 创建PyTorch项目环境
conda create -n pytorch_project python=3.9 -y
# 创建TensorFlow项目环境
conda create -n tensorflow_project python=3.8 -y
3. 系统级CUDA工具链安装
虽然conda可以管理CUDA工具链,但对于需要高性能计算的场景,建议在系统级别安装CUDA,然后在conda环境中链接这些库。以下是CUDA 11.6的安装步骤:
# 添加NVIDIA CUDA仓库
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
# 安装CUDA 11.6
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda-11-6
安装完成后,配置环境变量:
echo 'export PATH=/usr/local/cuda-11.6/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
验证CUDA安装:
nvcc --version
4. cuDNN和TensorRT的安装与配置
cuDNN和TensorRT是深度学习加速的重要组件。由于它们与CUDA版本紧密相关,我们需要确保版本匹配。
4.1 cuDNN安装
下载对应CUDA 11.6的cuDNN tar包后,执行以下安装步骤:
tar -xvf cudnn-linux-x86_64-8.4.0.27_cuda11.6-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
验证安装:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
4.2 TensorRT安装
TensorRT的安装过程类似:
tar -xzvf TensorRT-8.4.1.5.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/TensorRT-8.4.1.5/lib
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:'$(pwd)'/TensorRT-8.4.1.5/lib' >> ~/.bashrc
# 安装Python包
cd TensorRT-8.4.1.5/python
pip install tensorrt-8.4.1.5-cp39-none-linux_x86_64.whl
5. 在conda环境中安装深度学习框架
现在,我们可以在隔离的conda环境中安装PyTorch和TensorFlow,同时确保它们使用系统安装的CUDA工具链。
5.1 PyTorch环境配置
激活PyTorch项目环境并安装框架:
conda activate pytorch_project
pip install torch==1.12.0+cu116 torchvision==0.13.0+cu116 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu116
验证PyTorch是否能正确使用GPU:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
5.2 TensorFlow环境配置
对于TensorFlow项目环境:
conda activate tensorflow_project
pip install tensorflow-gpu==2.9.1
验证TensorFlow GPU支持:
import tensorflow as tf
print(tf.__version__)
print(tf.config.list_physical_devices('GPU'))
6. 环境变量管理与项目隔离
为了确保不同项目使用正确的库路径,我们需要为每个conda环境设置特定的环境变量。创建环境激活时的钩子脚本:
# 为PyTorch环境创建激活脚本
mkdir -p ~/miniconda/envs/pytorch_project/etc/conda/activate.d
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH' > ~/miniconda/envs/pytorch_project/etc/conda/activate.d/env_vars.sh
# 为TensorFlow环境创建激活脚本
mkdir -p ~/miniconda/envs/tensorflow_project/etc/conda/activate.d
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH' > ~/miniconda/envs/tensorflow_project/etc/conda/activate.d/env_vars.sh
这样,每次激活conda环境时,都会自动设置正确的库路径,确保框架能够找到系统安装的CUDA库。
7. 常见问题排查与性能优化
在配置过程中可能会遇到各种问题,以下是一些常见问题的解决方法:
问题1:PyTorch找不到CUDA
解决方案:确保conda环境中没有安装cudatoolkit包,这可能会与系统CUDA冲突。使用conda list检查并移除冲突的包。
问题2:TensorRT无法初始化
解决方案:检查LD_LIBRARY_PATH是否包含TensorRT库路径,并确保TensorRT版本与CUDA版本匹配。
性能优化建议:
-
在WSL2配置文件中增加内存和CPU核心分配:
# 在Windows的%USERPROFILE%/.wslconfig中添加 [wsl2] memory=16GB processors=8 -
使用WSL2的GPU计算特性需要Windows 11 22H2或更高版本,确保系统已更新。
-
对于大型数据集,考虑将数据存储在WSL2文件系统之外,以提高I/O性能。
通过以上步骤,你已经成功在WSL2中搭建了一个灵活、高效的深度学习开发环境,能够同时支持多个项目的独立开发需求。这种配置方式既保持了环境的整洁,又能充分利用系统资源,是机器学习工程师的理想工作环境配置。
更多推荐


所有评论(0)