Kaggle云端Notebook加载TensorFlow模型时触发CUDA初始化错误UNKNOWN ERROR (303)的求助
Kaggle云端Notebook加载TensorFlow模型时触发CUDA初始化错误UNKNOWN ERROR (303)的求助
我明白你在Kaggle云端Notebook里遇到这个CUDA初始化错误有多头疼,尤其是已经试过常规TensorFlow相关解决方案却没效果的情况下。结合你的环境信息(TensorFlow 2.18.0、CUDA 12.5.1),咱们从Kaggle专属的配置角度来一步步排查:
第一步:确认Kaggle的GPU加速器是否正常分配
Kaggle的Notebook有时候会出现加速器自动切换回CPU的情况,或者会话重启后GPU没正确挂载:
- 点击Notebook右上角的「Settings」按钮,切换到「Accelerator」选项卡,确认选中的是GPU(比如T4、P100这类),而不是「None」。
- 确认后点击「Save」,然后重启会话(「Runtime」→「Restart session」)。
- 重启后运行以下代码验证GPU是否被TensorFlow识别:
如果输出是import tensorflow as tf print("可用GPU数量: ", len(tf.config.list_physical_devices('GPU'))) print("GPU是否可用: ", tf.test.is_gpu_available())0或者False,说明Kaggle没给你分配GPU资源,可能是当前竞赛/数据集的GPU配额暂时用完了,建议过段时间再试,或者新建一个Notebook实例。
第二步:先验证模型本身是否正常(排除GPU干扰)
咱们先强制TensorFlow用CPU加载模型,看看是不是模型文件或者自定义对象的问题:
import os os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # 强制使用CPU # 重新加载模型 model = load_model(PRETRAINED_DIR / "gesture_two_branch_mixup.h5", compile=False, custom_objects=custom_objs)
如果CPU模式下能正常加载模型,说明问题确实出在GPU/CUDA的配置上,而不是模型本身的问题。
第三步:重置Kaggle环境并重新对齐依赖版本
Kaggle的环境缓存可能导致库版本冲突,试试重置环境并重新安装对应版本的TensorFlow:
- 点击「Runtime」→「Factory reset runtime」,重置整个环境。
- 重置后运行以下命令安装指定版本的TensorFlow:
!pip install tensorflow==2.18.0 - 安装完成后再次重启会话,然后重新检查GPU状态和加载模型。
第四步:检查自定义对象(custom_objs)的GPU兼容性
你加载模型时用到了custom_objs,如果自定义层里有依赖CUDA的操作,可能在GPU初始化阶段触发错误:
- 先尝试去掉
custom_objs参数加载模型(如果模型允许的话),看看是否还会报错。 - 如果必须用自定义对象,检查自定义层的代码,有没有在TensorFlow初始化GPU之前就调用了CUDA相关的函数,这类操作可能会干扰CUDA的初始化流程。
第五步:查看系统日志获取更多错误细节
如果以上步骤都没解决问题,咱们看看Kaggle的GPU系统日志,找更具体的错误线索:
!nvidia-smi # 查看GPU驱动状态 !cat /var/log/nvidia-smi.log | grep -i error # 过滤错误日志
如果nvidia-smi命令直接报错,说明Kaggle的GPU驱动没有正确加载,这时候可能是平台的临时故障,建议换个时间段重启Notebook,或者联系Kaggle官方支持反馈问题。
如果所有方法都试过还是不行,你可以尝试新建一个Kaggle Notebook,复制代码和数据路径过去重新运行,有时候旧的会话会残留一些无法修复的环境问题。
内容来源于stack exchange




