Skip to content

Latest commit

 

History

History
69 lines (44 loc) · 3.27 KB

README.md

File metadata and controls

69 lines (44 loc) · 3.27 KB

Deltann Graph Compiler Stack

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 后续会逐步添加

编译

编译custom_ops & delta_infer高性能库

$ 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++/ # 测试目录

Python API

Delta Inference Lib 主要提供算法子图搜索引擎的Python API,安装方式如下;

####Install pybind11

$ cd ${DELTA_PROJECT_ROOT_DIR}/tools && make pybind11.done

直接安装

$ cd delta_infer/python
$ python setup.py install 

wheel 打包

$ cd delta_infer/python
$ python setup.py bdist_wheel
$ pip install dist/delta_infer-0.0.1-cp36-cp36m-linux_x86_64.whl

Note

  1. Test under TF version 2.2.0 and GCC version 7.4.0.
  2. 高性能算子库目前支持transformer模型,提供GPU高性能实现
  3. 高性算子库部分代码参考了Fast Transformer
  4. 目前已知的一个问题,公版的 tf2.0 wheel 安装包是有问题的,包内部缺少tensorflow/core/protobuf的内部cpp文件内容, 最终会导致undefined连接错误。而我们按照wheel包的编译方式从源码重新编译发现,没有上述问题,所以有理由怀疑是开源版本的安装包在安装过程中剪裁了部分内容。