TensorFlow源代码编译构建安装包的示例分析
发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,这篇文章给大家分享的是有关TensorFlow源代码编译构建安装包的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近公司给我们分配了2台虚拟机服务器用于强化学习训
千家信息网最后更新 2024年11月28日TensorFlow源代码编译构建安装包的示例分析最近公司给我们分配了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源码如果网速比较好的话,可以直接使用下面的命令从GitHub仓库中克隆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 update && sudo apt install bazel-3.1.0命令直接安装就好。 到目前为止我们已经安装好了bazel编译工具,也下载了TensorFlow的源码,那么接下来就要开始准备编译和构建TensorFlow了。 在这之前我们还需要去安装一些相应的依赖,使用如下命令即可:
然后我们使用gcc --version查看下我们的gcc版本,我的是18.04自带的7.5.0,可用。
接下来就是真正的编译环节了。首先我们进入到从GitHub中下载的TensorFlow源代码,并执行
这个时候会让你去做一些配置相关的信息:
这一句是让你输入Python所在的位置,如果没错的话直接回车,如果想修改的话就输入你的Python所在的目录;
这一步让你去输入Python library所在的位置,和上面一样,我这里直接回车。
这一步是问你是不是要build一个支持ROCm的TensorFlow版本,在这里我选择N。
这一步是问你是不是要build一个支持CUDA的TensorFlow版本,因为我这个是要在分布式集群的CPU版本用的,这个服务器里没用CUDA,所以我选择N。
这一步是问你是不是希望狭隘一个clang是release版本,这里我一开始选择的是Y,由于我网速不好,下载报错,然后就选择了N; 这一步是让你输入一个编译时候的优化器,在这里我直接用默认的,就直接回车了;
这一步是问你是不是需要支持Android,我这边不需要,所以直接N,否则的话会让你选择你Android SDK的版本之类的;
当这些都配置完成之后,就会弹出来一个你的配置信息。 接下来就要真正的开始去编译你的TensorFlow源码了,由于我使用的是不带CUDA的版本,所以我直接使用如下命令即可: 编译好会看到下面的信息:(由于我自己这块没有截图,用了个网图,我用老的CPU花了7500多秒)
编译好之后,我们就可以在TensorFlow源代码目录输入以下命令,来构建最终的pip安装包: 在这里,/tmp/tensorflow_pkg是我自己定义的最终安装包输出的位置,结束后,我们可以cd到 /tmp/tensorflow_pkg目录中,查看里面的内容:
可以看到,我们最终的pip安装版本就已经完成,接下来我们就可以在命令行里输入下面的命令进行安装了:
安装完成后,我们可以试着在Python交互环境中导入一下TensorFlow,看看是否有报错: 我们发现,可以正常导入和使用,至此,整个TensorFlow源码的编译、构建以及安装环境完成。
这篇文章给大家分享的是有关TensorFlow源代码编译构建安装包的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
下载TensorFlow的源码 下载和安装Bazel构建工具
git clone https://github.com/tensorflow/tensorflow.gitcd tensorflow
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
pip install six numpy wheel setuptools mock 'future>=0.17.1' pip install keras_applications --no-deps pip install keras_preprocessing --no-deps
./configure
Please specify the location of python. [Default is /root/miniconda3/envs/ray/bin/python3]:
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]
Do you wish to build TensorFlow with ROCm support? [y/N]: N
Do you wish to build TensorFlow with CUDA support? [y/N]: N
Do you wish to download a fresh release of clang? (Experimental) [y/N]: 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
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
pip install tensorflow-2.5.0-cp38-cp38-linux_x86_64.whl
感谢各位的阅读!关于"TensorFlow源代码编译构建安装包的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
版本
编译
支持
命令
源码
接下来
指令
输入
源代码
选择
服务器
环境
面的
服务
位置
信息
内容
工具
所在
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器备份app哪个好
数据库日志文件不显示扩展名
手机上显示服务器故障该怎样解决
江西发展软件开发行业标准
杭州神灯网络技术有限公司
装饰bim软件开发前景
传奇4窗口无法连接远程服务器
SOSO小说软件开发
免费 pptp服务器
支行网络安全等级
奈飞app无法访问服务器
Jdbc密码加密连接数据库
华中大网络安全新校区
威胁网络安全的主观因
服务器安全狗资源保护
云服务器对外服务
做网络安全辛苦吗
国家网络安全与信息化部官网
陕西卫宁互联网科技有限公司
新蔡县网络安全宣传
网络技术的主修课
设备故障代码在哪发回服务器
服务器公网映射做防护安全
保密和网络安全管理
渝中应用软件开发
济南直播软件开发流程
crm数据库是什么
刀片式服务器多少瓦
学手机软件开发好吗
不适合做软件开发项目经理