安装指南

TensorFlow ANNC 图编译优化

已验证环境

为保证您可以顺利安全地使用TensorFlow ANNC图编译优化特性,请确保所使用的环境信息在已验证环境范围内。

硬件要求

已验证的硬件环境如表 1 硬件要求所示。

表 1 硬件要求

项目

说明

CPU

鲲鹏920 7282C处理器(80核)

操作系统要求

已验证的操作系统如表 2 操作系统所示。

表 2 操作系统

项目

版本

说明

下载地址

OS

openEuler 22.03 LTS SP3

如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。

获取链接

Kernel

5.10.0

-

包含在操作系统镜像中。

软件要求

已验证的软件依赖环境如表 3 软件要求所示。

表 3 软件要求

项目

版本

说明

下载地址

Python

3.9.9

Python是TF Serving的构建过程中的辅助工具,起到自动下载依赖、配置环境等作用。

通过Yum源方式安装。

CMake

3.22.0

CMake是TF Serving的构建工具,要求CMake版本为3.22.0及以上。

通过Yum源方式安装。

GCC/G++

12.3.1

GCC(GNU Compiler Collection)是一种编程语言编译器,用于将TF Serving编译为可执行文件。

通过Yum源方式安装。

Bazel

6.5.0

Bazel是一个强大的构建系统,可实现快速、可扩展构建,要求Bazel版本为6.4.0以上。

获取链接

TensorFlow

2.15.1

TensorFlow是由Google开发的开源机器学习框架,支持从研究到生产的端到端AI模型开发与部署。

通过pip源方式安装。

准备环境

请参见《TensorFlow Serving推理部署框架 移植指南》中的“配置编译环境”章节和表 3 软件要求,准备TF Serving编译环境。

编译安装

TensorFlow ANNC图编译优化特性后端已合入TensorFlow和TF Serving开源仓,图融合前端优化,XLA图融合,算子优化相关代码发布在Gitcode托管的ANNC开源仓,可使用git拉取完整代码后进行代码编译操作。

获取代码

  1. 配置Git取消SSL验证。

    git config --global http.sslVerify false
    git config --global https.sslVerify false
    
  2. 拉取TensorFlow和TF Serving代码。

    git clone --branch v2.15.0-2509 https://gitcode.com/boostkit/tensorflow.git
    git clone --branch v2.15.1-2509 https://gitcode.com/boostkit/tensorflow-serving.git
    
  3. 拉取ANNC代码。

    git clone --branch v0.0.2 https://gitcode.com/openeuler/ANNC.git
    

