Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >记录我一次详细的TensorFlow源代码编译构建安装包总结

记录我一次详细的TensorFlow源代码编译构建安装包总结

作者头像
博文视点Broadview
发布于 2023-05-19 11:14:43
发布于 2023-05-19 11:14:43
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

最近公司给我们分配了2台虚拟机服务器用于强化学习训练,我们在虚拟环境中安装好了TensorFlow环境后,在import tensorflow时发现报了下面的错误:

于是我去Google搜索了下出现这个错误的原因,发现是因为我们服务器的CPU不支持AVX指令集导致的,而使用pip安装的TensorFlow需要依赖AVX指令集,为了确认我们的CPU是否真的不支持AVX指令集,我使用cat /proc/cpuinfo 命令查看了下目前CPU指令集支持情况,发现我们的CPU果然不支持AVX指令集。

又不支持又想用咋办,后来经过网上查询了一下,我们可以自己使用TensorFlow的源代码来编译和构建一个TensorFlow的版本,这样的话就可以在不支持AVX指令集的机器上使用TensorFlow了。于是我按照官网https://www.tensorflow.org/install/source给出的步骤来尝试从源码自己编译和构建TensorFlow。

在构建TensorFlow之前,我们要先做两件事:

  • 下载TensorFlow的源码
  • 下载和安装Bazel构建工具

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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,首先要安装一些依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt install curl gnupgcurl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpgmv 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了。

在这之前我们还需要去安装一些相应的依赖,使用如下命令即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install  six numpy wheel setuptools mock 'future>=0.17.1'pip install  keras_applications --no-depspip install  keras_preprocessing --no-deps

然后我们使用gcc --version查看下我们的gcc版本,我的是18.04自带的7.5.0,可用。

接下来就是真正的编译环节了。首先我们进入到从GitHub中下载的TensorFlow源代码,并执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure

这个时候会让你去做一些配置相关的信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Please specify the location of python. [Default is /root/miniconda3/envs/ray/bin/python3]:

 这一句是让你输入Python所在的位置,如果没错的话直接回车,如果想修改的话就输入你的Python所在的目录;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Found possible Python library paths:/root/miniconda3/envs/ray/lib/python3.8/site-packagesPlease input the desired Python library path to use.  Default is [/root/miniconda3/envs/ray/lib/python3.8/site-packages]

这一步让你去输入Python library所在的位置,和上面一样,我这里直接回车。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Do you wish to build TensorFlow with ROCm support? [y/N]: N

这一步是问你是不是要build一个支持ROCm的TensorFlow版本,在这里我选择N。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Do you wish to build TensorFlow with CUDA support? [y/N]: N

这一步是问你是不是要build一个支持CUDA的TensorFlow版本,因为我这个是要在分布式集群的CPU版本用的,这个服务器里没用CUDA,所以我选择N。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Do you wish to download a fresh release of clang? (Experimental) [y/N]: N

这一步是问你是不是希望狭隘一个clang是release版本,这里我一开始选择的是Y,由于我网速不好,下载报错,然后就选择了N;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
lease specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native -Wno-sign-compare]:

这一步是让你输入一个编译时候的优化器,在这里我直接用默认的,就直接回车了;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]:  N这一步是问你是不是需要支持Android,我这边不需要,所以直接N,否则的话会让你选择你Android SDK的版本之类的;

当这些都配置完成之后,就会弹出来一个你的配置信息。

接下来就要真正的开始去编译你的TensorFlow源码了,由于我使用的是不带CUDA的版本,所以我直接使用如下命令即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

编译好会看到下面的信息:(由于我自己这块没有截图,用了个网图,我用老的CPU花了7500多秒)

编译好之后,我们就可以在TensorFlow源代码目录输入以下命令,来构建最终的pip安装包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

在这里,/tmp/tensorflow_pkg是我自己定义的最终安装包输出的位置,结束后,我们可以cd到 /tmp/tensorflow_pkg目录中,查看里面的内容:

可以看到,我们最终的pip安装版本就已经完成,接下来我们就可以在命令行里输入下面的命令进行安装了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install tensorflow-2.5.0-cp38-cp38-linux_x86_64.whl

安装完成后,我们可以试着在Python交互环境中导入一下TensorFlow,看看是否有报错:

