【一文到底】WSL2-Ubuntu中训练深度学习模型以及相关配置

前言:首先我为什么要安装WSL2,在windows做科研时,代码遇到很多奇奇怪怪的错误,但是又不想自己电脑装linux系统,WSL2就很好的满足了需求,而且根据一些前辈经验,wsl2更加适合我们这种没有其他服务器做科研,能减少很多不必要的错误,而且能提前熟悉一些工作场景。在这里祝各位和我自己前程似锦,心想事成!

总结:在WSL2-Ubuntu中安装CUDA12.8、cuDNN、Anaconda、Pytorch、vscode配置、训练深度学习模型

一、初始条件

首先要先确保——windows系统中要正确安装了以下组件:
(1)显卡驱动;

(2)CUDA;

(3)cuDNN;

(4)Microsoft Visual Studio;

Windows环境配置参考:【一文到底】深度学习环境配置+ PatchTST复现【Anaconda+PyTorch(GPU版)+CUDA+cuDNN】

二、WSL2安装

1.1 安装

右键单击并选择“以管理员身份运行”,在 管理员 模式下打开 PowerShell 或 Windows 命令提示符,输入 wsl --install 命令,然后重新启动计算机。

wsl --install

此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 分发所需的功能。

image-20250714193528543

重启后

image-20250714193928662

Note:

(1)默认情况下,已安装的 Linux 分发版将为 Ubuntu。 可以通过使用-d标志来更改这一点。

  • 若要更改安装的分发版,请输入: wsl --install -d <Distribution Name><Distribution Name> 替换为您想要安装的分发版名称。

  • 若要查看可通过在线商店下载的可用 Linux 分发版的列表,请输入: wsl --list --onlinewsl -l -o

  • 若要在初始安装后安装其他 Linux 分发版,也可以使用以下命令: wsl --install -d <Distribution Name>

1.2 设置 Linux 用户名和密码

使用 WSL 安装 Linux 发行版的过程完成后,使用“开始”菜单打开该发行版(默认情况下为 Ubuntu)。 系统将要求你为 Linux 发行版创建“用户名”和“密码”

  • 用户名密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
  • 请注意,输入密码时,屏幕上不会显示任何内容。 这称为盲人键入。 你不会看到你正在键入的内容,这是完全正常的。
  • 创建用户名密码后,该帐户将是分发版的默认用户,并将在启动时自动登录。
  • 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令。
  • 在 WSL 上运行的每个 Linux 发行版都有其自己的 Linux 用户帐户和密码。 每当添加分发版、重新安装或重置时,都必须配置一个 Linux 用户帐户。

image-20250714211625069

在 Ubuntu 命令行中输入 UNIX 用户名

若要更改或重置密码,请打开 Linux 发行版并输入命令:passwd。 系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。

如果忘记了 Linux 分发版的密码:

  1. 请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:wsl -u root

    如果需要在非默认的分发版中更新忘记的密码,请使用命令:wsl -d Debian -u root,并将 Debian 替换为目标分发版的名称。

  2. 在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd <username>,其中 <username> 是发行版中帐户的用户名,而你忘记了它的密码。

  3. 系统将提示你输入新的 UNIX 密码,然后确认该密码。 在您被告知密码已正确更新后,请在 PowerShell 内使用以下命令关闭 WSL:exit

1.3 更新和升级软件包

建议使用发行版的首选包管理器定期更新和升级包。 对于 Ubuntu 或 Debian,请使用以下命令:

sudo apt update && sudo apt upgrade

三、在WSL2-Ubuntu系统中安装CUDA、cuDNN、Anaconda、pytorch

只要在Windows下配置了显卡驱动,WSL2不需要再配置

在WSL2-Ubuntu进行验证与显卡的通信和驱动调用的情况:

nvidia-smi

image-20250714195309847

Note:查看ubuntu版本信息

lsb_release -a

补充:创建普通用户账号,详情看补充内容end1

2.1 安装cuda

打开CUDA官网,复制命令安装cuda

CUDA Toolkit 12.8 Downloads | NVIDIA Developer

image-20250714201036424

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-9

复制安装命令到Ubuntu窗口中,回车运行。

过程中需要输入密码,直接输出设置的密码。

image-20250714201944982

image-20250714203244652

安装完成。

添加环境变量

第一步:确认 CUDA 目录存在

# 应看到类似:cuda-12.9/   ,然后确认 nvcc 是否在里面
ls /usr/local/

# 如果这条命令有输出,说明 CUDA 安装没问题,只是路径没加。
ls /usr/local/cuda-12.9/bin/nvcc

第二步:设置环境变量

#3 编辑 ~/.bashrc 文件:
nano ~/.bashrc

