飞桨框架的源码编译包括源代码的编译和链接,最终生成的目标产物包括:
二:基础概念
三:编译方式
飞桨分为CPU版本和GPU版本。如果您的计算机没有NvidiaGPU,请选择CPU版本构建安装。如果您的计算机含有NvidiaGPU且预装有CUDA/CuDNN,也可选择GPU版本构建安装。
推荐配置及依赖项
1、稳定的Github连接,主频1GHz以上的多核处理器,9GB以上磁盘空间。2、GCC版本4.8或者8.2;或者VisualStudio2015Update3。3、Python版本2.7或3.5以上,pip版本9.0及以上;CMakev3.10及以上;Git版本2.17及以上。请将可执行文件放入系统环境变量中以方便运行。4、GPU版本额外需要NvidiaCUDA9/10,CuDNNv7及以上版本。根据需要还可能依赖TensorRT。
一:环境准备
除了本节开头提到的依赖,在Ubuntu上进行飞桨的源码编译,您还需要准备GCC8编译器等工具,可使用下列命令安装:
sudoapt-getinstallgccg++makecmakegitvimunrarpython3python3-devpython3-pipswigwgetpatchelflibopencv-devpip3installnumpyprotobufwheelsetuptools若需启用cuda加速,需准备cuda、cudnn。上述工具的安装请参考nvidia官网,以cuda10.1,cudnn7.6为例配置cuda环境。
#cudashcuda_10.1.168_418.67_linux.runexportPATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}exportLD_LIBRARY_PATH=/usr/local/cuda-10.1/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}#cudnntar-xzvfcudnn-10.1-linux-x64-v7.6.4.38.tgzsudocp-acuda/include/cudnn.h/usr/local/cuda/include/sudocp-acuda/lib64/libcudnn*/usr/local/cuda/lib64/编译飞桨过程中可能会打开很多文件,Ubuntu18.04默认设置最多同时打开的文件数是1024(参见ulimit-a),需要更改这个设定值。
在/etc/security/limits.conf文件中添加两行。
*hardnoopen102400*softnoopen102400重启计算机,重启后执行以下指令,请将${user}切换成当前用户名。
su${user}ulimit-n102400若在TensorRT依赖编译过程中出现头文件虚析构函数报错,请在NvInfer.h文件中为classIPluginFactory和classIGpuAllocator分别添加虚析构函数:
virtual~IPluginFactory(){};virtual~IGpuAllocator(){};二:编译命令
使用Git将飞桨代码克隆到本地,并进入目录,切换到稳定版本(gittag显示的标签名,如release/2.0)。飞桨使用develop分支进行最新特性的开发,使用release分支发布稳定版本。在GitHub的Releases选项卡中,可以看到飞桨版本的发布记录。
#创建并进入build目录mkdirbuild_cuda&&cdbuild_cuda#执行cmake指令cmake..-DPY_VERSION=3\-DWITH_TESTING=OFF\-DWITH_MKL=ON\-DWITH_GPU=ON\-DON_INFER=ON\..使用make编译
make-j4
编译成功后可在dist目录找到生成的.whl包
pip3installpython/dist/paddlepaddle-2.0.0-cp38-cp38-linux_x86_64.whl
预测库编译
makeinference_lib_dist-j4
cmake编译环境表
以下介绍的编译方法都是通用步骤,根据环境对应修改cmake选项即可。
三:NVIDIAJetson嵌入式硬件预测库源码编译
NVIDIAJetson是NVIDIA推出的嵌入式AI平台,PaddleInference支持在NVIDIAJetson平台上编译预测库。具体步骤如下:
1、准备环境:
除了本节开头提到的依赖,在Windows10上编译飞桨,您还需要准备VisualStudio2015Update3。飞桨正在对更高版本的编译支持做完善支持。
在命令提示符输入下列命令,安装必需的Python组件。
pip3installnumpyprotobufwheel二:编译命令
mkdirbuildcdbuildcmake..-G"VisualStudio142015Win64"-Ax64-DWITH_GPU=OFF-DWITH_TESTING=OFF-DON_INFER=ON-DCMAKE_BUILD_TYPE=Release-DPY_VERSION=3使用VisualStudio打开解决方案文件,在窗口顶端的构建配置菜单中选择Releasex64,单击生成解决方案,等待构建完毕即可。
结果验证
一:pythonwhl包
编译完毕后,会在python/dist目录下生成一个PythonWheel安装包,安装测试的命令为:
importpaddle.fluidasfluidfluid.install_check.run_check()二:c++lib
预测库编译后,所有产出均位于build目录下的paddle_inference_install_dir目录内,目录结构如下。version.txt中记录了该预测库的版本信息,包括GitCommitID、使用OpenBlas或MKL数学库、CUDA/CUDNN版本号。
build/paddle_inference_install_dir├──CMakeCache.txt├──paddle│├──include││├──paddle_anakin_config.h││├──paddle_analysis_config.h││├──paddle_api.h││├──paddle_inference_api.h││├──paddle_mkldnn_quantizer_config.h││└──paddle_pass_builder.h│└──lib│├──libpaddle_inference.a(Linux)│├──libpaddle_inference.so(Linux)│└──libpaddle_inference.lib(Windows)├──third_party│├──boost││└──boost│├──eigen3││├──Eigen││└──unsupported│└──install│├──gflags│├──glog│├──mkldnn│├──mklml│├──protobuf│├──xxhash│└──zlib└──version.txtInclude目录下包括了使用飞桨预测库需要的头文件,lib目录下包括了生成的静态库和动态库,third_party目录下包括了预测库依赖的其它库文件。
在编译Paddle前,需要在MacOSX预装AppleClang11.0和Python3.8,以及python-pip。请使用下列命令安装Paddle编译必需的Python组件包。
pip3installnumpyprotobufwheelsetuptools二:编译命令
#创建并进入build目录mkdirbuild&&cdbuild#执行cmake指令cmake..-DPY_VERSION=3\-DWITH_TESTING=OFF\-DWITH_MKL=ON\-DON_INFER=ON\..使用make编译
pip3installpython/dist/paddlepaddle-2.0.0-cp38-cp38-macosx_10_14_x86_64.whl