一份带有浓重Windows气息的多机多卡PARL训练环境部署教程

  • 深度学习小白挑战Ubuntu18.04多机多卡PARL训练环境部署全纪录
    • 1、踩坑一览
    • 2、安装双系统
      • 2.1 变出个空白分区
      • 2.2 弄到Ubuntu18.04U盘启动工具:
      • 2.3 U盘启动点亮Ubuntu
    • 3、Ubuntun18.04环境下依赖包安装。
      • 3.1 换源
      • 3.2 给显卡换Nvidia驱动
      • 3.3 添加中文输入法
      • 3.4 安装CUDA 10.1工具集
      • 3.5 追加cudnn 7.6.4深度学习库
      • 3.6 补充nccl2多U多卡库
      • 3.7 加挂python包管理器Anaconda
    • 4、搭建深度强化学习环境
      • 4.1 虚构一个名为paddle-gpu的python3.7环境
      • 4.2 祭出Paddlepaddle
      • 4.3 最终召唤PARL
    • 5、 四轴无人机项目示例
      • 5.1 DDPG(Deep Deterministic Policy Gradient)算法简介
      • 5.2 项目文件
      • 5.3 运行效果

深度学习小白挑战Ubuntu18.04多机多卡PARL训练环境部署全纪录

您好!我是一名深度学习小白,PaddlePaddle粉。
在Win10底下跑过几个单机单卡训练案例,处理的都是手写数字识别之类的小事情。前两天膨胀了,散了两块老旧显卡,准备挑战一下更有难度的东东。
忽然发现Windows版PaddlePaddle不支持NCCL多U多卡训练库@_@!!
然而某东二手低价捡到的公版Turbo风扇GTX970显卡工作正常又不舍得退。。。。。。
本着初生牛犊不怕死的精神,一不做二不休,强行入坑Ubuntu18.04多机多卡训练环境,捎带跑了个PARL深度强化学习四轴飞行器悬停案例。以下是踩坑实录。

1、踩坑一览

原始系统为Win10家庭版。只有C盘一个分区。要变成双系统需要:
1、变出个空白分区
2、弄到Ubuntu18.04U盘启动工具
3、U盘启动点亮Ubuntu。
对于新安装的Ubuntu18.04系统,要变成多机多卡训练环境需要需要:
1、换源。
2、给显卡换Nvidia驱动
2、添加中文输入法(可选)。
3、安装CUDA10.1工具集
4、追加cudnn7.6.4深度学习库
5、补充nccl2多U多卡库。
6、加挂python包管理器Anaconda
有了这些之后就都简单了:
1、虚构一个名为paddle-gpu的python3.7环境。
2、祭出Paddlepaddle。
3、最终召唤PARL
然后,是:
1、四轴飞行器悬停案例似乎永远没有尽头的试炼

2、安装双系统

2.1 变出个空白分区

系统盘有C盘之外分区的小伙伴请跳过本小节。
win10系统自带磁盘压缩工具,可以在尽可能不移动数据的前提下创建新分区。
启动栏点击Windows管理工具::计算机管理,可打开计算机管理面板。

点磁盘管理,即可打开磁盘管理界面。
我要压缩C盘,右键点C盘,选择压缩卷。输入新分区大小,压缩即可。

新分区全空,啥也没有。右键点它新建简单卷。
一票下一步到格式化分区窗口,默认ntfs文件系统即可。
完工:
细心的小伙伴会发现之前填的大小跟压出来的D盘大小是对不上的。其实是因为压C盘的时候没截图,点D盘后补,尺寸当然对不上了。。。。。。。

2.2 弄到Ubuntu18.04U盘启动工具:

