鲲鹏社区首页
中文
注册
开发者
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

编译安装

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

获取代码

  1. 配置Git取消SSL验证。
    1
    2
    git config --global http.sslVerify false
    git config --global https.sslVerify false
    
  2. 拉取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
    
  3. 拉取ANNC代码。
    1
    git clone --branch v0.0.2 https://gitee.com/openeuler/ANNC.git
    

编译安装

  1. 安装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
    
  2. 编译安装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
    
  3. 使能补丁。
    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所示。

    图1 补丁成功示意图
  4. 进入“tensorflow-serving”目录。
    1
    cd /path/to/tensorflow-serving/
    
  5. 创建编译依赖存储目录
    1
    2
    export DISTDIR=$(pwd)/download
    mkdir -p $DISTDIR
    
  6. 设置Bazel编译工具路径,需指向Bazel可执行文件所在的目录。
    1
    export BAZEL_PATH=/path/to/bazel
    
  7. 执行构建脚本编译。
    1
    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设置自定义路径,命令如下。
      1
      export BAZEL_COMPILE_CACHE=/path/to/your/cache_dir
      
    • --distdir:TF Serving编译依赖存放目录,用来解决第三方依赖包下载失败问题。
    • --override_repository:指定使用本地TensorFlow构建,使用tensorflow_dir指定目录作为本地TensorFlow。

    构建常见报错及解决指导: