在Windows 系统上安装和配置 NVIDIA 驱动
步骤
第一步:确认您的显卡支持 CUDA
首先,请访问 NVIDIA 的官方 CUDA 支持列表,确认您的 GPU 型号支持 CUDA:
https://developer.nvidia.com/cuda-gpus
第二步:安装适用于 WSL 2 的 NVIDIA 驱动程序
这是最关键的一步。与 Linux 系统不同,在 Windows 上运行 WSL 2 的 GPU 支持需要在 Windows 主机上安装特定的驱动,而不是在 WSL 2 子系统内部安装。
-
下载驱动程序:
- 访问 NVIDIA 官方网站的驱动下载页面:https://www.nvidia.com/Download/index.aspx
- 手动选择您的显卡产品系列、型号以及操作系统(务必选择 Windows 10/11 64-bit)。
- 点击“搜索”并下载最新的 Game Ready Driver 或 Studio Driver。两者都包含所需的 CUDA 驱动组件。
-
运行安装程序:
- 双击下载好的
.exe
文件。 - 选择“自定义安装”。
- 在组件列表中,务必勾选 “GPU 加速的 WSL 2 驱动程序”(或类似名称的选项)。这是一个关键选项,它确保了驱动能在 WSL 2 环境中正常工作。
- 完成安装并重启电脑。
- 双击下载好的
第三步:验证驱动安装
安装并重启后,重新打开 PowerShell 或命令提示符,执行以下命令来验证:
nvidia-smi
如果安装成功,您将看到与在 Linux 系统中类似的输出,显示了 GPU 的型号、驱动版本以及 CUDA 版本。
请注意:在 Windows 上,这个命令显示的是主机 Windows 系统的驱动信息,但它同时也是给 WSL 2 子系统使用的驱动。
第四步:安装 WSL 2 并设置默认版本
确保 WSL 2 已安装并设置为默认版本。
请注意:如果已经安装好Docker Desktop并成功运行Docker Engine,不需要执行本次步骤
-
以管理员身份打开 PowerShell,运行:
# 启用 WSL 和 虚拟机平台 功能 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启电脑。
-
设置 WSL 2 为默认版本:
wsl --set-default-version 2
-
安装一个 Linux 发行版(如果还没有的话):
从 Microsoft Store 安装 Ubuntu 20.04 或 22.04。
第五步:安装 NVIDIA Container Toolkit(在 WSL 2 的 Linux 分发中)
现在,您需要在 WSL 2 的 Linux 环境中安装让 Docker 能调用 GPU 的工具包。
-
启动您的 WSL 2 Linux 分发(例如 Ubuntu)。
打开PowerShell或命令提示符(CMD)#输入以下命令后按回车: wsl #或直接指定发行版名称(如wsl -d Ubuntu)
请注意 这里并不是打开docker dasktop的Linux环境,该环境缺少必要的工具
- 如果没有初始安装任何Linux发行版环境,安装一个,如下:
- 方法一(图形界面):Microsoft Store搜索Ubuntu关键词,安装Ubuntu 22.04.5 LTS或其它版本
- 方法二(命令行):
wsl --install -d Ubuntu
- 安装完成后第一次运行需要配置用户名和密码
- 全部完成后配置其为默认wsl启动环境:
请注意: 如果已经安装Docker Engine,就不要执行此处配置了wsl --list # 查看当前运行wsl环境 # 如果已经安装Docker Engine,执行以下步骤后会报错 wsl --set-default <指定发行版名称>
- 至此wsl的Linux环境已经安装完成,在PowerShell中使用wsl(默认启动时),或者wsl -d Ubuntu-22.04(使用实际环境名称指定启动)来进入该环境终端
-
在 WSL 2 的发行版Linux终端中,依次执行以下命令:
# 设置稳定版仓库和GPG密钥 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-keyring.gpg curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-docker-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list# 更新软件列表并安装工具包 sudo apt-get update sudo apt-get install -y nvidia-container-toolkit# 配置 Docker 守护进程以使用 NVIDIA 容器运行时 # 注意,这一步可以在另一篇攻略中使用图形界面执行 sudo nvidia-ctk runtime configure --runtime=docker# 重启 Docker 守护进程 # 注意,这一步可以在另一篇攻略中使用图形界面执行 sudo service docker restart
重要:这些命令是在 WSL 2 的 Linux 终端中运行的,不是在 Windows 的 PowerShell 中。
毕竟Linux指令直接在PowerShell中执行也会直接报错
第六步:验证整个环境
完成以上所有步骤后,进行最终验证。
- 在 WSL 2 的 Linux 终端中,运行:
这个命令会下载一个小的 NVIDIA CUDA 镜像并在容器内运行docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi
nvidia-smi
。如果配置成功,您将看到与在宿主机上运行nvidia-smi
类似的输出,这证明 Docker 容器已经可以成功访问到 GPU。
总结与故障排除
- 核心要点:在 Windows 上,WSL 2 下的 Docker 使用 GPU 需要在 Windows 主机安装正确的 NVIDIA 驱动,并在 WSL 2 的 Linux 分发中安装
nvidia-container-toolkit
。 - 如果
nvidia-smi
命令不生效:- 确认驱动安装时选择了“GPU 加速的 WSL 2 驱动程序”。
- 确认您下载的驱动型号与您的显卡完全匹配。
- 尝试使用 DDU(Display Driver Uninstaller)工具在安全模式下彻底卸载现有驱动,然后重新安装。
- 如果 Docker 容器内无法识别 GPU:
- 确认是在 WSL 2 的终端中运行 Docker 命令,而不是在 Windows 的 PowerShell 中。
- 确认
nvidia-container-toolkit
在 WSL 2 中安装成功。 - 检查 Docker Desktop 的 Settings > General > “Use the WSL 2 based engine” 是否已勾选。
完成所有这些步骤后,您的 Windows 系统就已经为运行支持 CUDA 的 Docker 容器做好了准备。