在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)
最近在用百度的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
成功在GPU上运行!
参考引用资料:
Ubuntu的cuda、cuDNN环境搭建:
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记
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)