- 前言
- 1、创建虚拟环境
- 2、安装库
- 3、CUDA、cuDNN安装
- 4、基础测试
- 5、实例测试
- 结语
抢了半年显卡,终于5.1时在pdd买到了原价的rtx3050(买不起不是我的问题,是矿老板的)。不用来玩机器学习太浪费了,刚好对Reinforcement Learning很感兴趣,今天就费了半天功夫搭环境,做下记录。
我准备搭建的环境构成如下:
- gym,模拟问题环境。
- PARL,搭建模型和训练Agent。
- PaddlePaddle-gpu,利用GPU训练。
我个人的电脑环境如下:
- Windows11 21H2
- i7 10700+rtx3050
- Anaconda
之前搭pytorch时有经验了,最好创建一个conda虚拟环境来做专门的事情,这样一旦有任何问题,你可以直接把环境删了重来。
$ conda create -n RL_env python=3.8
根据我的惨痛教训,Python 3.10是不行的,PARL装不上。看了看官方的文档,给的Python 3.6+,这里建议用3.8。
2、安装库首先切换到刚刚创建的虚拟环境,我们这里统一用pip安装包。
$ conda activate RL_env
有时候,错误的安装顺序也会导致依赖冲突,下面的安装顺序是我测试过的,确保没有问题:
$ pip install gym
$ pip install pygame # 可选,我装的flappy-bird-gym环境依赖于pygame
$ pip install parl
$ python -m pip install paddlepaddle-gpu==2.2.2.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
gym和parl直接装就好,没有问题,paddlepaddle-gpu是一个比较麻烦的东西。因为要用到gpu,所以依赖于cuda,根据PaddlePaddle官网给出的安装说明你需要自己去选择符合自己系统的安装链接。
另外,如果你没有Nvidia的GPU,那么直接
$ pip install paddlepaddle
安装CPU版本的即可,也不需要后续CUDA安装步骤。
3、CUDA、cuDNN安装理论上,你应当尽可能安装对应上面选择的CUDA版本。但是根据我的实测,CUDA11.6(截止2022.5.5最新)与CUDA11.2版本的PaddlePaddle-gpu完全兼容(也与cudatoolkit为11.1的pytorch兼容)。
-
首先,去Nvidia Developer下载你需要安装版本的CUDA。如果你不想装11.6,可以去Archive查找以往版本,这里你能下载到11.2。
-
CUDA是安装包的形式,安装没什么 *** 作难度。如果你是第一次安装CUDA,那么直接按照“精简”的方式安装就可以了(不过这样会安装到C盘),也不需要你去自己修改环境变量,比较友好。如果你想安装多个版本的CUDA,那么建议选择“自定义”,然后仅仅安装CUDA,不要安装多个版本的Nsight。
-
安装好CUDA后,去cuDNN页面寻找对应你CUDA版本的cuDNN链接库。需要注意的是,paddlepaddle-gpu对于不同版本的CUDA有不同版本的cuDNN要求。CUDA10.2,对应下载cuDNN7,也就是类似v7.65这样的版本;而CUDA11,对应下载cuDNN8,即v8.33之类的版本。
-
cuDNN下载下来是一个压缩包,里面包含3个文件夹,直接把它解压到你的CUDA安装目录,如果是默认的那么应该为:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\版本号\
。移入时需要管理员权限。
我们装了一堆东西,现在该测试一下能不能正常运行了。
$ conda activate RL_env
$ python
Python 3.8.13 (default, Mar 28 2022, 06:59:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import paddle
>>> paddle.utils.run_check()
Running verify PaddlePaddle program ...
W0505 17:26:10.254304 20020 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 8.6, Driver API Version: 11.6, Runtime API Version: 11.2
W0505 17:26:10.257297 20020 device_context.cc:465] device: 0, cuDNN Version: 8.4.
PaddlePaddle works well on 1 GPU.
PaddlePaddle works well on 1 GPUs.
PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now.
我们调用Paddle提供的检测接口,如果paddle.utils.run_check()
能够有类似我上面的输出,那么我们的环境就大功告成了。
5、实例测试PS:
import paddle
会报告一串warning,这个是paddle自己的问题,它调用的一些接口已经废弃(deprecated)了,你要么根据报告自行修改,要么等paddle更新。
这里我跑了一下Paddle文档中提到的CartPole测试,这个算是RL领域的Hello World了。这个项目的源代码都是在仓库里公开的,我就不贴了,给一张运行结果:
上图是训练过程,训练结束后会生成一个model.ckpt的模型。把上图中我选中的部分注释删掉,就可以进行测试。测试时会显示CartPole左右移动的过程,挺有意思的:
这篇博客对PARL的环境搭建过程做了一个记录。我看网上有很多的教程,不过我怀疑他们是不是真的走过一遍,你按照他们的大概率跑不起来。接下来我会尝试对之前提到的flappy-bird-gym做一次强化学习训练,当作入门了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)