温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

TensorFlow源代码编译构建安装包的示例分析

发布时间:2021-12-04 11:33:04 来源:亿速云 阅读:247 作者:小新 栏目:大数据

这篇文章给大家分享的是有关TensorFlow源代码编译构建安装包的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

        最近公司给我们分配了2台虚拟机服务器用于强化学习训练,我们在虚拟环境中安装好了TensorFlow环境后,在import tensorflow时发现报了下面的错误:
TensorFlow源代码编译构建安装包的示例分析
        于是我去Google搜索了下出现这个错误的原因,发现是因为我们服务器的CPU不支持AVX指令集导致的,而使用pip安装的TensorFlow需要依赖AVX指令集,为了确认我们的CPU是否真的不支持AVX指令集,我使用cat /proc/cpuinfo 命令查看了下目前CPU指令集支持情况,发现我们的CPU果然不支持AVX指令集。
TensorFlow源代码编译构建安装包的示例分析
        又不支持又想用咋办,后来经过网上查询了一下,我们可以自己使用TensorFlow的源代码来编译和构建一个TensorFlow的版本,这样的话就可以在不支持AVX指令集的机器上使用TensorFlow了。于是我按照官网https://www.tensorflow.org/install/source给出的步骤来尝试从源码自己编译和构建TensorFlow。
        在构建TensorFlow之前,我们要先做两件事:
      1. 下载TensorFlow的源码
      2. 下载和安装Bazel构建工具

        在下载TensorFlow源码如果网速比较好的话,可以直接使用下面的命令从GitHub仓库中克隆TensorFlow代码库的源码:

   
   
   git clone https://github.com/tensorflow/tensorflow.gitcd tensorflow
        如果网速堪忧的话,可以直接先下载zip版本,然后再传到服务器上,我使用的是后者。  
        注意:这里的代码库默认的是master开发分支。

        下载和安装Bazel构建工具这里我要特别说一下,一般来讲,Bazel的安装方式有2种,一种是使用Bazelisk来安装,另外一种是手动安装,我使用的是后者。在官网中会告诉你,你可以安装在GitHub中可以是 tensorflow/configure.py 中指定的介于 _TF_MIN_BAZEL_VERSION 和 _TF_MAX_BAZEL_VERSION 之间的任意版本,但是,  这里是一个坑。因为在这里他说可以安装3.10~3.99种的任意一个版本,于是乎我安装了一个3.70的版本,等到真正编译的时候,他会告诉你,这个版本不匹配,需要你安装3.10的版本,于是只能卸载重新安装。
        接下来我们需要按照bazel,首先要安装一些依赖:

   
   
   apt install curl gnupg
    curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
    mv bazel.gpg /etc/apt/trusted.gpg.d/
    echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
        接下来我们可以使用apt update && sudo apt install bazel-3.1.0命令直接安装就好。
        到目前为止我们已经安装好了bazel编译工具,也下载了TensorFlow的源码,那么接下来就要开始准备编译和构建TensorFlow了。
        在这之前我们还需要去安装一些相应的依赖,使用如下命令即可:
   
   
   pip install  six numpy wheel setuptools mock 'future>=0.17.1'
    pip install  keras_applications --no-deps
    pip install  keras_preprocessing --no-deps
 
        然后我们使用gcc --version查看下我们的gcc版本,我的是18.04自带的7.5.0,可用。

        接下来就是真正的编译环节了。首先我们进入到从GitHub中下载的TensorFlow源代码,并执行
   
   
   ./configure
 
        这个时候会让你去做一些配置相关的信息:
   
   
   Please specify the location of python. [Default is /root/miniconda3/envs/ray/bin/python3]:
 
        这一句是让你输入Python所在的位置,如果没错的话直接回车,如果想修改的话就输入你的Python所在的目录;
   
   
   Found possible Python library paths:
    /root/miniconda3/envs/ray/lib/python3.8/site-packages
    Please input the desired Python library path to use.  Default is [/root/miniconda3/envs/ray/lib/python3.8/site-packages]
 
        这一步让你去输入Python library所在的位置,和上面一样,我这里直接回车。

   
   
   Do you wish to build TensorFlow with ROCm support? [y/N]: N
        这一步是问你是不是要build一个支持ROCm的TensorFlow版本,在这里我选择N。  

Do you wish to build TensorFlow with CUDA support? [y/N]: N
        这一步是问你是不是要build一个支持CUDA的TensorFlow版本,因为我这个是要在分布式集群的CPU版本用的,这个服务器里没用CUDA,所以我选择N。  

Do you wish to download a fresh release of clang? (Experimental) [y/N]: N
          这一步是问你是不是希望狭隘一个clang是release版本,这里我一开始选择的是Y,由于我网速不好,下载报错,然后就选择了N;
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native -Wno-sign-compare]:
        这一步是让你输入一个编译时候的优化器,在这里我直接用默认的,就直接回车了;

   
   
   Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]:  N
        这一步是问你是不是需要支持Android,我这边不需要,所以直接N,否则的话会让你选择你Android SDK的版本之类的;  

        当这些都配置完成之后,就会弹出来一个你的配置信息。
TensorFlow源代码编译构建安装包的示例分析
        接下来就要真正的开始去编译你的TensorFlow源码了,由于我使用的是不带CUDA的版本,所以我直接使用如下命令即可:
   
   
   bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
        编译好会看到下面的信息:(由于我自己这块没有截图,用了个网图,我用老的CPU花了7500多秒)  
TensorFlow源代码编译构建安装包的示例分析
        编译好之后,我们就可以在TensorFlow源代码目录输入以下命令,来构建最终的pip安装包:
   
   
   ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
        在这里,/tmp/tensorflow_pkg是我自己定义的最终安装包输出的位置,结束后,我们可以cd到 /tmp/tensorflow_pkg目录中,查看里面的内容:  
TensorFlow源代码编译构建安装包的示例分析
        可以看到,我们最终的pip安装版本就已经完成,接下来我们就可以在命令行里输入下面的命令进行安装了:
   
   
   pip install tensorflow-2.5.0-cp38-cp38-linux_x86_64.whl
TensorFlow源代码编译构建安装包的示例分析  
        安装完成后,我们可以试着在Python交互环境中导入一下TensorFlow,看看是否有报错:
TensorFlow源代码编译构建安装包的示例分析
        我们发现,可以正常导入和使用,至此,整个TensorFlow源码的编译、构建以及安装环境完成。

感谢各位的阅读!关于“TensorFlow源代码编译构建安装包的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI