You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:40:16