申威下从源码编译
操作系统:普华, iSoft Linux 5
Python 版本 2.7.15+/3.5.1+/3.6/3.7/3.8 (64 bit)
pip 或 pip3 版本 9.0.1+ (64 bit)
申威机器为SW架构,目前生态支持的软件比较有限,本文以比较trick的方式在申威机器上源码编译Paddle,未来会随着申威软件的完善不断更新。
本文在申威处理器下安装Paddle,接下来详细介绍各个步骤。
将Paddle的源代码克隆到当下目录下的Paddle文件夹中,并进入Paddle目录
切换到较稳定release分支下进行编译:
git checkout [分支/标签名]
例如:
git checkout release/2.0
由于申威暂不支持openblas,所以在此使用blas + cblas的方式,在此需要源码编译blas和cblas。
pushd /opt
wget http://www.netlib.org/blas/blas-3.8.0.tgz
tar xzf blas-3.8.0.tgz
tar xzf cblas.tgz
pushd BLAS-3.8.0
make
popd
pushd CBLAS
make
pushd lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD
ln -s cblas_LINUX.a libcblas.a
cp ../../BLAS-3.8.0/blas_LINUX.a .
ln -s blas_LINUX.a libblas.a
popd
popd
popd
根据requirments.txt安装Python依赖库,注意在申威系统中一般无法直接使用pip或源码编译安装python依赖包,建议使用源的方式安装,如果遇到部分依赖包无法安装的情况,请联系操作系统服务商提供支持。此外也可以通过pip安装的时候加–no-deps的方式来避免依赖包的安装,但该种方式可能导致包由于缺少依赖不可用。
请创建并进入一个叫build的目录下:
mkdir build && cd build
执行cmake:
CBLAS_ROOT=/opt/CBLAS
For Python2:
cmake .. -DPY_VERSION=2 -DPYTHON_EXECUTABLE=`which python2` -DWITH_MKL=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_PYTHON=ON -DREFERENCE_CBLAS_ROOT=${CBLAS_ROOT} -DWITH_CRYPTO=OFF -DWITH_XBYAK=OFF -DWITH_SW=ON -DCMAKE_CXX_FLAGS="-Wno-error -w"
For Python3:
cmake .. -DPY_VERSION=3 -DPYTHON_EXECUTABLE=`which python3` -DWITH_MKL=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_PYTHON=ON -DREFERENCE_CBLAS_ROOT=${CBLAS_ROOT} -DWITH_CRYPTO=OFF -DWITH_XBYAK=OFF -DWITH_SW=ON -DCMAKE_CXX_FLAGS="-Wno-error -w"
-
make -j$(nproc)
编译成功后进入
Paddle/build/python/dist
目录下找到生成的.whl
包。在当前机器或目标机器安装编译好的包:
python2 -m pip install -U(whl包的名字)`或`python3 -m pip install -U(whl包的名字)
恭喜,至此您已完成PaddlePaddle在FT环境下的编译安装。
安装完成后您可以使用 python
或 python3
进入python解释器,输入import paddle
,再输入 paddle.utils.run_check()
如果出现PaddlePaddle is installed successfully!
,说明您已成功安装。
在mobilenetv1和resnet50模型上测试
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:
python3 -m pip uninstall paddlepaddle
或
预测文档见,使用示例见Paddle-Inference-Demo