编译安装

  1. 安装GCC 12.3.1版本。

    yum install -y gcc-toolset-12-gcc*
    export PATH=/opt/openEuler/gcc-toolset-12/root/usr/bin/:$PATH
    export LD_LIBRARY_PATH=/opt/openEuler/gcc-toolset-12/root/usr/lib64/:$LD_LIBRARY_PATH
    
  2. 编译安装ANNC。

    export ANNC=/path/to/ANNC
    cd $ANNC
    source build.sh
    cp bazel-bin/annc/service/cpu/libannc.so /usr/lib64/
    cp $ANNC/annc/service/cpu/xla/libs/XNNPACK/build/libXNNPACK.so /usr/lib64
    mkdir -p /usr/include/annc 
    cp annc/service/cpu/kdnn_rewriter.h /usr/include/annc/ 
    cp annc/service/cpu/annc_flags.h /usr/include/annc/
    cd python
    python3 setup.py bdist_wheel
    python3 -m pip install dist/*.whl --force-reinstall
    
  3. 使能补丁。

    export TF_PATH=/path/to/tensorflow
    export XLA_PATH=/path/to/tensorflow/third_party/xla
    cd $ANNC/install/tfserver/xla
    bash xla2.sh
    

    使能补丁成功如图 1 使能补丁成功示意图所示。

    图 1 使能补丁成功示意图

  4. 进入“tensorflow-serving“目录。

    cd /path/to/tensorflow-serving/
    
  5. 创建编译依赖存储目录

    export DISTDIR=$(pwd)/download
    mkdir -p $DISTDIR
    
  6. 设置Bazel编译工具路径,需指向Bazel可执行文件所在的目录。

    export BAZEL_PATH=/path/to/bazel
    
  7. 执行构建脚本编译。

    sh compile_serving.sh --tensorflow_dir /path/to/tensorflow --features gcc12,annc
    

    “/path/to/tensorflow”指定TensorFlow路径。

    构建的结果为TF Serving二进制文件“tensorflow_model_server”,文件路径为“/path/to/tensorflow-serving/bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server”。

    以上构建脚本编译命令中gcc12表示使用GCC 12.3.1版本编译。构建脚本中执行的编译命令为:

    bazel --output_user_root=$BAZEL_COMPILE_CACHE build -c opt --distdir=$DISTDIR --override_repository=org_tensorflow=$TENSORFLOW_DIR \
    --copt=-march=armv8.3-a+crc --copt=-O3 --copt=-fprefetch-loop-arrays --copt=-Wno-error=maybe-uninitialized  \ 
    --copt=-Werror=stringop-overflow=0 --config=fused_embedding  \ 
    --define tflite_with_xnnpack=false tensorflow_serving/model_servers:tensorflow_model_server
    

    其中部分参数介绍如下:

    • --output_user_root:Bazel编译缓存目录,默认为“/path/to/tensorflow-serving/output”。可通过环境变量BAZEL_COMPILE_CACHE设置自定义路径,命令如下。

      export BAZEL_COMPILE_CACHE=/path/to/your/cache_dir
      
    • --distdir:TF Serving编译依赖存放目录,用来解决第三方依赖包下载失败问题。

    • --override_repository:指定使用本地TensorFlow构建,使用tensorflow_dir指定目录作为本地TensorFlow。

构建问题

构建常见报错及解决指导请参考《常见问题》

TensorFlow Serving线程调度

已验证环境

硬件要求

已验证的硬件环境如表 1 硬件要求所示。

表 1 硬件要求

项目

说明

CPU

鲲鹏920 7282C处理器(80核)

操作系统要求

已验证的操作系统如表 2 操作系统所示。

表 2 操作系统

项目

版本

说明

下载地址

OS

openEuler 22.03 LTS SP3

如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。

获取链接

Kernel

5.10.0

-

包含在操作系统镜像中。

软件要求

已验证的软件依赖环境如表 3 软件要求所示。

表 3 软件要求

项目

版本

说明

下载地址

Python

3.9.9

Python是TF Serving的构建过程中的辅助工具,起到自动下载依赖、配置环境等作用。

通过Yum源方式安装。

CMake

3.22.0

CMake是TF Serving的构建工具,要求CMake版本为3.22.0及以上。

通过Yum源方式安装。

GCC/G++

12.3.1

GCC(GNU Compiler Collection)是一种编程语言编译器,用于将TF Serving编译为可执行文件。

通过Yum源方式安装。

Bazel

6.5.0

Bazel是一个强大的构建系统,可实现快速、可扩展构建,要求Bazel版本为6.4.0以上。

获取链接

编译环境安装

请参见《TensorFlow Serving推理部署框架 移植指南》中的“配置编译环境”章节,准备TF Serving编译环境。

编译安装

TensorFlow Serving线程调度优化特性相关Patch已合入TensorFlow和TF Serving开源代码仓,代码仓在Gitee托管,可使用Git拉取完整代码后进行代码编译操作。

获取代码

  1. 配置Git取消SSL验证。

    git config --global http.sslVerify false
    git config --global https.sslVerify false
    
  2. 拉取代码。

    git clone https://gitee.com/openeuler/sra_tensorflow_adapter.git -b v2.15.1.0
    

编译

  1. 安装GCC 12.3.1版本。

    yum install -y gcc-toolset-12-gcc*
    PATH=/opt/openEuler/gcc-toolset-12/root/usr/bin/:$PATH
    LD_LIBRARY_PATH=/opt/openEuler/gcc-toolset-12/root/usr/lib64/:$LD_LIBRARY_PATH
    
  2. 进入sra_tensorflow_adapter目录。

    cd sra_tensorflow_adapter/
    
  3. 创建编译依赖存储目录,路径为“/path/to/sra_tensorflow_adapter/serving/download”。

    export DISTDIR=$(pwd)/serving/download
    mkdir -p $DISTDIR
    
  4. 设置Bazel编译工具路径,需指向bazel可执行文件所在的目录。

    export BAZEL_PATH=/path/to/bazel
    
  5. 执行构建脚本编译。

    sh compile_serving.sh gcc12
    

    构建产物为TF Serving二进制文件“tensorflow_model_server”,文件路径为“/path/to/sra_tensorflow_adapter/serving/bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server”。

    以上构建脚本编译命令中gcc12表示使用GCC 12.3.1版本编译。构建脚本中执行的编译命令为:

    bazel --output_user_root=$BAZEL_COMPILE_CACHE build -c opt --distdir=$DISTDIR --override_repository=org_tensorflow=$TENSORFLOW_DIR --copt=-march=armv8.3-a+crc --copt=-O3 --copt=-fprefetch-loop-arrays --copt=-Wno-error=maybe-uninitialized --copt=-Werror=stringop-overflow=0 tensorflow_serving/model_servers:tensorflow_model_server
    

    其中部分参数介绍如下:

    • output_user_root:Bazel编译缓存目录,默认为“/path/to/sra_tensorflow_adapter/serving/output”。可通过环境变量BAZEL_COMPILE_CACHE设置自定义路径,命令如下。

      export BAZEL_COMPILE_CACHE=/path/to/your/cache_dir
      
    • distdir:TF Serving编译依赖存放目录,用来解决第三方依赖包下载失败问题。

    • override_repository:指定使用本地TensorFlow构建,将自动识别“/path/to/sra_tensorflow_adapter/tensorflow”目录作为构建依赖。

构建问题

构建常见报错及解决指导请参考《常见问题》

集成KDNN

集成KDNN参考《最佳实践》