安装环境Ubuntu16.04 + 1080ti + CUDA9.0 + cuDNN7.4 + tensorflow1.8
一.禁用nouveau第三方驱动
打开编辑配置文件: sudo gedit /etc/modprobe.d/blacklist.conf
在最后一行添加:blacklist nouveau
改好后执行命令:sudo update-initramfs -u
重启使之生效:reboot
二.重启后按Ctrl+Alt+F1 进入命令行界面
执行命令:lsmod | grep nouveau
查看是否禁用,无反应则已禁用
禁用界面:sudo /etc/init.d/lightdm stop
关闭桌面
ppa安装NVIDIA驱动:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-3**
(1080ti适合384,970适合340)
恢复界面:sudo service lightdm start
重启, 输入nvidia-smi
判断是否安装成功
输入watch -n 0 nvidia-smi
动态看第0块卡的状态
如果使用run安装显卡驱动, 选项不选DKMS和兼容32位, 卸载使用sudo /usr/bin/nvidia-uninstall
运行.run需要加参数--no-opengl-files --no-x-check -no-nouveau-check
参考https://blog.csdn.net/qq_36342854/article/details/95209968
ubuntu18.04关闭图形界面 sudo systemctl set-default multi-user.target
, 开启sudo systemctl set-default graphical.target
三.安装CUDA
下载Library for Linux版本.deb,先安装base再安装patch
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
配置环境变量:
vim ~/.bashrc
最后一行添加:
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
然后source ~/.bashrc
四.安装tensorflow-gpu
虚拟环境下pip install tensorflow-gpu==1.8
五.安装cuDNN
tar -zxvf cudnn-9.0-linux-x64-v6.0.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d
若import tensorflow提示没有libcudnn.so.7:
这个报错要么是环境变量配置问题,要么是CUDNN连接建立问题。
1.环境变量
在~/.bashrc 的最后添加PATH和LD_LIBRARY_PATH
2.CUDNN连接建立
cd /usr/local/cuda/lib64
sudo rm -rf libcudnn.so libcudnn.so.7 #删除原有版本号,版本号在cudnn/lib64中查询
sudo ln -s libcudnn.so.7.4.2 libcudnn.so.7 #生成软连接,注意自己下载的版本号
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig #立即生效
查看CUDA版本
cat /usr/local/cuda/version.txt
查看 CUDNN 版本:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
对于CUDA11
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
临时切换CUDA版本
sudo ldconfig /usr/local/cuda-9.0/lib64
如果长期多版本并存, 直接改/usr/local/cuda软链接即可
限制模型所用显存
限制当前脚本可用显存,代码头部添加第一行,session 语句进行如第二行的修改
config = tf.ConfigProto(allow_soft_placement=True) # 如果你指定的设备不存在,允许TF自动分配设备
# log_device_placement = True : 是否打印设备分配日志
# per_process_gpu_memory_fraction设置每个GPU应该拿出多少容量给进程使用,0.7代表70%
config.gpu_options.per_process_gpu_memory_fraction=0.7
# 使用allow_growth option,刚一开始分配少量的GPU容量,然后按需慢慢的增加,由于不会释放内存,所以会导致碎片
# config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
或者直接写成
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
在tf中,通过命令 "with tf.device('/cpu:0'):",允许手动设置操作运行的设备。如果手动设置的设备不存在或者不可用,就会导致tf程序等待或异常,为了防止这种情况,可以设置tf.ConfigProto()中参数allow_soft_placement=True,允许tf自动选择一个存在并且可用的设备来运行操作。
设置使用哪块GPU
os.environ['CUDA_VISIBLE_DEVICES'] = '0' # 使用GPU 0
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1' # 使用GPU 0,1
或在命令行输入
CUDA_VISIBLE_DEVICES=0,1 python yourcode.py
附: pycharm没有外部变量会产生import错误
--data_dir=/home/renduo/PycharmProjects/SealCls/imagenetsrc/datasets/data_dir
--export_dir=/home/renduo/models/imagenet/resnet/export
--pretrained_model_checkpoint_path=/home/renduo/Downloads/resnet_imagenet_v2_fp32_20181001
--model_dir=/home/renduo/models/imagenet/resnet/ckpt
--fine_tune=False # 一般不填
--eval_only=False # 一般不填
使用imagenet_pred做预测
--data_dir=/home/renduo/PycharmProjects/SealCls/imagenetsrc/datasets/data_dir
--export_dir=/home/renduo/models/imagenet/resnet/export/1547175708
--raw_data_dir=/home/renduo/datasets/OCR/Card/source
resnet使用预训练模型
--data_dir=/home/renduo/PycharmProjects/SealCls/imagenetsrc/datasets/data_dir
--pretrained_model_checkpoint_path=/home/renduo/models/imagenet/resnet/pretrained_model/resnet_imagenet_v2_fp32_20181001
--model_dir=/home/renduo/models/imagenet/resnet/ckpt
--export_dir=/home/renduo/models/imagenet/resnet/export
--resnet_size=50
--resnet_version=2
# 若要继续checkpoint训练则改变epoch为剩余的次数
--train_epochs=10
网友评论