大家好,我是散步,很荣幸能和大家分享一个搭建飞桨全系列产品开发和使用环境的小工具。希望它能够帮助你在新场景下快速搭建飞桨工作台,让大家能够更简单地将飞桨安利给身边的朋友。

飞桨框架怎么调用gpu 飞桨怎么下载_人工智能

简介

你是否在新的虚拟环境或者新电脑上配置飞桨环境时发现一个个克隆飞桨的仓库很麻烦?没有关系!我给大家提供了一个超级方便的工具,你可以一键安装飞桨框架以及CUDA(目前该工具默认安装CUDA11.2版本)和CUDNN的环境配置,并且可以一键下载并安装自己想要的飞桨套件,省去搜索、下载、环境配置的时间,更专注于项目内容的开发。

你可以通过AI Studio项目的挂载数据集或者GitHub仓库获取该工具(后文统称“一键飞桨”工具)。

  • AI Studio项目

https://aistudio.baidu.com/aistudio/datasetdetail/189777


飞桨框架怎么调用gpu 飞桨怎么下载_github_02

操作步骤

接下来我将详细介绍在Linux和Windows系统上如何使用“一键飞桨”工具。

备注:所有操作都在安装工具解压后的文件夹内完成。

飞桨框架怎么调用gpu 飞桨怎么下载_人工智能_03

Linux环境下使用说明

Linux环境下的下载

如果仅仅为了下载,你可以直接在解压“一键飞桨”后的文件目录下输入bash main.sh命令行,随后输入1即可进入下载选择界面。

飞桨框架怎么调用gpu 飞桨怎么下载_github_04

在下载选择界面,通过连续输入飞桨框架或者飞桨套件对应的大写字母,即可下载对应的仓库。假设我们想下载飞桨框架Paddle仓库、飞桨模型压缩工具PaddleSlim仓库、飞桨轻量化推理引擎Paddle Lite仓库,我们可以连续输入大写字母ABC,即可实现以上仓库的自动下载。根据图片所示,可以大概了解套件的下载方法,例如:

飞桨框架怎么调用gpu 飞桨怎么下载_github_05

最后看到以下内容,就说明已下载成功!

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_06

Linux环境下的安装

为了实现飞桨框架以及飞桨套件的安装,首先在命令行输入source main.sh,即出现以下界面。

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_07

随后输入2以执行安装飞桨框架以及飞桨套件,出现的界面如下图所示。

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_08

随后输入1以安装飞桨框架及对应CUDA环境。输入2以安装之前下载好的飞桨套件。

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_09

Windows环境下使用说明

Windows环境中的下载

输入python main.py然后输入对应的字母完成下载。如果你没有安装git bash,此时会自动下载并安装git bash。注意,请一路按照默认安装!不要自己改安装地点。

飞桨框架怎么调用gpu 飞桨怎么下载_人工智能_10

输入字母后便进入下载方式的选择,此时推荐第一次选择N,第二次选择Y即可使用gitee的http方式下载各个仓库,速度较快。

最后,当看到下方内容,就说明已经下载成功啦!

飞桨框架怎么调用gpu 飞桨怎么下载_人工智能_11

Windows环境下的安装

在对应虚拟环境中执行python main.py,其他按照提示操作即可完成飞桨框架的安装和所有已下载套件的安装。

飞桨框架怎么调用gpu 飞桨怎么下载_github_12

除了可以安装飞桨框架,目前“一键飞桨”工具支持下载和安装的飞桨套件如下:(不断更新中)

  • PaddleDetection
  • PaddleSpeech
  • PaddleClas
  • PaddleSeg
  • PaddleNLP
  • PaddleVideo
  • PaddleOCR
  • PaddleGAN
  • PaddleSlim
  • FastDeploy 

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_13

工具制作过程分享

虽然该项目看起来简单,但实际整个工具的制作过程遇见了较多困难。在此特别感谢帮助我测试的每个朋友,因为你们让项目更为稳健。制作工具的初始,我也考虑过直接使用Python做成跨平台下载与安装工具,但考虑到可实现性和速度,最终采用了更简单直接的功能实现方式。同时,为了防止安装问题发生,安装代码中还加入了很多防御性检查(是否安装、是否下载、是否安装成功),最大程度提高了工具的稳健性。接下来我将针对Linux和Windows版本分别介绍实现过程中的困难点:

飞桨框架怎么调用gpu 飞桨怎么下载_人工智能_14

Linux环境工具制作分享

主项目的入口主要起到任务分发的作用,制作过程中先保证了每部分的独立功能后才进行整体集成,以保证单元的可执行、可测试。

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_15

为了快速实现功能,这里选择了简单粗暴的shell数组方式。对于下载部分的实现可在download_paddle.sh里查看:

飞桨框架怎么调用gpu 飞桨怎么下载_github_16

如果你想要加入新的下载仓库,可以用同样的方式在下面加入即可。在环境安装环节,考虑到网络可能存在不稳定的情况,采用“wget -c”保证飞桨程序安装包能顺利安装。

飞桨框架怎么调用gpu 飞桨怎么下载_linux_17