空U盘有一个15G的,实际4G就够了。Ubuntu18.04的ISO光盘镜像从清华源下载。
为了不被纯字符界面的恐惧支配,自然是下载桌面版:Ubuntu-18.04.4-desktop-amd63.iso。
地址:[https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/18.04.4/

win10下制作Ubuntu18.04U盘启动工具需要用到一个叫etcher的烧录工具。可以从这里下载:https://www.balena.io/etcher/
win10操作系统可以用免安装版:Etcher for Windows (x86|x64) (Portable)。
下载后直接打开,ethcer长这样。
点select image选择Ubutntu18.04镜像。选择完毕后点打开。
点击flash烧录。
烧录之后会再验一遍。
烧录完毕会出现EFI引导分区。
启动工具制作完成。

2.3 U盘启动点亮Ubuntu

开机按DEL或F2键进BIOS。方便更换硬件,选不带UEFI字样的U盘启动。这样安装时驱动不与系统绑定,哪天换个不同型号显卡不用担心启动不了系统。
启动后进入Ubuntu18.04安装界面。语言选英文,避免以后出现各种匪夷所思的软件包不兼容错误。点Install Ubuntu进行安装。
键盘布局(Keyboard layout):默认,选English(US),点Continue下一步。
升级和其他软件 (Updates and other software):一定要勾掉安装中升级选项(Download updates while installing Ubuntu)。不然的话过程有可能会慢到让人怀疑人生。。。。。。。
补充一句。联着网的时候,一开始Download updates while installing Ubuntu前面的复选框是灰的,等一会变颜色了就可以取消了。如果等了一会还是取消不了,请一定拔网线。
安装模式(Installation type):选在Win10系统边上装Ubuntu(Install Ubuntu alongside Windows 10)
调整Ubuntu分区大小。请将分割线努力向左拉,让带Ubuntu标志的区域尽可能大一些。点击Intall Now开始安装。
特别细心小伙且记忆力超强的小伙伴会发现总尺寸与D盘尺寸差好多。实际上为了补压缩C盘截图,又压了一遍D盘。可怜的第二主分区就只剩50G了。好在Ubuntu不怎么占地方!(#_#)!!!
因为调整了磁盘区域,会有弹窗提示,点Continue继续。如果仍有弹窗,仍然点击Continue继续。
进入时区选择界面。请任选时区。
用户名和密码界面请自行配置。
安装完毕请重启。
此时会提示拔出U盘,拔掉之后按回车重启。

重启后会进入启动配置界面。默认选项是Ubuntu18.04,Windows 10在最下方。

完工:

3、Ubuntun18.04环境下依赖包安装。

3.1 换源

Ubuntu的源不止相当于Win10的Updater,还相兼具某软件助手、某大师等功能。不换源,干啥都慢。
墙裂推荐阿里源,谁用谁知道。没有换源的情况下请谨慎进行后续操作。因为可能上一天课或者一天班回来,某个操作还没完成。。。。。。
换源之前需要右键开Terminal,完成系统密码设定。否则系统管理员权限闭锁,换不了的。

系统密码设定命令:sudo passwd
输入后会提示输入之前配置的登录密码(password for gz:)。盲打即可。
然后提示输入系统密码(Enter new UNIX password)。盲打。
然后提示重新输入系统密码(Retype new UNIX password)。盲打。
设置完成。

正式开始换源。Ubuntu18.04自带GEdit文本编辑器,以系统管理员权限打开配置文件。
sudo gedit /etc/apt/sources.list
此处可能需要输入设置的UNIX密码,盲打。

在打开的配置文件中注掉Ubuntu官方源。
添加阿里源。点save保存。
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

更新源。sudo apt-get update
可以考虑更新一下系统。吃个饭。sudo apt-get upgrade

3.2 给显卡换Nvidia驱动

Ubuntu18.04安装时添加的显卡驱动相当于Win10公版驱动,不支持GPU加速。
相比Ubuntu16.04纷繁复杂的各种手动装包操作,Ubuntu18.04提供了一键切换功能。
点击App管理器。
点击软件管理器

点击附加驱动(Additonal Drivers)选择440版驱动即可。点Apply Changes执行变更操作。


驱动更换完成,重启。运行Nvidia-smi查看效果。
sudo nvidia-smi

虽然显示CUDA版本为10.2,但是用包管理工具dpkg -l查看真没有。CUDA还是要装的。

3.3 添加中文输入法

CUDA、cudnn、nccl2安装时候坑挺多的,这时候每个中文输入法会抓狂,还是装个吧。
这里选的搜狗中文输入法,因为搜狗贴心的提供了deb安装包,双击即可运行那种。
下载地址:https://pinyin.sogou.com/linux/?r=pinyin
点击立即下载会提示可以运行。但其实建议先保存,因为汉语语言包还没有。。。。。。

切换为保存(Save File),点确定(OK)。

点击App管理器::点设置(Settings)

在区域和语言设置面板(Region & Language),点管理安装的语言(Manage Installed Languages)

提示需要安装,点Install
此处需要输密码。输入配置的UNIX密码

安装完成后,点击添加移除语言包(Install / Remove Languages)添加简体中文(Chinese (simplified))。点击键盘输入管理系统,选fcitx。

愉快的点击搜狗拼音deb安装包,安装,此处需要输密码。安装完成如下。
重启系统。选择中文,搞定。

如果是配置语言包钱安装了deb包,按shift切换输入法中英文输入时会出现乱码。再按两次shift做切换能够回复正常。原来的一次shift变成4次shift。。。。@_@!!!

3.4 安装CUDA 10.1工具集

因为已经安装了驱动,所以要用CUDA 10.1的run包。deb包一定会重装驱动的,然后Ubuntu18.04对驱动版本敏感的特性会暴露无遗,系统分辨率降到800x600。此时需要再走一遍换驱动过程。
run包下载地址:https://developer.nvidia.com/cuda-10.1-download-archive-update1?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=runfilelocal
下载完毕,运行sudo sh cuda_10.1.168_418.67_linux.run
License窗口选择accept。
移动上下箭头按回车键进行安装配置。不要安装driver。不要安装driver。不要安装driver。

安装完毕。

向~/.bashrc中添加环境变量。
#foreverstrong cuda-10.1
export CUDA_HOME=/usr/local/cuda
export PATH= P A T H : PATH: PATH:CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64KaTeX parse error: Expected '}', got 'EOF' at end of input: …LIBRARY_PATH:+:{LD_LIBRARY_PATH}}

点save保存后运行source ~/.bashrc更新环境变量。
运行nvcc --version核对安装信息。版本信息正常,基本完成。有兴趣可以编译示例文档。

3.5 追加cudnn 7.6.4深度学习库

深度学习库下载地址为:
https://developer.nvidia.com/rdp/cudnn-archive
强烈建议下载cuDNN Library for Linux版。deb版并不能双击安装。dpkg后还需要update和install。重点是安装位置比较散,每个位置需要单独配置特别繁琐。
cuDNN Library for Linux版下载完成得到cudnn-10.1-linux-x64-v7.6.4.38.tgz。
解压获取名为cuda的文件夹。运行 tar -xzf cudnn-10.1-linux-x64-v7.6.4.38.tgz


移步cuda文件夹下,将文件夹下对应内容拷贝到/usr/local/cuda-10.1对应目录下。
cd cuda
sudo cp -P lib64/* /usr/local/cuda/lib64/
sudo cp -P include/* /usr/local/cuda/include/


完成。

3.6 补充nccl2多U多卡库

nccl多cpu/gpu通讯库可以支撑大规模并行训练,明显提升深度学习网络训练速度。
下载地址:https://developer.nvidia.com/nccl/nccl-legacy-downloads
下载NCCL v2.6.4, for CUDA 10.1的Local installer for Ubuntu 18.04版。

下载完成得到nccl-repo-ubuntu1804-2.6.4-ga-cuda10.1_1-1_amd64.deb
这次需要手动走一遍dpkg安装流程:
sudo dpkg -i nccl-repo-ubuntu1804-2.6.4-ga-cuda10.1_1-1_amd64.deb
sudo apt-get update
sudo apt-get install libnccl2 libnccl-dev
最终安装位置在/usr/lib/x86_64-linux-gnu下。

3.7 加挂python包管理器Anaconda

做深度网络训练难免弄出来好几个python环境,有Anaconda帮助切换会省掉不少改bashrc的重复工作。
推荐清华源下载。下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
这边选的版本是Anaconda3-5.3.1-Linux-x86_64.sh

到手后添加执行权限。直接运行bash脚本安装。

//添加执行权限
sudo chmod +x Anaconda3-5.3.1-Linux-x86_64.sh
//当前用户安装
bash ./Anaconda3-5.3.1-Linux-x86_64.sh

一路回车等more结束输yes。然后一路yes。

一路yes的话在安装过程中会添加环境变量。重启后直接开终端输入anaconda-navigator就能看见界面了。

为了节省等待时间,直接在终端调用conda config命令换清华源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2
conda config --set show_channel_urls yes

4、搭建深度强化学习环境

4.1 虚构一个名为paddle-gpu的python3.7环境

有界面环境在,一切都简单了。
点环境(Environment)::点创建(Create),输名字,搞定。

4.2 祭出Paddlepaddle

要在虚拟python环境中安装PaddlePaddle,首先需要激活环境。
点击环境名称右侧箭头,选择OpenTerminal即可进入。


环境中pip是有的。直接运行安装命令即可。这次推荐百度源。

pip install paddlepaddle-gpu==1.8.2.post107 -i https://mirror.baidu.com/pypi/simple

安装完毕一定要验。安装完毕一定要验。安装完毕一定要验。

python3
import paddle.fluid
paddle.fluid.install_check.run_check()

若果CUDA没装对,会报找不到CUDA。cudnn没装对会报找不到cudnn。nccl没装对会报只能在单机单卡运行。请自行脑补我这个小白当时是抓狂到什么程度才下定决心把所有的过程贴一遍。

4.3 最终召唤PARL

千呼万唤始出来。有了之前的铺垫,深度强化学习框架PARL的搭建就水到渠成了。
同样是在虚拟环境下:

//安装PARL深度强化学习框架
pip install parl==1.3.1
//安装四轴飞行器强化学习环境
pip install rlschool==0.3.1
//环境参数检查
pip list | grep paddlepaddle
pip list | grep parl
pip list | grep rlschool

至此,深度强化学习环境搭建完成。

5、 四轴无人机项目示例

项目地址:https://github.com/ioaniu/RLPaddlePARL/tree/master/homework/hw5_DDPG

5.1 DDPG(Deep Deterministic Policy Gradient)算法简介

DDPG算法使用深度神经网络搭建动作预测模型(策略网络)和动作评估模型(价值网络),分别拟合动作策略函数和价值函数。接收连续状态空间中环境状态,输出连续动作空间中的响应动作。

价值网络作为表演者,根据环境状态预测下一步应当执行的最佳动作。

价值网络作为评价者,依据当前状态评估所预测动作优劣,进行打分。

价值网络以评价结果与环境反馈结果一致为目标。
策略网络以获取最多分数为目标。

和策略网络同步训练。随着对动作空间不断探索,针对具体状态给出下一步动作的策略模型不断优化。针对对给定状态和动作,用于评估动作优劣程度的评价模型的准确性也同步提升。

为避免训练过程策略网络和价值网络同步更新造成震荡,分开创建两组策略和价值网络。用于实时训练的价值和策略网络每个计算步长都更新数据,但并不直接用于预测和评估。直接用于决策和评估的网络参数则是每隔一段时间从实时训练网络拷贝一次,决策和评估过程中不更新参数。如此保证算法稳定性。

5.2 项目文件

hw5_DDPG项目包含5个文件。分别为:

1、 quadrotor_model.py

  • (用于定义策略网络和价值网络)

2、ddpg.py

  • (定义深度确定性策略网络算法,控制网络更新、计算流程)

3、quadrotor_agent.py

  • (定义智能体,与环境进行交互。从获取环境当前状态和环境对上一轮动作的评价输入ddpg算法用于更新深度网络,从ddpg算法获取动作交给环境执行和评价)

4、evaluate.py

  • (定义评价过程,调用外部环境,统计评价指标)

5、train.py

  • (定义训练流程。将深度网络模型传递给算法模型,将算法模型组装进智能体模型,操纵智能体与环境交互同时统计评价指标,反复迭代推进网络训练过程)

5.3 运行效果

项目执行时单纯在虚拟环境中以python3调用train.py即可。

python3 ./train.py

运行效果如下:
深度强化学习逻辑较为复杂,CPU利用率较高,GPU利用率偏低。

paddlepaddle仅支持数据并行,模型在所有计算单元中均有拷贝,从GPU内存的动态利用率来看,GPU主要用于绘制效果图。
## 6、小结

1、安装双系统要提前备空U盘、下载Ubuntu18.04系统镜像。使用ethcer将iso格式镜像烧录到U盘就能拿到了Ubuntun18.04U盘安装工具。Ubuntu装在磁盘第二主分区,安装前需要使用Win10磁盘压缩工具管理磁盘空间。按部就班即可到手双系统。

2、PARL的环境依赖比较多,需要提前换源保证部署效率。Ubuntu18.04的软件管理组件提供还算良好的驱动变更界面,显卡驱动可以反复更换不用担心玩坏。CUDA 10.1、cudnn7.6.4、nccl2.6.4一个都不能少,单个安装过程的复杂度不算过分,难点反而可能出在官网下载太慢上。好在csdn上不少前辈已经提前下好了文件,搜搜文件版本号还是可以拿的到的。anaconda的图形界面简直算福利了,虚拟Python环境没让人操过心(记得换源,否则还是会慢死)。

3、环境依赖建好了之后PaddlePaddle和PARL安装和使用还都是很流畅的。

4、真在自己机器上跑起来一段时间之后,四轴飞行器飘来飘去的还是很赏心悦目的。

通宵达旦,本贴完结。喜欢请点赞。批评虚心接受。

一份带有浓重Windows气息的PARL多机多卡训练环境部署教程相关推荐

  1. windows驱动数字签名之WHQL完整流程 | WHQL认证环境部署以及HLK测试

    文章目录 第一部分:windows驱动数字签名之WHQL完整流程 一.驱动数字签名背景 二.驱动程序数字签名解决方案-WHQL认证 1. 对开发者的影响 2. WHQL认证主要作用 三.申请WHQL认 ...

  2. 在Windows Azure公有云环境部署企业应用

    作者 王枫 发布于 2014年4月5日 企业内部应用转换为在线服务 Windows Azure已经成为众多IT服务提供商们热议的话题,其中,有的认为只有提供互连网用户服务的应用才适合放在公有云环境内运 ...

  3. ecstore安装 mysql_Ecstore windows+Apache单机部署教程

    声明: 此方案只限于本地化开发. ecstore目前不支持windows的生产环境 第一步:下载安装的文件 Apache下载地址:(httpd-2.2.21-win32-x86-no_ssl.msi) ...

  4. Python简易环境部署安装之Windows 11

    一.Windows系统 正好新笔记本(win11 家庭版)要安装Python,直接先官网下载最新版到本地安装,后面再整理一份封装好的Anaconda部署安装. 1.下载python3.10.2 1.1 ...

  5. php iis mysql windows2003,Windows Server 2003 IIS6.0+PHP5(FastCGI)+MySQL5环境搭建教程 | 系统运维...

    准备篇 一.环境说明: 操作系统:Windows Server 2003 SP2 32位 PHP版本:php 5.3.14 MySQL版本:MySQL5.5.25 二.相关软件下载: 1.PHP下载地 ...

  6. 基于Windows 2008 R2 Core的SQL Server 2008 R2 Cluster部署(Step by Step)

    1. 简介 基于Core系统安装SQL Server有几个好处 Core没有图形化界面,尤其是没有Explorer进程使得系统更稳定,同时也减少了被黑风险 Core只有关键性的进程,避免开启过多程序导 ...

  7. Windows下Eclipse和PyDev搭建完美Python开发环境

    Windows下Eclipse和PyDev搭建完美Python开发环境 之前安装Eclipse,JDK,Python什么的就不说了.直接从安装PyDev开始(借用了几张别人的图): 打开Eclipse ...

  8. Windows Server 2008 R2模板机制作(VMware Workstation)

    本文主要是针对于VMware Workstation平台制作Windows Server 2008 R2模板机的,制作模板机前需要在VMware Workstation中安装好了windows ser ...

  9. Windows 故障转移+Hyper-V 虚机自动迁移高 可用

    Windows 故障转移+Hyper-V 虚机自动迁移高 可用 Windows 故障转移+Hyper-V 虚机自动迁移高... 1 一.系统原理... 3 1.1 高效率的 VMbus 架构... 3 ...

最新文章

  1. python 多级递归_Python文件目录和系统操作,os模块和os.path模块
  2. 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率
  3. ViewPager相互嵌套,导致子ViewPager无法滑动,且子ViewPager中的view无法被点击
  4. docker的常用命令汇总
  5. EXCEL基本操作(一~二)
  6. 一个好的软件开发人员的标准
  7. Ubuntu16.04在线安装MongoDB详细教程
  8. Java环境变量配置详细步骤
  9. pragma comment的使用 pragma预处理指令详解
  10. 啥,不懂Docker 和 K8s 是原罪?
  11. MySQL查询之聚合查询
  12. 人走茶凉!三星关闭最后一家中国手机工厂 因为打不过其他国产厂商?
  13. 丰田汽车顶级供应商 Denso 疑遭勒索攻击,被威胁泄露商业机密
  14. MySQL · 性能优化 · SQL错误用法详解
  15. [渝粤教育] 南京邮电大学 Python语言程序设计基础 参考 资料
  16. 有什么软件可以测试近视的度数,在家怎样测试视力度数,手机微信视力检测
  17. 用计算机弹琴琴谱,在电脑上弹钢琴的软件
  18. Python-爬虫 (BS4数据解析)
  19. C语言获取数组左上,左下,右上,右下三角形的元素
  20. ssh隧道远程mysql_利用SSH隧道方式连接远程MySQL服务器

热门文章

  1. AI-制作镂空剪纸效果
  2. 《埃隆·马斯克,创造未来的人》读后感(一)——童年
  3. UE4\UE5显示鼠标并自定义的鼠标样式
  4. python画图颜色设置_python画图自定义colorbar
  5. 华为手机的6个截屏方法,你都会用吗?不会那你手机可真是白用了
  6. Enabled设置为False时,前景色和背景色也不改变的TextBox 并居中
  7. python去除水印
  8. 【已解决】latex不定积分符号怎么打
  9. “欢乐迎新春,文明过大年”
  10. 有没有宝妈去打过HPV疫苗的,是在哪打的