PaddlePaddle/PaddleX本地离线安装(分别以C++和Python为例)

一. 本地离线安装简介

本地离线安装通常采用源码编译的方式,可以把预编译包下载到本地,然后进行离线编译。

1.1 为什么需要源码编译

对科研或工程人员来说,可能会遇到一些需要自己开发op的场景,可以在python层面编写op,但如果对性能有严格要求的话则必须在C++层面开发op,对于这种情况,需要用户源码编译飞桨,使之生效。

1.2 源码编译的产物

源码编译通常包括C++的编译和Python的编译,类型不同产物也不同:
C++:

含有 C++ 接口的头文件及其二进制库:用于C++环境,将文件放到指定路径即可开启飞桨使用之旅。

Python:

Python Wheel 形式的安装包:用于Python环境,也就是说,前面讲的pip安装属于在线安装,这里属于本地安装。

1.3 源码编译的原理

PaddlePaddle主要由C++语言编写,通过pybind工具提供了Python端的接口,飞桨的源码编译主要包括编译和链接两步。

  1. 编译过程由编译器完成,编译器以编译单元(后缀名为 .cc 或 .cpp 的文本文件)为单位,将 C++ 语言 ASCII 源代码翻译为二进制形式的目标文件。
  2. 链接过程使分离编译成为可能,由链接器完成。

二. 本地离线安装准备

2.1 编译准备(C++/Python通用)

PaddlePaddle分为 CPU 版本和 GPU 版本。如果您的计算机没有 Nvidia GPU,请选择 CPU 版本构建安装。如果您的计算机含有 Nvidia GPU 且预装有 CUDA / CuDNN,也可选择 GPU 版本构建安装。

2.2 本地编译推荐配置(C++)

1、稳定的 Github 连接,主频 1 GHz 以上的多核处理器,9 GB 以上磁盘空间。
2、GCC 版本 4.8 或者 8.2;或者 Visual Studio 2015 Update 3。
3、Python 版本 2.7 或 3.5 以上,pip 版本 9.0 及以上;CMake v3.10 及以上;Git 版本 2.17 及以上。请将可执行文件放入系统环境变量中以方便运行。
4、GPU 版本额外需要 Nvidia CUDA 9 / 10,CuDNN v7 及以上版本。根据需要还可能依赖 TensorRT。

2.3 本地编译推荐配置(Python)

1、稳定的 Github 连接,主频 1 GHz 以上的多核处理器,9 GB 以上磁盘空间。
2、Python 版本 2.7 或 3.5 以上,pip 版本 9.0 及以上,请将可执行文件放入系统环境变量中以方便运行。
3、GPU 版本额外需要 Nvidia CUDA 9 / 10,CuDNN v7 及以上版本。根据需要还可能依赖 TensorRT。

三. Windows本地离线安装(C++源码编译)

这种源码编译的方式比较复杂,一般开发也用不到,不推荐,更推荐使用预编译包的方式,百度已经帮我们编译好了。

3.2 编译工具安装

安装必要的工具 cmake, git, python, Visual studio 2017/2019:
1.cmake:建议安装 CMake3.17 版本, 官网下载链接。安装时注意勾选 Add CMake to the system PATH for all users,将 CMake 添加到环境变量中。
2.git:官网下载链接,使用默认选项安装。
3.python:官网链接,可选择 3.6/3.7/3.8/3.9/3.10 中任一版本的 Windows installer(64-bit)安装。安装时注意勾选 Add Python 3.x to PATH,将 Python 添加到环境变量中。
4.Visual studio:需根据 CUDA 版本选择对应的 Visual studio 版本,当只编译 CPU 版本或者 CUDA 版本 < 11.2 时,安装 VS2017;当 CUDA 版本 >= 11.2 时,安装 VS2019。官网链接,需要登录后下载,建议下载 Community 社区版。在安装时需要在工作负荷一栏中勾选 使用 C++的桌面开发通用 Windows 平台开发,并在语言包一栏中选择 英语。

3.3 打开Visual studio 终端

在 Windows 桌面下方的搜索栏中搜索终端,若安装的是 VS2017 版本,则搜索 x64 Native Tools Command Prompt for VS 2017适用于 VS 2017 的 x64 本机工具命令提示符;若安装的是 VS2019 版本,则搜索 x64 Native Tools Command Prompt for VS 2019 或 适用于 VS 2019 的 x64 本机工具命令提示符,然后右键以管理员身份打开终端。后续的命令将在该终端执行。

3.4 使用pip命令安装 Python 依赖