# 在最后添加这几行,保存后退出(Ctrl+O 保存,Enter 确认,Ctrl+X 退出)。:
# CUDA 12.9 PATH 设置
export PATH=/usr/local/cuda-12.9/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64:$LD_LIBRARY_PATH

第三步 使生效并且验证

# 时立即生效
source ~/.bashrc

# 验证
nvcc -V

看到输出结果即配置成功。

image-20250714213310819

关于驱动程序安装程序(附加)

Note:可以跳过,推荐安装一下,不安装不影响使用。

CUDA官网,CUDA Toolkit Installer命令下面就是Driver Installer。

image-20250716223844489

2.2 安装cuDNN

cuDNN 9.8.0 Downloads | NVIDIA Developer

image-20250714215829111

cuDNN安装命令:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get updatesudo 
apt-get -y install cudnn

安装成功(这里重启了一下Ubuntu,不影响)

image-20250714220111538

验证 cuDNN 安装

ls /usr/lib/x86_64-linux-gnu/libcudnn*

image-20250714220303036

cuDNN 库文件已经成功安装在/usr/lib/x86_64-linux-gnu目录下,这说明 cuDNN 的安装路径是正确的,并且系统已经正确配置了相关的库文件.

2.3 Anaconda安装

通过以下命令下载和安装:

# 1. 先 cd 到根目录下
cd

# 2. 下载安装包到temp目录下:在此地址 https://www.anaconda.com/download/success 中找到安装包的链接
wget -P /tmp https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-x86_64.sh

# 3. 安装 anaconda
bash /tmp/Anaconda3-2025.06-0-Linux-x86_64.sh

# 4. 按照 anaconda 提示进行安装,默认安装到 /home/tsf/anaconda3

下载Anaconda

image-20250715133459193

下载成功,但是可以看到多次断连和断点续传,最终是成功的。

Note:这是典型的 网络不稳定或 CDN 限速导致的下载中断。wget 在断点处被服务器关闭连接,但它启用了 断点续传(HTTP 206 Partial Content),所以能够继续下载,建议加速网络连接。

安装Anaconda

image-20250715134701269

image-20250715134850467

安装完成,关闭终端,关闭终端并重新打开 Ubuntu,可以看到默认进入了 base 环境。

image-20250715135927872

验证安装,若出现command not found,未添加到环境变量或者conda安装不成功,可以尝试添加环境变量或者重新安装Anaconda。

# 查看conda版本
conda --version

# 查看conda中的虚拟环境
conda env list

image-20250715142855963

Note:conda命令参考conda配置虚拟环境常用命令

2.4 Pytorch安装

PyTorch官网

image-20250715144435331

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

Note:推荐选择 PyTorch 的 stable(稳定)版本,功能成熟、经过充分测试,适合科研和正式项目使用。不建议使用 preview(预览)版本,它属于开发测试阶段,可能存在不稳定或未完善的功能,不适合科研使用

包管理器建议使用 pip。当前 PyTorch 官方对 conda 支持减弱,很多新版本和新功能仅通过 pip 提供。如果系统中 pip3 命令无效,可以直接使用 pip

显卡为 50 系 NVIDIA 显卡,其架构较新,不再支持 CUDA 11.8。必须使用 CUDA 12 及以上版本,否则无法启用 GPU 加速。这是由于显卡架构变化所导致的兼容性限制,非 bug。根据个人需求选择对应的 CUDA 版本安装。

image-20250715145348751

image-20250715150523273

看到 Successfully就代表安装成功。

验证CUDA、cuDNN、Pytorch安装

# 第一步
python

# 第二步
import torch

# 打印 PyTorch 版本
print("PyTorch 版本:", torch.__version__)

# 检查 CUDA 是否可用
print("CUDA 是否可用:", torch.cuda.is_available())

# 如果 CUDA 可用,打印 GPU 信息
if torch.cuda.is_available():
    print("GPU 名称:", torch.cuda.get_device_name(0))
    print("CUDA 版本 (torch):", torch.version.cuda)
    print("cuDNN 是否启用:", torch.backends.cudnn.enabled)

image-20250715171337650

四 运行代码和vscode配置

4.1 代码运行

建议先创建虚拟环境,避免污染环境,参考:conda配置虚拟环境常用命令

# 第一步 创建目标目录
mkdir -p ~/models

# 第二步 用命令复制windows整个文件夹到WSL2中
# /mnt/d/... 表示 D 盘的路径在 WSL2 中的映射;
# mnt是挂载点目录,用来临时访问外部文件系统或设备中的内容,其中/mnt/d对应windows中D盘
# -r 表示递归复制整个目录;
cp -r /mnt/d/Code/model/Autoformer-main ~/models/

