TensorFlow集成KTFOP

TensorFlow集成KTFOP使能鲲鹏算子加速,本章节提供TensorFlow集成KTFOP的方法。

适配步骤

  1. 请参见《鲲鹏数学库 开发指南》的“安装配置环境”章节安装2.4.0 GCC版本的鲲鹏数学库,程序运行使用数学库的KML_BLAS模块。
  2. 请参见《Tensorflow 移植指导(Tensorflow 1.15.5)》的“配置编译环境”章节准备Tensorflow的编译环境。
  3. 获取TensorFlow v1.0.0版本适配代码。

    1
    git clone -b v1.0.0 https://gitee.com/openeuler/sra_tensorflow_adapter.git
    

  4. 进入“sra_tensorflow_adapter”目录。

    1
    cd sra_tensorflow_adapter
    

  5. 安装编译依赖

    1
    2
    3
    4
    5
    6
    pip3 install wheel 
    pip3 install Cython==0.29.14 
    pip3 install numpy==1.18.5 --no-build-isolation 
    pip3 install h5py==2.10.0 
    pip3 install protobuf==3.19.0 
    pip3 install keras_preprocessing==1.1.2
    

  6. 若之前加载过环境变量配置,则可跳过该步骤。根据实际安装路径设置Bazel和Python环境变量。例如:

    1
    2
    3
    export PATH=/path/to/bazel/bazel-0.26.1/output:$PATH
    export PATH=/usr/local/python3.7.5/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
    

  7. 编译TensorFlow。

    1
    sh build.sh
    

    Tensorflow whl包路径为:“out/tensorflow-1.15.0-cp37-cp37m-linux_aarch64.whl”

    其依赖库的路径如下:
    • KTFOP库相关so路径:

      “/usr/local/sra_inference/lib/neon/libktfop.so”

    • 数学库KML 2.4版本so路径默认为:“/usr/local/kml/lib/kblas/locking/libkblas.so”
    • 数学库KML 2.5版本so路径默认为:“/usr/local/kml/lib/neon/kblas/locking/libkblas.so”

      用户可根据需要,设置KBLAS_LIB_DIR环境变量,自行选择KML_BLAS库编译。例如,使用数学库KML 2.5版本使能NEON特性的BLAS库:

      1
      export KBLAS_LIB_DIR=/usr/local/kml/lib/neon/kblas/locking
      

  8. 安装TensorFlow pip软件包。

    1
    pip3 install out/tensorflow-1.15.0-cp37-cp37m-linux_aarch64.whl
    

安装Tensorflow过程中遇到报错请参考Tensorflow 移植指导(Tensorflow 1.15.5)的“故障排除”章节解决。

适配后验证

TensorFlow 1.15.0编译安装完成后使用自带样例进行基本功能的验证。本文使用自带样例中的图像识别样例来验证TensorFlow的基本功能。

  1. 版本验证,在TensorFlow非源码目录下执行。

    1
    python3 -c "import tensorflow as tf; print(tf.__version__)"
    

    回显信息显示,版本号为1.15.0。

  2. 基本功能验证。

    以TensorFlow自带样例图像识别为例。
    1. 进入sra_tensorflow_adapter源码编译规划路径。
      1
      cd /path/to/sra_tensorflow_adapter
      
    2. 获取模型数据和验证数据。
      1
      2
      curl -L "https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen.pb.tar.gz" | tar -C tensorflow/examples/label_image/data -xz
      wget -P tensorflow/examples/label_image/data/  https://www.tensorflow.org/images/cropped_panda.jpg --no-check-certificate
      
    3. 在非编译目录执行测试用例。
      1
      python3 tensorflow/examples/label_image/label_image.py --image=tensorflow/examples/label_image/data/cropped_panda.jpg
      

      回显信息显示,将图片“tensorflow/examples/label_image/data/cropped_panda.jpg”识别为giant panda类别的概率最大。