在自己的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版本

(这个官网需要注册登录)

在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第1张图片

 在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第2张图片

 运行下列命令就可以了,重启服务器之后验证CUDA是否安装成功:用nvidia-smi命令

在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第3张图片

 可以看到右上角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 的版本:

在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第4张图片

 可以看到CUDA的版本是11.4没毛病了,然后安装cuDNN。

2.安装cuDNN

在官网https://developer.nvidia.com/rdp/cudnn-archive里找到匹配CUDA你下载的那个版本的cuDNN,(我是先下载到自己windows电脑上然后用xftp传输到服务器上,如下图)

在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第5张图片

 然后用如下命令进行解压

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 ^# 

输出版本说明代表安装正确!

在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第6张图片

 3. 重复步骤1,安装正确的paddlepaddle-gpu版本

安装完成后您可以使用 python 或 python3 进入python解释器,输入import paddle ,再输入 paddle.utils.run_check()

在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第7张图片

 运行这个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

 在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第8张图片

俩bug都调完了,那么再进行一下安装paddlenlp的命令:

python -m pip install --upgrade paddlenlp -i https://pypi.org/simple

ok,此时paddlenlp初始化成功,文本匹配任务的代码终于在gpu上跑起来了~接下来就是训练、验证调参了。

在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第9张图片

 5.明明下载了GPU的PaddlePaddle却在CPU上跑

问题:运行验证文件,验证PaddlePaddle是否安装成功,显示成功但是是在cpu上运行(如下图)

在自己的GPU上使用CUDA加速跑通paddlenlp项目(环境搭建以及跑通过程中一些遇到的问题)_第10张图片

解决:删除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环境搭建:

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记

你可能感兴趣的:(机器学习,深度学习,人工智能,自然语言处理,paddlepaddle)