我们发现,可以正常导入和使用,至此,整个TensorFlow源码的编译、构建以及安装环境完成。

图书推荐

▊《TensorFlow进阶指南:基础、算法与应用》

黄鸿波 编著

本书是由人工智能一线从业专家根据自己日常工作的体会与经验总结而成的,在对TensorFlow的基础知识、环境搭建、神经网络、常用技术的详细讲解当中穿插了自己实战的经验与教训。帮助读者轻松搞懂GAN\CNN\RNN等各式神经网络,真正完成AI从想法到产品的全过程。

(扫码了解本书详情)

如果喜欢本文

欢迎 在看留言分享至朋友圈 三连

热文推荐 


▼点击阅读原文,获取本书详情~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【TensorFlow实战——笔记】第3章:TensorFlow第一步_TensorFlow的编译及安装
不管哪种情况,我们都推荐使用Anaconda作为Python的环境,因为可以避免大量的兼容性问题。
石瞳禅
2018/09/18
8010
【TensorFlow实战——笔记】第3章:TensorFlow第一步_TensorFlow的编译及安装
Code For Better 谷歌开发者之声——TensorFlow
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md
繁依Fanyi
2023/05/07
2290
TensorFlow的安装
在本篇文章中,我们将会介绍TensorFlow的安装,TensorFlow是Google公司在2015年11月9日开源的一个深度学习框架。
夜雨飘零
2020/05/06
1.8K0
1.3 centos7源码编译tensorflow-gpu版
很巧的是编译安装tensorflow-gpu版成功了。 tensorflow已经更新到1.13版,官方的linux安装文件采用的是glibc2.23, 而centos只支持到glibc2.17,所以在使用pip install tensorflow-gpu安装后的使用过程中会报错:
锦小年
2019/05/26
2.1K0
TensorFlow集成TensorRT环境配置
本文前提是cuda和cudnn以及TensorRT已经安装完毕,具体详情,可以参考上一篇文章: https://developer.nvidia-china.com/forum.php?mod=vie
AI科技大本营
2018/04/26
1.6K0
TensorFlow集成TensorRT环境配置
解决Your CPU supports instructions that this TensorFlow binary was not compiled to
这个错误表示你的CPU支持AVX和AVX2指令集,但是你所使用的TensorFlow二进制文件没有被编译以支持这些指令集。 在这篇博客文章中,我们将介绍如何解决这个问题。
大盘鸡拌面
2023/10/25
5440
Win10系统编译Tensorflow Lite 2.3为动态链接库tensorflowlite_c.dll
Tensorflow Lite官方在移动端提供了官方编译好的库,我们直接拿来用就好。Tensorflow 在Linux平台与Mac平台下编译也非常轻松,基本不会遇到太多问题(据说Google内部只用Linux与Mac)。但是在Windows下编译真是一波三折,好在已经编译成功了,记录一下Windows 10下Tensorflow Lite编译过程,帮助一下跟我一样被Tensorflow折腾的不行的人。
superhua
2021/01/02
4.9K6
TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
作者:刘才权 编辑:田 旭 安装平台 1 平台 目前TensorFlow已支持Mac、Ubuntu和Windows三个主流平台(64位平台), 2 GPU vs CPU 在安装时可以选择安装版本是否
机器学习算法工程师
2018/03/06
1.8K0
TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
AI运行环境的搭建
安装环境为CENTOS6.8操作系统,pip安装tensorflow后提示GLIBC版本过低。考虑到升级GLIBC有一定的风险,所以决定使用编译安装的方式安装tensorflow。基本流程是按照这篇教程: http://www.jianshu.com/p/fdb7b54b616e/ 进行的,但是因为选择使用的版本有些不同,自己又遇到了一些坑。所以重新整理一下操作步骤。为了使安装步骤对操作系统影响最小,安装时不使用root账户以及sudo权限,而是使用了一个普通账户makeuser进行操作(少数步骤需要使用root操作)
用户2337871
2019/07/19
1.8K0
TensorFlow下载与安装
TensorFlow简介 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在
xiangzhihong
2018/02/08
2K0
TensorFlow下载与安装
警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
安装TensorFlow(CPU版本),使用pip install tensorflow安装,安装一切顺利,但是在跑一个简单的程序时,遇到如下情况:
全栈程序员站长
2022/09/02
5110
警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
学习笔记TF067:TensorFlow Serving、Flod、计算加速,机器学习评测体系,公开数据集
本文介绍了TensorFlow的发展历史、生态系统、基本概念、原理、实战案例、性能测试、与其他框架的对比以及未来的发展方向。作者希望通过对TensorFlow的深入剖析,使读者能够快速掌握TensorFlow的核心思想和功能。
利炳根
2017/11/15
2.1K0
0490-如何为GPU环境编译CUDA9.2的TensorFlow1.8与1.12
从CDSW1.1.0开始支持GPU,具体可以参考Fayson之前的文章《如何在CDSW中使用GPU运行深度学习》,从最新的CDSW支持GPU的网站上我们可以查到相应的Nvidia Drive版本,CUDA版本以及TensorFlow版本,如下:
Fayson
2019/01/02
3.6K0
为stackGan一个工程创建一个虚拟环境,python 2.7 tensorflow0.12-tensorflow 1.01
安装conda 下载地址:https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh 下载完成后执行: bash Miniconda2-latest-Linux-x86_64.sh 安装地址:xlz/Miniconda 刷新一下配置文件:source /home/xlz/.bashrc #这里是管理员权限吼 创建实验环境:conda create -n stackGan python=2.7 #我们创建一个虚拟2.7环
水球喵子
2018/04/10
1.1K0
为stackGan一个工程创建一个虚拟环境,python 2.7 tensorflow0.12-tensorflow 1.01
Tensorflow的安装
Protocol Buffer是谷歌开发的处理结构化数据的工具,类似于XML和JSON这两种比较常用的结构化数据处理工具。但是Protocal Buffer格式的数据和XML或者JSON又有很大的区别:首先,使用Protocol Buffer时需要先定义数据格式schema(Protocol Buffer的具体编码方式),其序列化后得到的数据不是可读字符串,而是二进制流;其次,Protocol Buffer格式的数据不需要任何其他信息就能还原序列化之后的数据。Protcol Buffer序列化出来的数据要比XML格式的数据笑3到10倍,解析时间要快20到100倍。
foochane
2019/05/23
9040
业界 | TensorFlow基准:图像分类模型在各大平台的测试研究
选自TensorFlow.org 机器之心编译 参与:蒋思源、黄小天 自 TensorFlow 1.0 发布以来,越来越多的机器学习研究者和爱好者加入到这一阵营中,而 TensorFlow 近日官方又发表了该基准。因此本文通过将一系列的图像分类模型放在多个平台上测试,希望得出一些重要结果并为 TensorFlow 社区提供可信的参考。不仅如此,同时在本文最后一节中还将给出测试进行的细节和所使用脚本的链接。 图像分类模型的测试结果 InceptionV3、ResNet-50、ResNet-152、VGG16
机器之心
2018/05/08
1.5K0
业界 | TensorFlow基准:图像分类模型在各大平台的测试研究
几行代码就可以安装Tensorflow-GPU,你学会了吗?
本次教程主要是在Ubuntu 18.04下安装Tensorflow 2.0 GPU版本,大家之前在安装Tensorflow 2.0 GPU版本时,是否经常遇到CUDA、CUDNN安装麻烦的问题,下面呢,我介绍一种可以不用安装CUDA、CUDNN的方法(ps:这些安装自动在conda install tensorflow-gpu==2.0.0安装哦)!
提莫在线发育
2020/06/01
1.7K0
您的CPU支持该TensorFlow二进制文件未编译为使用的指令:AVX AVX2[通俗易懂]
本文翻译自:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
全栈程序员站长
2022/08/30
8610
Linux(Ubuntu20.04)安装配置Caffe环境(No module named caffe)
我感觉我为了解决这个问题,都能写一篇论文了,整整搞了两天,是真麻烦,所以,我建议,如果能换成不用caffe的代码的话,尽量别用caffe跑了,太难了~
卡伊德
2022/09/09
2.3K0
TensorFlow 入门指南
但在开始之前,先来看看一个最简单的使用 TensorFlow Python API 的示例代码,这样你就会对我们接下来要做的事情有所了解。
竹清
2018/08/31
1.3K0
TensorFlow 入门指南
推荐阅读
相关推荐
【TensorFlow实战——笔记】第3章:TensorFlow第一步_TensorFlow的编译及安装
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档