You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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:

  1. 点击「Runtime」→「Factory reset runtime」,重置整个环境。
  2. 重置后运行以下命令安装指定版本的TensorFlow:
    !pip install tensorflow==2.18.0
    
  3. 安装完成后再次重启会话,然后重新检查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

火山引擎 最新活动