Kaggle中TensorFlow无法注册cuDNN等工厂的GPU问题求助
Kaggle T4 x2加速器下TensorFlow GPU注册错误解决方案
问题场景
在Kaggle笔记本选择T4 x2加速器启用GPU支持后,导入以下TensorFlow相关库:
import tensorflow as tf from tensorflow.keras import layers, models, regularizers from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.utils import image_dataset_from_directory
出现如下GPU相关错误,导致无法正常使用GPU:
2024-04-03 04:22:20.903189: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered 2024-04-03 04:22:20.903245: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered 2024-04-03 04:22:20.904729: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
已尝试重启内核、新建笔记本迁移代码,问题仍存在;但使用PyTorch时无GPU相关异常。
解决方案
方案1:导入前设置环境变量规避库冲突
在导入TensorFlow之前添加以下代码,强制TensorFlow使用独立的CUDA配置,避免与Kaggle环境预注册的组件冲突:
import os # 关闭cuDNN自动调优,减少冲突概率 os.environ['TF_CUDNN_USE_AUTOTUNE'] = '0' # 启用GPU内存动态增长 os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true' # 指定仅使用第一块GPU(适配T4 x2环境) os.environ['CUDA_VISIBLE_DEVICES'] = '0' # 屏蔽TensorFlow冗余日志 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' # 之后再导入TensorFlow库 import tensorflow as tf from tensorflow.keras import layers, models, regularizers from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.utils import image_dataset_from_directory
方案2:降级TensorFlow到兼容版本
Kaggle默认的TensorFlow版本可能与环境中的CUDA库存在兼容性问题,尝试降级到稳定兼容版(如2.15.0):
!pip install tensorflow==2.15.0 --upgrade
运行后重启内核,再执行原有代码。
方案3:禁用XLA加速
XLA(加速线性代数)模块可能与Kaggle的CUDA环境冲突,导入TensorFlow后添加以下代码禁用XLA:
import tensorflow as tf tf.config.optimizer.set_jit(False) # 后续导入其他Keras库 from tensorflow.keras import layers, models, regularizers ...
问题原因
这类错误本质是Kaggle环境预安装的CUDA组件(cuDNN、cuFFT、cuBLAS)与TensorFlow自带的CUDA库发生注册冲突,PyTorch因使用独立的CUDA Runtime环境,因此不受该冲突影响。
内容的提问来源于stack exchange,提问作者Mahfuzur Mahim Rahman
相关产品推荐
相关产品推荐

