目录
- 一. 本地离线安装简介
- 1.1 为什么需要源码编译
- 1.2 源码编译的产物
- 1.3 源码编译的原理
- 二. 本地离线安装准备
- 2.1 编译准备(C++/Python通用)
- 2.2 本地编译推荐配置(C++)
- 2.3 本地编译推荐配置(Python)
- 三. Windows本地离线安装(C++源码编译)
- 3.2 编译工具安装
- 3.3 打开Visual studio 终端
- 3.4 使用pip命令安装 Python 依赖
- 3.5 创建编译Paddle的文件夹
- 3.6 编译安装
- 3.7 验证安装和卸载
- 3.8 编译产物
- 四. 预编译包离线安装
- 4.1 C++预编译包下载
- 4.2 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端的接口,飞桨的源码编译主要包括编译和链接两步。
- 编译过程由编译器完成,编译器以编译单元(后缀名为 .cc 或 .cpp 的文本文件)为单位,将 C++ 语言 ASCII 源代码翻译为二进制形式的目标文件。
- 链接过程使分离编译成为可能,由链接器完成。
二. 本地离线安装准备
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
即可安装。