- NVIDIA CUDA >= 10.0, CuDNN >= 7 (推荐 CUDA 10.2 以上)
- TensorRT >= 7.0.0.11 (推荐 TensorRT-7.2.1.6)
- CMake >= 3.12.2
- GCC >= 5.4.0, ld >= 2.26.1
- PyTorch >= 1.7.0
- TensorFlow >= 1.15.0 (若使用 Linux 操作系统,需额外下载 Tensorflow 1.15.0,并将解压出来的 .so 文件拷贝至
Forward/source/third_party/tensorflow/lib
目录下) - Keras HDF5 (从
Forward/source/third_party/hdf5
源码构建)
使用 CMake 进行构建生成 Makefiles 或者 Visual Studio 项目。根据使用目的,Forward 可构建成适用于不同框架的库,如 Fwd-Torch、Fwd-Python-Torch、Fwd-Tf、Fwd-Python-Tf、Fwd-Keras、Fwd-Python-Keras、Fwd-Onnx 和 Fwd-Python-Onnx。
以 Linux 平台构建 Fwd-Tf 为例,
步骤一:克隆项目
1 git clone https://github.com/Tencent/Forward.git
步骤二:下载 Tensorflow 1.15.0
(仅在 Linux 平台使用 Tensorflow 框架推理时需要)
1 cd Forward/source/third_party/tensorflow/
2 wget https://github.com/neargye-forks/tensorflow/releases/download/v1.15.0/libtensorflow-gpu-linux-x86_64-1.15.0.tar.gz
3 tar -xvf libtensorflow-gpu-linux-x86_64-1.15.0.tar.gz
步骤三:创建 build
文件夹
1 cd ~/Forward/
2 rm -rf build
3 mkdir -p build
4 cd build/
步骤四:使用 cmake
生成构建关系,需指定 TensorRT_ROOT
安装路径
1 cmake .. -DTensorRT_ROOT=<path_to_TensorRT> -DENABLE_TENSORFLOW=ON -DENABLE_UNIT_TESTS=ON
步骤五:使用 make
构建项目
1 make -j
步骤六:运行 unit_test
验证项目是否构建成功
cd bin/
./unit_test --gtest_filter=TestTfNodes.*
# 出现已下提示表示项目构建成
# [ OK ] TestTfNodes.ZeroPadding (347 ms)
# [----------] 22 tests from TestTfNodes (17555 ms total)
# [----------] Global test environment tear-down
# [==========] 22 tests from 1 test case ran. (17555 ms total)
# [ PASSED ] 22 tests.
配置 | 参数名 | 可选值 | 默认值 | 功能 | 备注 |
通用 | TensorRT_ROOT | path_to_TensorRT | N/A | 指定 TensorRT 安装路径 | 必选 |
ENABLE_PROFILING | ON 或 OFF |
OFF |
是否开启性能 Profiling 功能 | 可选 | |
BUILD_PYTHON_LIB | ON 或 OFF |
OFF |
是否构建 Forward 的 Python 库;若为 ON ,需另配置 PYTHON_EXECUTABLE 参数 |
可选 | |
PYTHON_EXECUTABLE | N/A | N/A | 指定 Python 可执行文件路径,需与实际使用时的 Python 相同,避免版本不一致产生的冲突 |
配合 BUILD_PYTHON_LIB 参数 |
|
ENABLE_DYNAMIC_BATCH | ON 或 OFF |
OFF |
是否开启动态 Batch 输入功能 | 可选 | |
ENABLE_RNN | ON 或 OFF |
OFF |
是否开启 RNN 模型推理 | 可选 | |
ENABLE_INFER_TESTS | ON 或 OFF |
OFF |
是否开启推理测试; 若为 ON ,需另配置 OpenCV 库 |
可选 | |
ENABLE_UNIT_TEST | ON 或 OFF |
OFF |
是否开启单元测试 | Fwd_Keras 的单元测试依赖于 Fwd_Tf; Fwd_Onnx 的单元测试依赖于 Fwd_Torch |
|
PyTorch | ENABLE_TORCH | ON 或 OFF |
OFF |
是否构建用于解析 PyTorch 模型的 Fwd_Torch 项目; 若为 ON ,需另配置 CMAKE_PREFIX_PATH 或 PYTHON_EXECUABLE 参数 |
可选 |
ENABLE_TORCH_PLUGIN | ON 或 OFF |
OFF |
是否开启 Torch 子模块插件,该插件能支持子模块中更多的 Torch-Op,但不保证性能的提升; 若为 ON ,libtrt_engine.so 需依赖 Torch-Librariescode> |
可选 | |
CMAKE_PREFIX_PATH | N/A | N/A | 指定 LibTorch 库路径;若 BUILD_PYTHON_LIB=OFF 时,需另配置 LibTorch 库进行编译;若 BUILD_PYTHON_LIB=ON 时,则需取消该配置,Forward 将利用 PYTHON_EXECUTABLE 中安装的 torch_python 库进行编译 |
配合 ENABLE_TORCH 或 ENABLE_KERAS 参数 |
|
TensorFlow | ENABLE_TENSORFLOW | ON 或 OFF |
OFF |
是否构建用于解析 TensorFlow 模型的 Fwd_Tf 项目; 若为 ON ,需提前根据环境依赖中的要求在 source/third_party/tensorflow/bin 目录下安装 Tensorflow 1.15.0 |
可选 |
Keras | ENABLE_KERAS | ON 或 OFF |
OFF |
是否构建用于解析 Keras 模型的 Fwd_Keras 项目; 若为 ON ,需同时配置 CMAKE_PREFIX_PATH |
可选 |
CMAKE_PREFIX_PATH | N/A | N/A | 指定 HDF5 库路径;若同时配置 Fwd_Torch 的 CMAKE_PREFIX_PATH ,可用分号隔开,如 /path/to/libtorch;/path/to/hdf5 |
配合 ENABLE_TORCH 或 ENABLE_KERAS 参数 |
|
ONNX | ENABLE_ONNX | ON 或 OFF |
OFF |
是否构建用于解析 ONNX 模型的 Fwd_Onnx 项目 | 可选 |