飞腾/鲲鹏下从源码编译

    • 操作系统:麒麟v10/UOS

    • Python 版本 2.7.15+/3.5.1+/3.6/3.7/3.8 (64 bit)

    • pip 或 pip3 版本 9.0.1+ (64 bit)

    飞腾FT2000+和鲲鹏920处理器均为ARMV8架构,在该架构上编译Paddle的方式一致,本文以FT2000+为例,介绍Paddle的源码编译。

    目前在FT2000+处理器加国产化操作系统(麒麟UOS)上安装Paddle,只支持源码编译的方式,接下来详细介绍各个步骤。

    1. Paddle依赖cmake进行编译构建,需要cmake版本>=3.10,如果操作系统提供的源包括了合适版本的cmake,直接安装即可,否则需要

      1. ./bootstrap && make && sudo make install
    2. Paddle内部使用patchelf来修改动态库的rpath,如果操作系统提供的源包括了patchelf,直接安装即可,否则需要源码安装,请参考patchelf官方文档,后续会考虑在ARM上移出该依赖。

      1. ./bootstrap.sh
        1. make
        1. make check
        1. sudo make install
      1. 根据安装Python依赖库,在飞腾加国产化操作系统环境中,pip安装可能失败或不能正常工作,主要依赖通过源或源码安装的方式安装依赖库,建议使用系统提供源的方式安装依赖库。

        1. cd Paddle
      2. 切换到较稳定release分支下进行编译:

        1. git checkout [分支名]

        例如:

        1. git checkout release/2.0
      3. 并且请创建并进入一个叫build的目录下:

        1. mkdir build && cd build
      4. 链接过程中打开文件数较多,可能超过系统默认限制导致编译出错,设置进程允许打开的最大文件数:

      5. 执行cmake:

        For Python2:

        1. cmake .. -DPY_VERSION=2 -DPYTHON_EXECUTABLE=`which python2` -DWITH_ARM=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_XBYAK=OFF

        For Python3:

        1. 编译成功后进入Paddle/build/python/dist目录下找到生成的.whl包。

        2. 在当前机器或目标机器安装编译好的.whl包:

          1. pip install -Uwhl包的名字)`或`pip3 install -Uwhl包的名字)

        恭喜,至此您已完成PaddlePaddle在FT环境下的编译安装。

        安装完成后您可以使用 pythonpython3 进入python解释器,输入import paddle ,再输入

        如果出现PaddlePaddle is installed successfully!,说明您已成功安装。

        在mobilenetv1和resnet50模型上测试

        1. wget -O profile.tar https://paddle-cetc15.bj.bcebos.com/profile.tar?authorization=bce-auth-v1/4409a3f3dd76482ab77af112631f01e4/2020-10-09T10:11:53Z/-1/host/786789f3445f498c6a1fd4d9cd3897ac7233700df0c6ae2fd78079eba89bf3fb
        1. tar xf profile.tar && cd profile
        1. python resnet.py --model_file ResNet50_inference/model --params_file ResNet50_inference/params
        2. # 正确输出应为:[0.0002414 0.00022418 0.00053661 0.00028639 0.00072682 0.000213
        3. # 0.00638718 0.00128127 0.00013535 0.0007676 ]
        1. python mobilenetv1.py --model_file mobilenetv1/model --params_file mobilenetv1/params
        2. # 正确输出应为:[0.00123949 0.00100392 0.00109539 0.00112206 0.00101901 0.00088412
        3. # 0.00121536 0.00107679 0.00106071 0.00099605]
        1. python ernie.py --model_dir ernieL3H128_model/

        请使用以下命令卸载PaddlePaddle:

        1. pip uninstall paddlepaddle

        预测文档见doc,使用示例见