使用TensorFlow GPU训练时Jupyter内核立即崩溃求助
问题描述
在WSL2(Debian/Ubuntu)环境下使用Jupyter Notebook,Python代码、TensorFlow CPU训练均正常,但执行GPU训练(model.fit(x=train_images, y=train_labels, epochs=10))时内核立即崩溃,日志报错:
Could not load library libcudnn_cnn_infer.so.8. Error: libcuda.so: cannot open shared object file: No such file or directory
环境信息:
- Windows 10 最新版本,WSL2运行Ubuntu和Debian
- GPU:NVIDIA GeForce GTX 1660,Windows端已通过GeForce Experience更新驱动,
nvidia-smi可正常显示硬件信息 - 已按TensorFlow官方指南搭建环境:Miniconda创建Python3.9的
tf环境,安装ipykernel后Jupyter正常;安装GPU依赖、配置路径、TensorFlow后可检测到GPU,但训练时崩溃 - 已确认
libcudnn_cnn_infer.so.8在LD_LIBRARY_PATH中,尝试过重命名相关文件、添加/lib/wsl/lib/libcuda.so到路径,问题未解决
解决步骤
1. 验证WSL2的CUDA Toolkit版本
确保安装的是NVIDIA CUDA Toolkit for WSL2(而非原生Linux版本),执行命令验证版本是否与TensorFlow要求匹配(如TensorFlow 2.10+对应CUDA 11.2+):
nvcc --version
2. 修复libcuda.so软链接
WSL2中libcuda.so需从/lib/wsl/lib/目录软链接到系统库路径,不要手动复制或重命名,执行以下命令:
sudo ln -s /lib/wsl/lib/libcuda.so.1 /usr/lib/x86_64-linux-gnu/libcuda.so sudo ln -s /lib/wsl/lib/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so
验证链接是否生效:
ls -l /usr/lib/x86_64-linux-gnu/libcuda.so
3. 全局配置LD_LIBRARY_PATH
将路径写入全局配置文件,确保终端和Jupyter都能继承:
- 编辑
~/.bashrc或/etc/profile,添加:export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/lib/wsl/lib:$LD_LIBRARY_PATH - 使配置立即生效:
source ~/.bashrc - 验证路径加载:
echo $LD_LIBRARY_PATH
4. 配置Jupyter继承环境变量
Jupyter可能未继承终端的环境变量,需手动配置:
- 生成Jupyter配置文件(若未生成):
jupyter notebook --generate-config - 编辑
~/.jupyter/jupyter_notebook_config.py,添加:import os os.environ['LD_LIBRARY_PATH'] = '/usr/local/cuda/lib64:/lib/wsl/lib:' + os.environ.get('LD_LIBRARY_PATH', '')
5. 测试TensorFlow GPU检测
在Jupyter中运行以下代码,确认GPU识别状态:
import tensorflow as tf print(tf.test.is_gpu_available()) print(tf.config.list_physical_devices('GPU')) print(tf.version.VERSION)
若此处出现加载错误,说明CUDA/CUDNN版本不匹配,需重新安装对应版本依赖。
6. 重启WSL2会话
执行命令重启WSL2,确保所有配置生效:
wsl --shutdown
重新打开WSL终端后启动Jupyter Notebook测试。
内容的提问来源于stack exchange,提问作者Daniel Swarts
相关产品推荐
相关产品推荐