与CPU版本的飞桨不同,GPU版本安装好后还需进行环境配置。

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_18

环境配置环节,CUDA和CUDNN的安装最为让人头痛。为此,加入检测环境和驱动CUDA版本的判断,以覆盖大部分用户安装的基础环境。同时根据NVIDIA官方文档详细对照了gcc版本确定了安装逻辑(CUDA程序安装对gcc版本有要求)。这让不同用户都可以稳定安装,避免报错。

飞桨框架怎么调用gpu 飞桨怎么下载_linux_19

接下来是CUDNN安装环节,在这一部分我还做了多项检查保证安装的正确:

飞桨框架怎么调用gpu 飞桨怎么下载_linux_20

脚本的最后加入环境变量,以让默认链接过程能搜索到对应的依赖。

这里使用CUDA而非网上常见的CUDA 11.2 等完成操作,是因为CUDA的本质是软链接,在完成安装后会被自动软链接为安装版本。软链接对象可在对应文件夹下使用ll命令查看。通过这种方式,可实现WSL和Linux实体机的共同兼容。

飞桨框架怎么调用gpu 飞桨怎么下载_linux_21

至此,下载和安装的脚本思路已经介绍完毕,接下来我将介绍有关套件安装脚本的一个值得注意的小技巧:

部分套件需要运行python脚本以验证效果。通过使用```覆盖部分python脚本,实现了用python – c在shell脚本中验证完整套件。

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_22

也可以通过逐个分割实现相同目的。但过于繁琐,并不推荐。

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_23

至此,Linux环境工具制作过程已经大概介绍完毕。总体来说使用Linux安装脚本制作较为简单(个人偏爱)。

飞桨框架怎么调用gpu 飞桨怎么下载_人工智能_24

Windows环境工具制作分享

Windows工具的制作比Linux环境要繁琐的多。因为很多调用方式特殊,且与Linux完全不兼容,所以在查阅工具的过程中花费了很多时间。这里我采用在脚本中直接下载安装git-windows的方式,以实现Linux环境的下载工具的直接复用。

对于Windows环境下的飞桨安装工具,一开始我没有想好怎么利用当前虚拟环境解释器去安装对应的环境,只能用这种方法对需要pip安装的库进行安装:

飞桨框架怎么调用gpu 飞桨怎么下载_人工智能_25

之后我看到了可以通过sys.executable获得当前解释器的路径,这就给了我们直接运行命令行的可能,之后的pip安装都会在前面加上这样一句用于对应虚拟环境解释器的指定:

飞桨框架怎么调用gpu 飞桨怎么下载_linux_26

在Windows环境下,由于默认命令行缺少很多工具,所以我们要通过powershell简介进行下载、安装、转移操作:

飞桨框架怎么调用gpu 飞桨怎么下载_github_27

此时最难的一步是安装CUDNN,需要满足以下条件:

1)管理员权限操作,因为CUDA的安装地点默认在需要管理员操作权限的地方;

2)复制文件后需要覆盖目标文件;

3)在powershell或者cmd中实现这些操作。

最后我和小伙伴讨论出一个折中的方案,我们通过一个间接的python文件执行拷贝,同时显式指定了需要覆盖。

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_28

飞桨框架怎么调用gpu 飞桨怎么下载_linux_29

但这里面临另一个问题,由于我们安装的环境是python3.7,但shutil的copytree只有在python3.8之后的版本才支持显式覆盖的操作,所以在这里对源码进行了改进:

飞桨框架怎么调用gpu 飞桨怎么下载_paddlepaddle_30

看完了飞桨安装和环境配置,我们最后来看下套件的安装,其全部实现逻辑在paddle_tools.py中。由于我们需要把套件安装到对应的执行环境中,并且要满足在对应文件夹下执行命令的需求,所以在每个执行函数的开头都必须进行一个“初始化”的操作:

飞桨框架怎么调用gpu 飞桨怎么下载_飞桨框架怎么调用gpu_31

这里的cd_dst_dir就是进入目标文件夹的意思,通过获取函数名和当前目录可以直接让os.system运行的cmd进入预期文件夹,便可实现后续指令的顺利运行:

飞桨框架怎么调用gpu 飞桨怎么下载_人工智能_32

部分Windows用户会在安装PaddleDetection过程中遇到pycootools编译问题,导致库无法使用。这里加入了提示和下载,以保证安装后的直接使用:

飞桨框架怎么调用gpu 飞桨怎么下载_linux_33

至此,我们大致浏览了Linux和Windows的飞桨环境配置、安装、套件下载工具的制作流程。希望对你有些帮助,理论上你也可以根据这样的一套模板改造出自己的任何安装工具。

飞桨框架怎么调用gpu 飞桨怎么下载_github_34

总结

本项目还在不断更新迭代,后续还将加入PaddleRS、PaddleTS 、Paddle3D、PaddleRec、VisualDL库和飞桨awesome-DeepLearning仓库。如果你有想法,欢迎加入和我一起完善这个工具或各类bug报告。后续,我们还会逐步补充完善各库的简介,以帮助大家简单轻松的探索其他套件。