最近在用百度的paddlepadle框架跑一个文本语义匹配任务,原本我服务器的cuda瓦特掉了所以一直是使用服务器的cpu跑(不用百度的飞桨平台跑是1是因为GPU免费算力时长有限,2是因为这个项目不需要可视化没必要用它的平台),发现有点慢于是决定重装服务器系统(同学帮忙)重新下载cuda进行加速训练。
服务器系统版本:Linux Ubuntu18.04版本
首先是通过用户名、密码以及ip用Git Bash连接到服务器,之后安装Anaconda这里就不再赘述。
1.在Linux下安装GPU版本的PaddlePaddle
环境要求:python必须是3.6以上,pip必须是20.2.2以上,与Ubuntu18.04版本相对应我此处是选用下载的CUDA11.0 的PaddlePaddle,linux的命令行如下:
python -m pip install paddlepaddle-gpu==2.1.2.post110 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
但此时我还没有下载CUDA,所以报错,安装PaddlePaddle并不成功
2. 下载安装CUDA
在https://developer.nvidia.com/cuda-toolkit-archive中找到对应的CUDA版本
(这个官网需要注册登录)
运行下列命令就可以了,重启服务器之后验证CUDA是否安装成功:用nvidia-smi命令
可以看到右上角CUDA Version:11.4 ,CUDA安装成功!
再检查cuda,控制台输入
nvcc -V
发现控制台输出的CUDA版本是9.2,与我的11.4不符合(问题:安装成功但版本不符)
解决:需要用 vim 去导出一下 path。
(在有 vim 的情况下)打开终端,输入
vim .bashrc
先按 i
进入 insert 模式,然后在最后两行加入:
export PATH="/usr/local/cuda-11.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH"
输入完成后先按 Esc 然后打个 (冒号),然后 wq
保存并且退出按下回车,然后需要刷新一下 bashrc,即:source .bashrc
. 然后打开终端输入 nvcc -V
检查 CUDA 的版本:
可以看到CUDA的版本是11.4没毛病了,然后安装cuDNN。
2.安装cuDNN
在官网https://developer.nvidia.com/rdp/cudnn-archive里找到匹配CUDA你下载的那个版本的cuDNN,(我是先下载到自己windows电脑上然后用xftp传输到服务器上,如下图)
然后用如下命令进行解压
tar zxvf cudnn-11.0-linux-x64-v8.0.5.39.tgz
解压之后cd 到cuda文件夹下,然后在 cuda 前的根目录下执行下面的命令,实际上就是复制两个文件并且赋予权限:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
最后用以下命令检查 CUDNN 是否安装成功:
cat cuda/include/cudnn_version.h |grep ^#
输出版本说明代表安装正确!
3. 重复步骤1,安装正确的paddlepaddle-gpu版本
安装完成后您可以使用 python
或 python3
进入python解释器,输入import paddle
,再输入 paddle.utils.run_check()
运行这个python文件
如果出现PaddlePaddle is installed successfully!
,说明您已成功安装。
4.运行文本匹配任务时报错没找到paddlenlp库
需要下面命令加载最新的paddlenlp库
pip install --upgrade paddlenlp -i https://pypi.org/simple
但是,但是,但是报错了!
报错信息:
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 20.3.4 from /home/a/.local/lib/python2.7/site-packages/pip (python 2.7)/home/a/anaconda3/envs/Padnlp/lib/python3.8/site-packages/paddle/fluid/framework.py:300: UserWarning: You are using GPU version Paddle, but your CUDA device is not set properly. CPU device will be used by default.
warnings.warn(
Running verify PaddlePaddle program ...
WARNING:root:You are using GPU version PaddlePaddle, but there is no GPU detected on your machine. Maybe CUDA devices is not set
翻译过来具体有以下信息:
问题:第一行的WARNING: pip报错:一个旧的脚本包装程序正在调用pip。这将在未来版本的pip中失败。
解决:报错信息的第三行告诉怎么解决~To avoid this problem you can invoke Python with '-m pip' instead of running pip,为了避免这个问题,您可以用“-m pip”调用Python,而不是直接运行pip。
所以加载最新的paddlenlp库的命令应该改为:
python -m pip install --upgrade paddlenlp -i https://pypi.org/simple
问题:又报一错误:DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020.
解决:翻译过来就是我的Python 2.7已经在2020年失效了,可明明我下载的python版本是3.8,不知为什么一直跳到2.7版本,真服了,查了一下资料是因为默认的python环境为2.7,所以使用pip安装的时候会提示这个错误,所以现在应该改掉配置文件默认python的具体位置替换成python3 :
1)查询python3的地址:
which python3
2)写个配置文件:
vi ~/.bash_profile
按i
进入插入模式,往里面写入,这个取决于你python3的具体位置
PATH="/usr/bin:${PATH}"
export PATH
alias python="/home/a/anaconda3/bin/python3"
然后ESC后:wq进行保存退出,注意:插入的最后一行代码是写的你自己的python3的位置,不要直接复制我的以免发生错误 !
3)之后我们每次希望时候python3环境的时候,就先输入:
source ~/.bash_profile
俩bug都调完了,那么再进行一下安装paddlenlp的命令:
python -m pip install --upgrade paddlenlp -i https://pypi.org/simple
ok,此时paddlenlp初始化成功,文本匹配任务的代码终于在gpu上跑起来了~接下来就是训练、验证调参了。
5.明明下载了GPU的PaddlePaddle却在CPU上跑
问题:运行验证文件,验证PaddlePaddle是否安装成功,显示成功但是是在cpu上运行(如下图)
解决:删除CPU版本的Paddle,重新下载GPU版本的Paddle,命令如下:
卸载CPU版本的PaddlePaddle:
python -m pip uninstall paddlepaddle
重装
CUDA11.0的PaddlePaddle:
python -m pip install paddlepaddle-gpu==2.1.2.post110 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
参考引用资料:
Ubuntu的cuda、cuDNN环境搭建:
https://mp.weixin.qq.com/s?src=11×tamp=1630050808&ver=3277&signature=4cBHAZQmFFgSu1x1xwdz3EnutO9VdAo6nvBlKb-78LodgCn3UX*s0NadI4RQjKjdiZBuLq0m3FWQL8t5WzD89DOQidVmyM5NL5X6flo2wPQafTEn*6mSAY3f0EI9HJcZ&new=1
python版本过期,更改运行环境:
https://blog.csdn.net/weixin_44495738/article/details/112585772
解决正在使用GPU版本的Paddle,但您的CUDA设备设置不正确问题:
You are using GPU version Paddle, but your CUDA device is not set properly.
https://blog.csdn.net/qq_43585377/article/details/114387345
2021/8/27记