Deltann Graph Compiler Stack 推理架构基于 tensorflow 进行深度定制,依赖 tensorflow 本身的 grappler 以及custom ops 机制完成高性能的图匹配逻辑和高性能算子库,Deltann Graph Compiler Stack
可以方便使用户在tensorflow 内部完成大规模复杂子图替换,并采用已提供的高性能算子库支持模型在各个平台的高性能计算。
Deltann Graph Compiler Stack
核心依赖用户安装的tensorflow环境,用户并不需要从源码安装 tensorflow,可以极大的减少使用成本。模型部署时,用户只需要把动态链接库一起发布即可。
Deltann Graph Compiler Stack
包含两部分核心组件:
算法子图搜索引擎 的核心逻辑是做子图匹配和替换,其支持用户使用任意tf语法定义的复杂算法结构,并根据用户训练好的模型,自动匹配这部分已定义算法并做替换,替换成用户设置的具体算子,最终完成大规模tensorflow子图结构的替换,从而极大的提升计算密集型和访存开销,为进一步性能提升打下坚实基础。
为了配合算法子图搜索引擎,Deltann Graph Compiler Stack
还提供了***高性能的算子库*** delta_infer/custom_ops
, 高性算子库可以同时支持GPU、X86的高性能算子(未来可以扩展更多支持),目前核心支持transformer模型的若干实现,核心支持硬件NV GPU平台 x86 后续会逐步添加。
$ conda activate tf-2.2.0 # 也就是说,需要安装tf 2.2.0(或者其它版本) 的环境下完成编译
$ mkdir build & cd build
$
$ cmake .. -DBUILD_DELTA_INFER_CUSTOM_OPS=ON -DBUILD_GPU=ON -DBUILD_WITH_EXAMPLE=ON
$ make -j$(nproc)
$ ls delta_infer/ # 生成插件库地址
libdelta_infer.so
$ ls delta_infer/custom_ops/ # 高性能算子库
libcustom_ops.so
$ cd example/c++/ # 测试目录
Delta Inference Lib
主要提供算法子图搜索引擎的Python API,安装方式如下;
####Install pybind11
$ cd ${DELTA_PROJECT_ROOT_DIR}/tools && make pybind11.done
$ cd delta_infer/python
$ python setup.py install
$ cd delta_infer/python
$ python setup.py bdist_wheel
$ pip install dist/delta_infer-0.0.1-cp36-cp36m-linux_x86_64.whl
- Test under TF version 2.2.0 and GCC version 7.4.0.
- 高性能算子库目前支持transformer模型,提供GPU高性能实现
- 高性算子库部分代码参考了Fast Transformer
- 目前已知的一个问题,公版的 tf2.0 wheel 安装包是有问题的,包内部缺少
tensorflow/core/protobuf
的内部cpp文件内容, 最终会导致undefined
连接错误。而我们按照wheel包的编译方式从源码重新编译发现,没有上述问题,所以有理由怀疑是开源版本的安装包在安装过程中剪裁了部分内容。