源码编译安装

本章节提供基础版本、开启ACL特性版本、适配TensorFlow v1.x特性版本和开启NUMA特性版本四种编译安装TensorFlow 2.13.0的场景和方法,请根据实际情况选择对应的编译命令。

  1. 获取TensorFlow 2.13.0版本源码。

    1. 在本地浏览器下载TensorFlow源码。

      下载地址:https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.13.0.zip

      下载得到的源码压缩包是tensorflow-2.13.0.zip。

    2. 将源码上传至服务器。

    若服务器可以访问网络,则可以直接在服务器上使用wget命令下载源码。

    1
    wget -O tensorflow-2.13.0.zip https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.13.0.zip --no-check-certificate
    

  2. 安装依赖组件。

    1
    2
    3
    4
    5
    6
    7
    yum install patchelf perl python3-devel
    pip3 install numpy==1.24.3
    pip3 install packaging
    pip3 install requests
    pip3 install wheel
    export C_INCLUDE_PATH=/usr/include/python3.9:$C_INCLUDE_PATH
    export CPLUS_INCLUDE_PATH=/usr/include/python3.9:$CPLUS_INCLUDE_PATH
    

    上述配置环境变量命令中的路径“/usr/include/python3.9”为Python.h所在目录,以实际编译环境中的路径为准。

  3. 解压TensorFlow安装包。

    1
    unzip tensorflow-2.13.0.zip
    

    解压后的目录为“tensorflow-2.13.0”。

  4. 进入“tensorflow-2.13.0”目录。

    1
    cd tensorflow-2.13.0
    

  5. 执行configure,设置配置选项。

    1
    ./configure
    

    configure配置过程步骤解析:

    1. 确认可执行程序Python的位置。
      1
      Please specify the location of python. [Default is /usr/bin/python3]:
      

      如果python3路径和上述默认相同,直接按“Enter”确认;否则,请输入正确的python3路径。

    2. 确认Python lib库的位置。
      1
      Please input the desired Python library path to use.  Default is [/home/xxx/test]
      

      如Python lib路径和上述默认相同,直接按“Enter”确认;否则,请输入正确的Python lib库的路径。

    3. 确认是否配置ROCm特性。

      ROCm是指AMD的开源GPU加速计算平台,它可以在AMD的GPU上实现高性能计算。如果TensorFlow运行在AMD的GPU上,可以选择“y”;否则选择“N”。

      1
      Do you wish to build TensorFlow with ROCm support? [y/N]:
      

      本文选择“N”。

      1
      No ROCm support will be enabled for TensorFlow.
      
    4. 确认是否配置CUDA特性。

      CUDA是英伟达公司推出的一种并行计算平台和编程模型,它可以利用GPU的并行计算能力加速各种科学计算、图形处理、深度学习等应用程序。是否希望使用CUDA支持构建,如果需要则选择“y”;否则选择“N”。

      1
      Do you wish to build TensorFlow with CUDA support? [y/N]:
      

      本文选择“N”。

      1
      No CUDA support will be enabled for TensorFlow.
      
    5. 确认是否配置最新的clang编译器。

      如果编译环境上已有clang编译器,可以选择“N”;否则选择“y”。

      1
      Do you wish to download a fresh release of clang? (Experimental) [y/N]:
      

      本文选择“N”。

      1
      Clang will not be downloaded.
      
    6. 配置编译选项。
      1
      Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -Wno-sign-compare]:
      

      直接按“Enter”确认。

    7. 在构建Android应用程序时,确认是否设置工作空间。

      构建非Android应用程序时,选择“N”;否则选择“y”。

      1
      "Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]:"
      

      本文选择“N”。

      1
      Not configuring the WORKSPACE for Android builds.
      

  6. 编译TensorFlow。

    表1 部分扩展特性参数说明(详细配置请参见源码目录下的.bazelrc文件)

    config参数

    描述

    --config=mkl_aarch64

    集成oneDNN和Arm架构计算库(ACL)特性。

    --config=numa

    集成NUMA特性。

    --config=v1

    使用TensorFlow 1.x版本的API替换TensorFlow 2.x版本的API。

    • 从源码构建TensorFlow会在路径/root/.cache/bazel下产生编译临时文件,确保根路径剩余空间不少于8GB。
    • 从源码构建TensorFlow会消耗大量内存资源,如果您的系统受内存限制,编译命令则需要添加参数--local_ram_resources,例如--local_ram_resources=2048表示将内存开销限制为2048MB。
    • 从源码构建TensorFlow会消耗大量CPU资源,编译命令添加参数--local_cpu_resources可以对CPU资源进行限制,例如--local_cpu_resource=4表示占用4颗CPU资源(在终端执行lscpu命令,查看CPU数量,根据实际需要设置local_cpu_resources的值)。

    以下介绍四种编译方法,请根据实际情况进行选择。

    • 编译基础版本。
      1
      bazel build //tensorflow/tools/pip_package:build_pip_package
      

      回显显示如上图信息,则表示编译成功。

    • 编译开启mkl_aarch64特性的版本。
      1
      bazel build //tensorflow/tools/pip_package:build_pip_package --config=mkl_aarch64
      

      回显显示如上图信息,则表示编译成功。

    • 编译适配TensorFlow v1.x特性的版本。
      1
      bazel build //tensorflow/tools/pip_package:build_pip_package --config=v1
      

      回显显示如上图信息,则表示编译成功。

    • 编译开启NUMA特性的版本。
      1
      bazel build //tensorflow/tools/pip_package:build_pip_package --config=numa
      

      回显显示如上图信息,则表示编译成功。

  7. 构建TensorFlow pip软件包。

    1
    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package ./output
    

    构建生成的pip软件包在“./output”目录下。

    构建过程可能会产生告警信息,解决办法请参见构建TensorFlow pip软件包时有告警信息提示的解决办法

  8. 安装TensorFlow pip软件包。

    1
    pip3 install ./output/tensorflow-2.13.0-cp39-cp39-linux_aarch64.whl