安装指南
TensorFlow ANNC 图编译优化
已验证环境
为保证您可以顺利安全地使用TensorFlow ANNC图编译优化特性,请确保所使用的环境信息在已验证环境范围内。
已验证的硬件环境如表 1 硬件要求所示。
已验证的操作系统如表 2 操作系统所示。
如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。 |
|||
已验证的软件依赖环境如表 3 软件要求所示。
GCC(GNU Compiler Collection)是一种编程语言编译器,用于将TF Serving编译为可执行文件。 |
|||
准备环境
请参见《TensorFlow Serving推理部署框架 移植指南》中的“配置编译环境”章节和表 3 软件要求,准备TF Serving编译环境。
编译安装
TensorFlow ANNC图编译优化特性后端已合入TensorFlow和TF Serving开源仓,图融合前端优化,XLA图融合,算子优化相关代码发布在Gitcode托管的ANNC开源仓,可使用git拉取完整代码后进行代码编译操作。
-
配置Git取消SSL验证。
git config --global http.sslVerify false git config --global https.sslVerify false -
拉取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 -
拉取ANNC代码。
git clone --branch v0.0.2 https://gitcode.com/openeuler/ANNC.git
-
安装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 -
编译安装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 -
使能补丁。
export TF_PATH=/path/to/tensorflow export XLA_PATH=/path/to/tensorflow/third_party/xla cd $ANNC/install/tfserver/xla bash xla2.sh使能补丁成功如图 1 使能补丁成功示意图所示。

-
进入“tensorflow-serving“目录。
cd /path/to/tensorflow-serving/ -
创建编译依赖存储目录
export DISTDIR=$(pwd)/download mkdir -p $DISTDIR -
设置Bazel编译工具路径,需指向Bazel可执行文件所在的目录。
export BAZEL_PATH=/path/to/bazel -
执行构建脚本编译。
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 硬件要求所示。
已验证的操作系统如表 2 操作系统所示。
如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。 |
|||
已验证的软件依赖环境如表 3 软件要求所示。
GCC(GNU Compiler Collection)是一种编程语言编译器,用于将TF Serving编译为可执行文件。 |
|||
编译环境安装
请参见《TensorFlow Serving推理部署框架 移植指南》中的“配置编译环境”章节,准备TF Serving编译环境。
编译安装
TensorFlow Serving线程调度优化特性相关Patch已合入TensorFlow和TF Serving开源代码仓,代码仓在Gitee托管,可使用Git拉取完整代码后进行代码编译操作。
-
配置Git取消SSL验证。
git config --global http.sslVerify false git config --global https.sslVerify false -
拉取代码。
git clone https://gitee.com/openeuler/sra_tensorflow_adapter.git -b v2.15.1.0
-
安装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 -
进入sra_tensorflow_adapter目录。
cd sra_tensorflow_adapter/ -
创建编译依赖存储目录,路径为“/path/to/sra_tensorflow_adapter/serving/download”。
export DISTDIR=$(pwd)/serving/download mkdir -p $DISTDIR -
设置Bazel编译工具路径,需指向bazel可执行文件所在的目录。
export BAZEL_PATH=/path/to/bazel -
执行构建脚本编译。
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参考《最佳实践》。