上云无忧 > 文档中心 > 百度智能云飞桨 - 飞腾/鲲鹏下从源码编译
飞桨PaddlePaddle开源深度学习平台
百度智能云飞桨 - 飞腾/鲲鹏下从源码编译

文档简介:
环境准备: 处理器:FT2000+/Kunpeng 920 2426SK。 操作系统:麒麟 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 的源码编译。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

环境准备

  • 处理器:FT2000+/Kunpeng 920 2426SK

  • 操作系统:麒麟 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.15,如果操作系统提供的源包括了合适版本的 cmake,直接安装即可,否则需要源码安装

    wget https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8.tar.gz 
    tar -xzf cmake-3.16.8.tar.gz && cd cmake-3.16.8 
    ./bootstrap && make && sudo make install 
  2. Paddle 内部使用 patchelf 来修改动态库的 rpath,如果操作系统提供的源包括了 patchelf,直接安装即可,否则需要源码安装,请参考patchelf 官方文档,后续会考虑在 ARM 上移出该依赖。

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

  4. 将 Paddle 的源代码克隆到当下目录下的 Paddle 文件夹中,并进入 Paddle 目录

    git clone https://github.com/PaddlePaddle/Paddle.git 
    cd Paddle 
  5. 切换到develop分支下进行编译:

    git checkout develop 
  6. 并且请创建并进入一个叫 build 的目录下:

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

    ulimit -n 4096 
  8. 执行 cmake:

    具体编译选项含义请参见编译选项表

    For Python2:

    cmake .. -DPY_VERSION=2 -DPYTHON_EXECUTABLE=`which python2` -DWITH_ARM=ON -DWITH_TESTING=OFF

    For Python3:

    cmake .. -DPY_VERSION=3 -DPYTHON_EXECUTABLE=`which python3` -DWITH_ARM=ON -DWITH_TESTING=OFF 
  9.  -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_XBYAK=OFF
    
  10. -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_XBYAK=OFF
    
  11. 使用以下命令来编译,注意,因为处理器为 ARM 架构,如果不加TARGET=ARMV8则会在编译的时候报错。

    make TARGET=ARMV8 -j$(nproc)
    
  12. 编译成功后进入Paddle/build/python/dist目录下找到生成的.whl包。

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

    pip install -U(whl 包的名字)`或`pip3 install -U(whl 包的名字)
    

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

验证安装

安装完成后您可以使用 python 或 python3 进入 python 解释器,输入import paddle ,再输入 paddle.utils.run_check()

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

在 mobilenetv1 和 resnet50 模型上测试

wget -O profile.tar https://paddle-cetc15.bj.bcebos.com/profile.tar?authorization=bce-auth
-v1/4409a3f3dd76482ab77af112631f01e4/2020-10-09T10:11:53Z/-1/host/786789f3445f498c6a
1fd4d9cd3897ac7233700df0c6ae2fd78079eba89bf3fb 

tar xf profile.tar && cd profile 

python resnet.py --model_file ResNet50_inference/model --params_file ResNet50
_inference/params # 正确输出应为:[0.0002414  0.00022418 0.00053661 0.00028639 
0.00072682 0.000213 #              0.00638718 0.00128127 0.00013535 0.0007676 ] 

python mobilenetv1.py --model_file mobilenetv1/model --params_file mobilenetv1
/params # 正确输出应为:[0.00123949 0.00100392 0.00109539 0.00112206 0.00101901 
0.00088412 #              0.00121536 0.00107679 0.00106071 0.00099605] 

python ernie.py --model_dir ernieL3H128_model/ # 正确输出应为:[0.49879393 0.5012061 ] 

如何卸载

请使用以下命令卸载 PaddlePaddle:

pip uninstall paddlepaddle 

pip3 uninstall paddlepaddle 

备注

已在 ARM 架构下测试过 resnet50, mobilenetv1, ernie, ELMo 等模型,基本保证了预测使用算子的正确性,如果您在使用过程中遇到计算结果错误,编译失败等问题,请到issue中留言,我们会及时解决。

预测文档见doc,使用示例见Paddle-Inference-Demo

相似文档
  • 前言: 很高兴在【零基础实践深度学习】课程中与您相见,非常感谢您选择本课程作为深度学习实践的入门教材。本课程由百度杰出架构师、飞桨产品负责人和资深研发人员共同打造。他们在人工智能和深度学习领域深耕多年,作为行业的领航人,有着丰富的教学经验和工业实践经验。教程中阐述的很多观点和实践,都是作者多年的经验累积,是入门深度学习必须要掌握的基本功。
  • 1. 人工智能、机器学习、深度学习的关系: 近些年人工智能、机器学习和深度学习的概念十分火热,但很多从业者却很难说清它们之间的关系,外行人更是雾里看花。在研究深度学习之前,先从三个概念的正本清源开始。概括来说,人工智能、机器学习和深度学习覆盖的技术范畴是逐层递减的,三者的关系如 图1 所示,即:人工智能 > 机器学习 > 深度学习。
  • 上一节我们初步认识了神经网络的基本概念(如神经元、多层连接、前向计算、计算图)和模型结构三要素(模型假设、评价函数和优化算法)。本节将以“波士顿房价预测”任务为例,向读者介绍使用Python和NumPy来构建神经网络模型的思考过程和操作方法。
  • 1. 深度学习框架: 近年来,深度学习在很多机器学习任务中都有着非常出色的表现,在图像识别、语音识别、自然语言处理、机器人、网络广告投放、医学自动诊断和金融等领域都有着广泛应用。面对繁多的应用场景,深度学习框架有助于建模者聚焦业务场景和模型设计本身,省去大量而繁琐的代码编写工作,其优势主要表现在如下两个方面:
  • 1. 飞桨设计之“道”: 当读者使用飞桨框架编写多个深度学习模型后,会发现程序呈现出“八股文”的形态。即不同的程序员、使用不同模型、解决不同任务的时候,他们编写的建模程序是极其相似的。虽然这些设计在某些“极客”的眼里缺乏精彩,但从实用性的角度,我们更期望建模者聚焦需要解决的任务,而不是将精力投入在框架的学习上。因此使用飞桨编写模型是有标准的套路设计的,只要通过一个示例程序掌握使用飞桨的方法,编写不同任务的多种建模程序将变得十分容易。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部