提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

记录 飞腾2000服务器上编译paddlepaddle中出现的一些小问题

一、下载paddle源码

git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle
git checkout [分支名]

提示:网不好git连不上的,可以更换git网址为:hub.fastgit.org。

二、编译

创建并进入一个叫build的目录下:

cmkdir build && cd build

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

ulimit -n 4096

执行cmake 我这里是python3 编译的

cmake .. -DPY_VERSION=3 -DPYTHON_EXECUTABLE=`which python3` -DWITH_ARM=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_XBYAK=OFF -DWITH_RCCL=OFF -DWITH_NCCL=OFF -DWITH_CONTRIB=OFF  -DWITH_MKL=OFF -DWITH_MKLDNN=OFF -DWITH_GPU=OFF -DWITH_XBYAK=OFF -DGIT_URL=https://hub.fastgit.org

后面指定依赖下载的网址了,因为公司网原因git网址连接不上,我更换了网址
cmake 的时候configure 会报错,缺某些module,pip3 install 安装一下即可,装完之后再重新cmake

使用以下命令来编译,注意,因为处理器为ARM架构,如果不加TARGET=ARMV8则会在编译的时候报错:

make TARGET=ARMV8 -j$(nproc)

编译过程中会从git下载代码,如果clone出错,就cd 对应的文件路径下 替换掉git网址就可以了

sed -i "s/github.com/hub.fastgit.org/g" `grep "github.com" -rl ./`

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


# 三、安装

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

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

测试

在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/786789f3445f498c6a1fd4d9cd3897ac7233700df0c6ae2fd78079eba89bf3fb
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 ]

参考文档
https://www.paddlepaddle.org.cn/documentation/docs/zh/install/compile/arm-compile.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