环境:
系统:centos7
CPU:Intel(R) Xeon(R) Gold 5220 CPU @ 2.20GHz 36核
GPU:Tesla V100*4
查看CPU信息:cat /proc/cpuinfo
查看GPU信息:nvidia-smi
一、安装CUDA11.2
附:TensorFlow/cuda版本对照:
二、安装TensorFlow2.4
pip install tensorflow-gpu==2.4
安装验证:
import tensorflow as tf
tf.test.is_gpu_available()
此时返回
发现无法启动GPU
三、解决找不到libcusolver.so.10的问题
cd /usr/local/cuda/lib64 # 进入库文件夹
ls -al
mv libcusolver.so.11 libcusolver.so.10
即可解决
四、安装CUDNN
虽然我们的系统是centos,但是要下载Linux通用版本,不要下载centos RPM版
下载完成后 tar -zxvf 将文件解压,然后执行下列代码
(根据自己安装的目录适当改动)
# 复制cudnn头文件
sudo cp cuda/include/* /usr/local/cuda/include/
# 复制cudnn的库
sudo cp cuda/lib64/* /usr/local/cuda/lib64/
# 添加可执行权限
sudo chmod +x /usr/local/cuda/include/cudnn.h
sudo chmod +x /usr/local/cuda/lib64/libcudnn*
再验证tensorflow 2.4,GPU服务启动成功
跑了以前基于TensorFlow1.14的代码、以及bert4keras的代码,均可以正常运行
五、TensorFlow GPU设置
5.1 使用CPU或指定单GPU
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # 不添加该变量默认使用GPU,-1使用cpu,其他数值使用指定GPU
5.2 使用多GPU
import tensorflow as tf
strategy = tf.distribute.MirroredStrategy()
print('Number of devices: {}'.format(strategy.num_replicas_in_sync))
with strategy.scope():
model=create_model()
model.compile()
经验证,在同一数据集上对bert进行fine tune,使用CPU、单GPU、4GPU的训练时间分别为:
36核CPU 2219 单GPU 273s 4GPU 547s
4GPU用的时间比单GPU还长,可能是有些参数设置不对,研究后再来更新