Windows 下从源码编译¶
环境准备¶
Windows 7/8/10 专业版/企业版 (64 bit)
Python 版本 3.6/3.7/3.8/3.9/3.10 (64 bit)
Visual Studio 2017 社区版/专业版/企业版
选择CPU/GPU¶
如果你的计算机硬件没有 NVIDIA GPU,请编译 CPU 版本的 Paddle Inference 预测库
如果你的计算机硬件有 NVIDIA GPU,推荐编译 GPU 版本的 Paddle Inference 预测库,建议安装 CUDA 10.2/11.0/11.1/11.2
本机编译过程¶
1. 安装必要的工具 cmake, git, python, Visual studio 2017:
cmake:建议安装 CMake3.17 版本, 官网下载链接。安装时注意勾选
Add CMake to the system PATH for all users
,将 CMake 添加到环境变量中。git:官网下载链接,使用默认选项安装。
python:官网链接,可选择 3.6/3.7/3.8/3.9/3.10 中任一版本的 Windows installer(64-bit) 安装。安装时注意勾选
Add Python 3.x to PATH
,将 Python 添加到环境变量中。Visual studio 2017:官网链接,需要登录后下载,建议下载 Community 社区版。在安装时需要在工作负荷一栏中勾选 使用
C++ 的桌面开发
和通用 Windows 平台开发
,并在语言包一栏中选择英语
。
2. 在 Windows 桌面下方的搜索栏中搜索 x64 Native Tools Command Prompt for VS 2017
或 适用于 VS 2017 的 x64 本机工具命令提示符
,右键以管理员身份打开终端。之后的命令均在该终端中执行。
3.使用 pip 命令安装 Python 依赖:
通过 python --version
检查默认 python 版本是否是预期版本,因为你的计算机可能安装有多个 python,你可通过修改系统环境变量的顺序来修改默认 Python 版本。
安装 numpy, protobuf, wheel, ninja
pip3 install numpy protobuf wheel ninja
4. 创建编译 Paddle 的文件夹(例如 D:\workspace),进入该目录并下载源码:
mkdir D:\workspace && cd /d D:\workspace
git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle
5. 切换到 2.3 分支下进行编译:
git checkout release/2.3
6. 创建名为 build 的目录并进入:
mkdir build
cd build
7. 执行 cmake:
编译 CPU 版本的 Paddle Inference:
cmake .. -GNinja -DWITH_GPU=OFF -DCMAKE_BUILD_TYPE=Release -DWITH_UNITY_BUILD=ON -DWITH_TESTING=OFF -DON_INFER=ON
编译 GPU 版本的 Paddle Inference:
cmake .. -GNinja -DWITH_GPU=ON -DCMAKE_BUILD_TYPE=Release -DWITH_UNITY_BUILD=ON -DWITH_TESTING=OFF -DON_INFER=ON
使用 TensorRT: 如果想使用 TensorRT 进行推理,首先需要下载并解压TensorRT, 在 cmake 中开启 WITH_TENSORRT, 并通过 TENSORRT_ROOT 指定刚刚解压的 TensorRT 路径。假设下载的 TensorRT lib 解压 到 D 盘目录下, cmake 编译指令如下:
cmake .. -GNinja -DWITH_GPU=ON -DCMAKE_BUILD_TYPE=Release -DWITH_UNITY_BUILD=ON -DWITH_TESTING=OFF -DON_INFER=ON -DWITH_TENSORRT=ON -DTENSORRT_ROOT="D:/TensorRT"
其他编译选项含义请参见编译选项表。
选项 | 说明 | 默认值 |
---|---|---|
WITH_GPU | 是否支持GPU | ON |
WITH_AVX | 是否编译含有AVX指令集的飞桨二进制文件 | ON |
WITH_PYTHON | 是否内嵌PYTHON解释器并编译Wheel安装包 | ON |
WITH_TESTING | 是否开启单元测试 | OFF |
WITH_MKL | 是否使用MKL数学库,如果为否,将使用OpenBLAS | ON |
WITH_SYSTEM_BLAS | 是否使用系统自带的BLAS | OFF |
WITH_DISTRIBUTE | 是否编译带有分布式的版本 | OFF |
WITH_BRPC_RDMA | 是否使用BRPC,RDMA作为RPC协议 | OFF |
ON_INFER | 是否打开预测优化 | OFF |
CUDA_ARCH_NAME | 是否只针对当前CUDA架构编译 | All:编译所有可支持的CUDA架构;Auto:自动识别当前环境的架构编译 |
WITH_TENSORRT | 是否开启 TensorRT | OFF |
TENSORRT_ROOT | TensorRT_lib的路径,该路径指定后会编译TRT子图功能eg:/paddle/nvidia/TensorRT/ | /usr |
注意:
如果本机安装了多个 CUDA,将使用最新安装的 CUDA 版本,且无法指定。
如果本机安装了多个 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 -DCMAKE_BUILD_TYPE=Release -DWITH_UNITY_BUILD=ON -DWITH_TESTING=OFF -DON_INFER=ON
8. 执行编译:
ninja -j4
9. 编译成功后进入 python\dist 目录下找到生成的 .whl 包并安装:
cd python\dist
pip3 install(whl 包的名字)--force-reinstall
10. 在 paddle_inference_install_dir 目录下有生成的 paddle inference c++ 库和头文件等
11. 验证安装 安装完成后你可以使用 python 进入 python 解释器,输入:
import paddle
paddle.utils.run_check()
如果出现 PaddlePaddle is installed successfully!
,说明你已成功安装。
恭喜,至此你已完成 Paddle Inference 的编译安装