GKE Autopilot集群中PyTorch无法识别CUDA GPU的排查求助
确认Pod的GPU资源配置
GKE Autopilot要求在Pod配置里明确申请GPU资源,否则容器无法访问节点GPU。检查你的Deployment/Pod yaml是否包含:resources: limits: nvidia.com/gpu: 1 # 根据需求调整数量执行
kubectl describe pod <pod-name>,查看Resources部分的GPU限制是否生效,同时检查Events栏有没有资源调度相关报错。验证容器内GPU设备挂载状态
除了nvidia-smi,直接检查设备文件是否存在:ls -la /dev/nvidia*正常应看到
/dev/nvidia0、/dev/nvidiactl、/dev/nvidia-uvm等设备。如果缺失,说明GPU设备未正确挂载到容器,可能是集群的NVIDIA Device Plugin组件运行异常。核对PyTorch与CUDA驱动的兼容性
虽然torch.version.cuda显示11.4,仍需确认PyTorch的CUDA runtime和主机驱动版本完全兼容。执行以下命令查看PyTorch的CUDA依赖:ldd $(python -c "import torch; print(torch.__file__)") | grep cuda若输出未指向系统CUDA库,说明PyTorch自带的runtime和驱动小版本不匹配。可重新安装适配470.x系列驱动的PyTorch版本:
pip3 install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html检查容器运行时是否为NVIDIA Runtime
执行以下命令确认容器使用了正确的运行时:cat /proc/self/cgroup | grep nvidia若无输出,说明容器未使用NVIDIA Container Runtime,导致GPU无法被PyTorch识别。GKE Autopilot通常会自动配置,但偶尔可能出现异常,需确认集群GPU节点的runtime配置。
打印PyTorch CUDA初始化日志
开启调试日志定位具体错误:import torch import os os.environ['CUDA_LAUNCH_BLOCKING'] = '1' os.environ['TORCH_USE_CUDA_DSA'] = '1' print(torch.cuda.is_available()) print(torch.cuda.device_count()) print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else "No GPU detected")或者直接执行:
python -c "import torch; torch.cuda.init(); print(torch.cuda.is_available())"日志会暴露CUDA初始化时的具体问题,比如库加载失败、设备权限不足等。
验证容器内用户权限
确认运行PyTorch的用户有权限访问GPU设备:groups $USER查看是否包含
video组(GPU设备通常归属该组)。若没有,可临时切换root用户测试,或在容器启动时将用户加入video组。
内容的提问来源于stack exchange,提问作者ReddoHoku72