1.通过 python --version 检查默认 python 版本是否是预期版本,因为你的计算机可能安装有多个 python,可通过修改系统环境变量的顺序来修改默认 Python 版本。
2.安装 numpy, protobuf, wheel, ninja(这里是联网安装,也可以到各自的官网直接下载whl文件来离线安装):

pip install numpy protobuf wheel ninja

3.5 创建编译Paddle的文件夹

mkdir D:\workspace && cd /d D:\workspace
#也可以先下载好Paddle的源码
git clone https://github.com/PaddlePaddle/Paddle.git

cd Paddle

3.6 编译安装

切换到 2.2 分支下进行编译:

git checkout release/2.4

创建名为 build 的目录并进入:

mkdir build
cd build

执行 cmake:
编译 CPU 版本的 Paddle:

cmake .. -GNinja -DWITH_GPU=OFF

编译 GPU 版本的 Paddle:

cmake .. -GNinja -DWITH_GPU=ON

如果本机安装了多个 CUDA,将使用最新安装的 CUDA 版本。若需要指定 CUDA 版本,则需要设置环境变量和 cmake 选项,例如:

set CUDA_TOOLKIT_ROOT_DIR=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.2
set PATH=%CUDA_TOOLKIT_ROOT_DIR:/=\%\bin;%CUDA_TOOLKIT_ROOT_DIR:/=\%\libnvvp;%PATH%
cmake .. -GNinja -DWITH_GPU=ON -DCUDA_TOOLKIT_ROOT_DIR="%CUDA_TOOLKIT_ROOT_DIR%"

如果本机安装了多个 Python,将使用最新安装的 Python 版本。若需要指定 Python 版本,则需要指定 Python 路径,例如:

cmake .. -GNinja -DWITH_GPU=ON -DPYTHON_EXECUTABLE=C:\Python38\python.exe -DPYTHON_INCLUDE_DIR=C:\Python38\include -DPYTHON_LIBRARY=C:\Python38\libs\python38.lib

执行编译:

ninja

编译完毕后,会在 python/dist 目录下生成一个 Python Wheel 安装包。编译成功后进入 python\dist 目录下找到生成的 .whl 包:

cd python\dist

安装编译好的 .whl 包:

pip install(whl 包的名字)--force-reinstall

至此已完成 PaddlePaddle 的编译安装

3.7 验证安装和卸载

安装完成后你可以使用 python 进入 python 解释器,输入:

import paddle
paddle.utils.run_check()

如果出现PaddlePaddle is installed successfully!,说明你已成功安装。
如果要卸载
CPU 版本的 PaddlePaddle:

pip uninstall paddlepaddle

GPU 版本的 PaddlePaddle:

pip uninstall paddlepaddle-gpu

3.8 编译产物

预测库编译后,所有产出均位于build目录下的paddle_inference_install_dir目录内,目录结构如下。version.txt 中记录了该预测库的版本信息,包括Git Commit ID、使用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.txt

Include目录下包括了使用飞桨预测库需要的头文件,lib目录下包括了生成的静态库和动态库,third_party目录下包括了预测库依赖的其它库文件。

四. 预编译包离线安装

4.1 C++预编译包下载

在这里插入图片描述

C++预编译包下载地址
如图所示,MSVC 2017即Microsoft Visual C++2017,只要安装了Visual Studio即可。然后根据自己开发机的GPU情况选择适合的CUDA版本的预编译包。

4.2 Python预编译包安装

在这里插入图片描述
Python预编译包下载地址
如图所示,上面编译好的whl文件可以直接下载到本地然后安装。根据自己开发机的GPU情况选择适合的CUDA版本的预编译包。
下载后在本地运行:

#安装编译好的 .whl 包:
pip install(whl 包的名字)--force-reinstall

即可安装成功。
如果使用PaddleX等端到端开发套件,则需要查看PaddleX源码下的requirements.txt文档:

tqdm
scipy
colorama
cython
pycocotools
visualdl >= 2.1.1
paddleslim == 2.2.1
shapely
paddlepaddle-gpu >= 2.2.0
opencv-python
scikit-learn==0.23.2
lap
motmetrics
matplotlib
chardet
openpyxl

需要到这些包的官网上直接下载各自的whl文件,如tqdm:
tqdm-4.38.0-py2.py3-non-any.whl
然后分别离线安装即可。
对于找不到whl文件的包如lap等,可以进行源码安装,即将源码包下载到本地后,进入该目录,并在Python环境下运行:

python setup.py build_ext --inplace
python setup.py build_ext install

在这里插入图片描述

即可安装。

猜你喜欢

转载自blog.csdn.net/m0_46339652/article/details/128502911
今日推荐