Forward是一款腾讯研发并开源的GPU高性能推理加速框架。它提出了一种解析方案,可直接加载主流框架模型(Tensorflow/PyTorch/Keras/ONNX)转换成TensorRT推理加速引擎,帮助用户节省中间繁杂的模型转换或网络构建步骤。
相对于直接使用TensorRT,Forward更易用以及更容易扩展支持更多模型和算子。目前,Forward除了覆盖支持主流的CV,NLP及推荐领域的深度学习模型外,还支持一些诸如BERT,FaceSwap,StyleTransfer这类高级模型。
特性模型性能优化高:基于TensorRTAPI开发网络层级的支持,保证对于通用网络层级的推理性能优化处于最优级别;模型支持范围广:除了通用的CV,NLP,及推荐类模型,还支持一些诸如BERT,FaceSwap,StyleTransfer这类高级模型;多种推理模式:支持FLOAT/HALF/INT8推理模式;接口简单易用:直接导入已训练好的Tensorflow(.pb)/PyTorch(.pth)/Keras(.h5)/ONNX(.onnx)模型文件,隐式转换为高性能的推理Engine进行推理加速;支持自研扩展:可根据业务模型扩展支持自定义网络层级;支持C++和Python接口调用。快速上手Forward环境依赖NVIDIACUDA>=10.0,CuDNN>=7(推荐CUDA10.2以上)TensorRT>=7.0.0.11(推荐TensorRT-7.2.1.6)CMake>=3.12.2GCC>=5.4.0,ld>=2.26.1PyTorch>=1.7.0TensorFlow>=1.15.0(若使用Linux操作系统,需额外下载 Tensorflow1.15.0,并将解压出来的 .so 文件拷贝至 Forward/source/third_party/tensorflow/lib 目录下)KerasHDF5(从 Forward/source/third_party/hdf5 源码构建)项目构建使用CMake进行构建生成Makefiles或者VisualStudio项目。根据使用目的,Forward可构建成适用于不同框架的库,如Fwd-Torch、Fwd-Python-Torch、Fwd-Tf、Fwd-Python-Tf、Fwd-Keras、Fwd-Python-Keras、Fwd-Onnx和Fwd-Python-Onnx。以Linux平台构建Fwd-Tf为例,步骤一:克隆项目1gitclonehttps://github.com/Tencent/Forward.git步骤二:下载 Tensorflow1.15.0(仅在Linux平台使用Tensorflow框架推理时需要)1cdForward/source/third_party/tensorflow/2wgethttps://github.com/neargye-forks/tensorflow/releases/download/v1.15.0/libtensorflow-cpu-linux-x86_64-1.15.0.tar.gz3tar-xvflibtensorflow-gpu-linux-x86_64-1.15.0.tar.gz步骤三:创建 build 文件夹1cd~/Forward/2rm-rfbuild3mkdir-pbuild4cdbuild/步骤四:使用 cmake 生成构建关系,需指定 TensorRT_ROOT 安装路径1cmake..-DTensorRT_ROOT=<path_to_TensorRT>-DENABLE_TENSORFLOW=ON-DENABLE_UNIT_TESTS=ON步骤五:使用 make 构建项目1make-j步骤六:运行 unit_test 验证项目是否构建成功cdbin/./unit_test--gtest_filter=TestTfNodes.*#出现已下提示表示项目构建成#[OK]TestTfNodes.ZeroPadding(347ms)#[----------]22testsfromTestTfNodes(17555mstotal)#[----------]Globaltestenvironmenttear-down#[==========]22testsfrom1testcaseran.(17555mstotal)#[PASSED]22tests.Logging日志Forward使用 easylogging++ 作为日志功能,并使用 forward_log.conf 作为日志配置文件。若工作目录中存在 forward_log.conf 文件,Forward将使用该配置文件,更多内容可参考 Using-configuration-file;若工作目录中不存在 forward_log.conf 文件,Forward将使用默认配置,并将日志记录到 logs/myeasylog.log 。forward_log.conf 文件配置样例*GLOBAL:FORMAT="[%level]%datetime%fbase(%line):%msg"FILENAME="Forward.log"ENABLED=trueTO_FILE=trueTO_STANDARD_OUTPUT=truePERFORMANCE_TRACKING=trueMAX_LOG_FILE_SIZE=2097152##2MB-Commentstartswithtwohashes(##)LOG_FLUSH_THRESHOLD=100##Flushafterevery100logs模型和算子支持当前Forward的模型与算子支持如下所示,如有需要添加更多支持的,欢迎联系添加Issue反馈。如需要自行扩展添加支持的,可参考 开源共建:扩展添加支持操作的流程模型CV模型语言模型推荐模型算子PyTorchTensorFlow参考资料推理流程构建过程推理引擎使用方法工具与测试常见问题
评论