编译安装
TensorFlow Serving ANNC图融合优化特性后端已合入TensorFlow和TF Serving开源仓,图融合前端优化,XLA图融合,算子优化相关代码发布在Gitee托管的ANNC开源仓,可使用git拉取完整代码后进行代码编译操作。
获取代码
- 配置Git取消SSL验证。
1 2
git config --global http.sslVerify false git config --global https.sslVerify false
- 拉取TensorFlow和TF Serving代码。
1 2
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代码。
1git clone --branch v0.0.2 https://gitee.com/openeuler/ANNC.git
编译安装
- 安装GCC 12.3.1版本。
1 2 3
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。
1 2 3 4 5 6 7 8 9 10 11
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
- 使能补丁。
1 2 3 4
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”目录。
1cd /path/to/tensorflow-serving/
- 创建编译依赖存储目录
1 2
export DISTDIR=$(pwd)/download mkdir -p $DISTDIR
- 设置Bazel编译工具路径,需指向Bazel可执行文件所在的目录。
1export BAZEL_PATH=/path/to/bazel
- 执行构建脚本编译。
1sh 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设置自定义路径,命令如下。
1export BAZEL_COMPILE_CACHE=/path/to/your/cache_dir
- --distdir:TF Serving编译依赖存放目录,用来解决第三方依赖包下载失败问题。
- --override_repository:指定使用本地TensorFlow构建,使用tensorflow_dir指定目录作为本地TensorFlow。
构建常见报错及解决指导:
- --output_user_root:Bazel编译缓存目录,默认为“/path/to/tensorflow-serving/output”。可通过环境变量BAZEL_COMPILE_CACHE设置自定义路径,命令如下。
父主题: 特性指南
