WSL2运行Docker容器时出现CUDA设备未检测到的RuntimeError
解决WSL2 Docker中faster-whisper检测不到CUDA设备的问题
1. 修正容器运行命令
你当前运行的是官方nvidia/cuda基础镜像,而非自己构建的包含faster-whisper的镜像,这是核心错误之一:
- 先构建自定义镜像:
docker build -t faster-whisper-app . - 运行自己的镜像:
docker run --gpus all --runtime=nvidia -t faster-whisper-app
2. 验证容器内CUDA可用性
在自定义镜像中手动检查GPU是否能被识别:
docker run --gpus all --runtime=nvidia -it faster-whisper-app bash
进入容器后依次执行:
- 确认
nvidia-smi输出正常(和你之前测试基础镜像的结果一致) - 用Python验证CUDA设备:
import ctranslate2 print(ctranslate2.get_cuda_device_count()) # 若安装了torch,也可验证: import torch print(torch.cuda.is_available())
如果输出为0或False,说明容器GPU穿透存在问题;输出正常则问题出在faster-whisper配置上。
3. 检查WSL2 GPU加速配置
确保WSL2已正确启用GPU支持:
- 确认Windows端NVIDIA驱动版本(你当前的537.42符合要求)
- 检查WSL配置文件
C:\Users\<你的用户名>\.wslconfig(Windows系统)或~/.wslconfig(WSL内)是否包含:[wsl2] guiApplications=true nvidiaDrvVersion=537.42 # 需与Windows驱动版本完全一致 - 重启WSL生效:
wsl --shutdown,再重新打开Ubuntu终端
4. 调整环境变量设置
- 删除Python脚本中的
os.environ['CUDA_VISIBLE_DEVICES'] = "0",Dockerfile中已设置NVIDIA_VISIBLE_DEVICES all,重复设置可能导致设备识别冲突 - 保留Dockerfile中的
NVIDIA_DRIVER_CAPABILITIES utility,compute配置,该设置已覆盖CUDA计算所需权限
5. 确保ctranslate2为CUDA兼容版本
faster-whisper依赖的ctranslate2若默认安装CPU版本,会导致无法识别GPU。修改requirements.txt指定安装适配CUDA 11.7的版本:
faster-whisper ctranslate2[cuda117]>=3.16.0,<4.0.0
然后重新构建镜像。
6. 统一Python版本兼容性
你在Dockerfile中安装了Python3.11,但基础镜像自带Python3.10,可能引发依赖兼容问题。建议改用基础镜像自带版本,修改Dockerfile:
FROM nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu22.04 RUN apt -y update && apt -y install python3-pip ENV NVIDIA_VISIBLE_DEVICES all ENV NVIDIA_DRIVER_CAPABILITIES utility,compute WORKDIR /home/user/Documents/experiment COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD [ "python3", "./main.py" ]
内容的提问来源于stack exchange,提问作者paayaa
相关产品推荐
相关产品推荐

