1.起因
- 测试深度学习的项目,方向的论文代码是tensorflow1、python3,cuda主要用的是cuda10
- 我的机器显卡是3060的(Y9000P);然后租的机器是3090的,借的机器是A100的,显卡太新,跑不了研究方向的很多项目(很长一段时间我都在抑郁,我的显卡不赖呀,竟然跑不起来代码,都想换课题了)
2.尝试
(1)在3060的机器上安装cuda 10(拿到机器后的本能反应)
- 查看电脑显卡:
- 查看显卡驱动是否正常,(cmd后输入):nvidia-smi
- 如果不正常,装驱动
- 正常,查看cuda版本:nvcc -V
- 如果cuda版本符合项目需求,ok;
- 如果cuda版本不符合项目需求,查自己的显卡支持的cuda版本有哪些,非常重要,查看自己的3060, 3090是否支持cuda10, 不然装cuda10白忙)
答:RTX3060支持的cuda版本最低是11.1,不支持cuda10.0 - 找一个能支持项目cuda版本的机器
- 再次nvidia-smi看驱动,是否装驱动
- nvcc -V看cuda版本
- 如果cuda版本符合项目需求,皆大欢喜
- 如果cuda版本不符合项目需求,卸载现有的cuda
- 重新装cuda,参考链接:https://blog.csdn.net/sinat_36721621/article/details/115326307
选择版本:https://developer.nvidia.com/cuda-toolkit-archive - 开始conda搭建自己的环境
(2)tensorflow1的项目使用tensorflow2环境跑
(可以,但是需要改,会报以下几种错误,一般import tensorflow.compat.v1 as tf代替 import tensorflow as tf 可解决);
- tf.placeholder() is not compatible with eager execution.
(解决办法:在程序的开始加:tf.compat.v1.disable_eager_execution()) - module ‘tensorflow’ has no attribute ‘…’ (解决办法:import
tensorflow.compat.v1 as tf代替 import tensorflow as tf ) - TypeError: batch_to_space_v2() got an unexpected keyword argument
‘block_size’ (解决办法:import tensorflow.compat.v1 as tf代替 import
tensorflow as tf ) - Not creating XLA devices, tf_xla_enable_xla_devices not set (可暂时性的忽视)
(3)换项目,读代码,读项目中的issues
(非常有用,对环境搭不起来有启发性作用,能避免踩别人踩过的坑。)
(4)开始认真看报错:
- libcudart.so.8.0: cannot open shared object file: No such file or
directory (说明我的cuda版本不合适,项目要cuda8, 我的却是cuda11.7; 或在tensorflow的版本不合适) - errors_impl.NotFoundError: libcudart.so.8.0 (同上)
(5)租老的机器或者服务器一键换镜像
感觉原作者写得简直就是我的内心写照,什么时候才能解决完这各种各样的问题呀
参考链接:参考的博客