Windows WSL 启用 NVIDIA CUDA 配置教程
拖稿时间太长,只能努力还原……QvQ,因为如你所见的近期主要功夫都在重写博客系统和简历页面上了,当然也包括在 NAS 上部署的 gitea + action 的配置之类的,因此后面可以更新的文章还是挺多的
之前我也写过两篇 AI 相关的文章,不过因为不涉及到开发,只涉及到使用,所以我还是用 Windows 宿主机开发的,这次由于涉及到了开发,所以就得折腾一下 WSL GPU 加速的方案。
安装
首先,先保证宿主机已经安装了驱动,也就是https://www.nvidia.com/Download/index.aspx中获得下载地址。
然后需要在 WSL 中安装 cuda toolkit,下载地址:https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_network,并按照官方提供的命令依次安装,比如通过 Network 安装的命令为:
1wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
2sudo dpkg -i cuda-keyring_1.1-1_all.deb
3sudo apt-get update
4sudo apt-get -y install cuda-toolkit-12-8
5
安装完成后,你使用两个命令:
1nvidia-smi
2nvcc --version
3
如果上面两个命令都没问题且能输出你的显卡,那在安装商我们就初步获得了成功。
如果提示command not found
,建议确认一下 PATH 配置,加上 /usr/bin/cuda/bin
。
使用与测试
下一步,我们要测试在 Python 中是否能够正常使用 GPU,这是一段测试代码:
1import torch
2
3def check_gpu():
4 # 检查 CUDA 是否可用
5 cuda_available = torch.cuda.is_available()
6 print(f"CUDA Available: {cuda_available}")
7
8 if cuda_available:
9 # 获取 GPU 设备数量
10 device_count = torch.cuda.device_count()
11 print(f"Number of CUDA Devices: {device_count}")
12
13 # 遍历所有 GPU 设备
14 for i in range(device_count):
15 print(f"\nDevice {i}:")
16 # 获取设备名称
17 print(f" Name: {torch.cuda.get_device_name(i)}")
18 # 获取显存信息
19 print(f" Total Memory: {torch.cuda.get_device_properties(i).total_memory / 1024**3:.2f} GB")
20 # 当前显存使用情况
21 print(f" Memory Allocated: {torch.cuda.memory_allocated(i) / 1024**3:.2f} GB")
22 print(f" Memory Reserved: {torch.cuda.memory_reserved(i) / 1024**3:.2f} GB")
23
24 # 简单计算测试(将张量移动到 GPU 并执行操作)
25 try:
26 device = torch.device("cuda:0")
27 x = torch.randn(1000, 1000).to(device)
28 y = torch.randn(1000, 1000).to(device)
29 z = torch.matmul(x, y)
30 print("\nGPU 计算测试成功!")
31 print(f"结果张量形状: {z.shape}")
32 except Exception as e:
33 print(f"\nGPU 计算测试失败: {str(e)}")
34 else:
35 print("未检测到可用的 CUDA 设备,请检查以下可能原因:")
36 print("1. 确保已在 Windows 中安装 NVIDIA 驱动程序")
37 print("2. 确保 WSL 2 已启用 GPU 支持")
38 print("3. 确保已安装 CUDA Toolkit")
39
40if __name__ == "__main__":
41 check_gpu()
42
因此你需要先安装 torch
,期间如果报 llvmlite
安装的错误,可能需要先安装:
1sudo apt-get update
2sudo apt-get install llvm
3
然后再安装最新的 llvm 版本(我测试的时候出现了安装的 torch 和 llvmlite 版本不兼容的情况,可能需要视情况而定进行调整):
1poetry add "llvmlite>=0.39.0"
2
运行后如果输出显卡,证明识别成功了:
CUDA Available: True
Number of CUDA Devices: 1
Device 0:
Name: NVIDIA GeForce RTX 4070 Ti SUPER
Total Memory: 15.99 GB
Memory Allocated: 0.00 GB
Memory Reserved: 0.00 GB
GPU 计算测试成功!
结果张量形状: torch.Size([1000, 1000])
当然,在实际项目中,我也遇到过死活就是用的是 CPU 的情况(这点可以通过 Windows 的资源管理器或者 nvidia-smi
查看正在使用的进程得出)。比如我之前使用 whisper 时死活不生效,就需要手动指明 device:
1device = "cuda:0" if torch.cuda.is_available() else "cpu"
2print(f"使用设备: {device}")
3# 加载模型到指定设备
4model = whisper.load_model(model_name, device=device)
5
总结
在实际操作中,安装过程可能会遇到各种依赖版本不兼容、配置错误等问题,像llvmlite
版本与torch
不匹配、命令找不到需要检查 PATH 配置等情况,都需要我们根据具体报错信息进行排查和解决。
总之,不能让显卡白买了。
评论 (0)