Google Cloud Linux深度学习VM出现CUDA_ERROR_UNKNOWN未知错误的问题求助
我之前在帮团队部署GCP深度学习实例的时候,确实碰到过一模一样的问题——用官方预配置的DL镜像,带T4 GPU的N1实例,偶尔会出现cuInit: CUDA_ERROR_UNKNOWN的报错,而且时好时坏,完全摸不着规律。给你几个我亲测有效的排查和解决方向:
1. 先确认GPU硬件是否正常挂载
有时候GCP的GPU资源在实例创建后,可能因为底层调度的问题没有完全就绪,这时候先别碰TensorFlow,先跑个基础命令验证:
nvidia-smi
如果这个命令也报错或者没有输出GPU信息,那问题出在硬件初始化上,直接重启实例(记得保存好临时数据)就行——我碰到过好几次重启后就正常的情况。
2. 核对镜像的CUDA和驱动版本匹配度
你选的TensorFlow 2.4 m69 CUDA 110镜像,理论上和T4是兼容的,但偶尔镜像里的驱动可能有小bug。可以用这两个命令确认版本:
# 查看CUDA版本 cat /usr/local/cuda/version.txt # 查看NVIDIA驱动版本 nvidia-smi | grep "Driver Version"
CUDA 11.0对应的驱动版本最低是450.36.06,如果版本不匹配,可以试试运行官方镜像的更新脚本(别手动卸载驱动!):
sudo /opt/deeplearning/install-driver.sh
这个脚本是DL镜像自带的,会自动修复驱动和CUDA的匹配问题。
3. 手动设置CUDA环境变量(临时修复)
有时候TensorFlow启动时没有正确加载CUDA的库路径,你可以先手动设置环境变量再运行代码:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export PATH=/usr/local/cuda/bin:$PATH
然后在Python里先检测GPU是否能被识别:
import tensorflow as tf print(tf.config.list_physical_devices('GPU'))
如果能输出GPU信息,再跑你原来的Keras代码应该就没问题了。
4. 换个区域创建实例试试
你提到错误有时出现有时不出现,很大概率和实例所在的区域有关——有些区域的T4 GPU是共享资源池,偶尔会出现调度异常。试试换个有T4配额的区域,比如us-central1或者europe-west4,重新创建相同配置的实例,看看是否还会触发报错。
5. 升级到更新的DL镜像版本
TensorFlow 2.4已经是比较老的版本了,对应的m69镜像可能不再维护。建议试试GCP最新的TensorFlow稳定版镜像(比如TensorFlow 2.15系列),这些镜像修复了很多旧版本的兼容性问题,而且同样是预配置好所有驱动和依赖的,不用手动折腾。
内容的提问来源于stack exchange,提问作者djvaroli