# 查看文件
cat requirements.txt

# 第三步 安装包(两种方式)
# 第二种直接根据文件安装更加方便,但是我已经安装了torchvision,维护环境干净,推荐第一个
# 因为我这里是GPU12.0的算力,单独配置torch,在安装需求文件时,会将torch降到11.0的版本,会导致gpu无法使用
pip install pandas scikit-learn numpy matplotlib reformer_pytorch
pip install -r requirements.txt

# 第四步 检查安装的包
pip list | grep -E "torch|pandas|scikit|matplotlib|numpy|reformer"

# 第五步 运行sh文件(先进入代码根目录)
cd models/Autoformer-main/
./scripts/ETT_script/Autoformer_ETTh1.sh

image-20250715200201918

查看requirements.txt,然后安装

image-20250715202327567

image-20250715202956399

安装成功,然后来运行代码,本文以 Autoformer 为例(可以用自己的模型,Autoformer属于开源项目)

Note: 这里运行后应该有运行日志的,我修改了一下全部存到如logs/LongForecasting/Autoformer_ETTh1_96_96.log 日志中,结果mae和mse存到result.txt中,方便查看。

image-20250716135827337

4.2 vscode配置

虽然上面已经成功运行代码,但是做code开发不是很方便,所以我们使用Visual Studio Codez作为我们的开发工具。

下载过程很简单,就略过。在vscode中安装WSL

image-20250716173701457

image-20250716173916329

第一种 vscode打开(vscode --> wsl2)

连接WSL2 --> open Folder --> 输入WSL2的路径 --> 运行终端 --> 切换环境 --> 运行代码

image-20250716213233830

第二种 命令行连接(wsl2 --> vscode)

# 在 Windows Terminal 或 CMD 中输入,这会在当前 WSL 目录下打开 VS Code,并自动连接到对应的 Linux 子系统
wsl
cd ~/models/Autoformer-main
code .

# 报错  Command 'code' not found, but can be installed with:sudo snap install cod
#添加vscode的环境变量
nano ~/.bashrc
#在 .bashrc 写入vscode路径,注意文件名有空格需要斜杠转义或者引号
export PATH=$PATH:/mnt/d/Application/Microsoft\ VS\ Code/bin
或者
export PATH=$PATH:"/mnt/d/Application/Microsoft VS Code/bin"
#Ctrl+O 保存 --> 回车确定 --> Ctrl+O保存退出

# 打开vscode
code .

image-20250716214941870

五 记录

5.1 创建普通用户

描述:第一次打开Ubuntu时,直接关掉了窗口,导致进入后是root,然后使用passwd输入了密码,需要创建普通用户赋予sudo权限(推荐做法,不推荐直接使用root)

解决办法:

# 1.创建新用户(会提示输入密码等信息,tsf为自定义用户名)
# 输入后如果有提示信息,直接全部回车跳过
adduser tsf

# 2.把新用户加入 sudo 组(赋予管理员权限)
usermod -aG sudo tsf

# 3.(可选)验证新用户属于 sudo 组
groups tsf


# 4.(可选)切换到新用户
su - tsf

# 5.新用户执行管理员命令示例
sudo apt update
5.2 为普通用户添加 NVIDIA 工具路径

描述:root 用户下 nvidia-smi 正常,GPU 驱动已连接成功,tsf 用户下 nvidia-smi 提示找不到命令(但不是驱动问题)

解决办法:

# 第一步:确认文件存在
ls /usr/lib/wsl/lib/nvidia-smi

# 第二步:修改 ~/.bashrc 添加环境变量
nano ~/.bashrc

#在末尾添加:
# WSL2 NVIDIA 工具路径
export PATH=$PATH:/usr/lib/wsl/lib

# 第三步:验证
nvidia-smi
5.3 启用WSL

Windows Subsystem for Linux (WSL) 是 Windows 10 上的一项可选功能。您可以通过 Windows 功能对话框或 PowerShell 启用它。

在 Windows 搜索栏中,输入“功能”以打开或关闭 Windows 功能对话框。向下滚动并选中“适用于 Linux 的 Windows 子系统”

image-20250716174414849

或者PowerShell,如果愿意,您可以以管理员身份打开 PowerShell 并输入:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

重新启动 Windows 后,您可以通过打开命令提示符并输入“wsl”来检查是否已启用 WSL。

5.4切换wsl2默认登录用户

在 Windows 的 PowerShellCMD 里运行

# 确认你的 WSL 发行版名字
wsl -l -v

# 执行命令, tsf为你的用户名
wsl -d Ubuntu -u tsf

# 不行试试这个
ubuntu config --default-user tsf
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