源码编译最新Tensorflow2.18版所遇到的各种坑

源码编译最新Tensorflow2.18版所遇到的各种坑

系统环境:

  • ubuntu 22.04
  • python3.10
  • Tensorflow2.18
  • bazel 6.5.0
  • Clang17

前言

为了让Tensorflow支持avx2指令集,从源代码编译了Tensorflow2.18版本,其过程主要参考了:https://huanyouchen.github.io/2018/05/25/compile-tensorflow-from-source-with-FMA-and-avx2-instructions-on-ubuntu/,由于这篇博文比较老,编译的是1.0时代的tensorflow,其中很多细节已经发生变动。

第一步,安装Bazel

具体方法参考:https://bazel.google.cn/install/ubuntu?hl=en#binary-installer,如果github下载缓慢可以在链接: https://https://mirrors.huaweicloud.com/bazel/国内镜像下载相应的sh文件。
我安装的是6.5.0版本,如果不确定安装哪个版本,可以查看https://github.com/tensorflow/tensorflow/blob/master/.bazelversion,这里有推荐的bazel版本。
安装完成后:bazel version
如果出现:Build label: 6.5.0这样的就表示安装好了。
最后安装 :sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel

第二步,安装Clang

Tensorflow从2.15版开始使用Clang工具链编译,所以一定要安装clang编译器,不然编译过程会出错。
具体安装步骤参考:https://cn.linux-terminal.com/?p=5997
我安装的是clang17版,完毕后就可以进行下一步操作

第三步 下载tensorflow源码

新建目录:
mkdir tf
进入到该目录下:
cd tf
使用git来clone最新的TensorFlow的源码:git clone https://github.com/tensorflow/tensorflow(第一个坑,我在这一步卡了半天,最后艰难通过代理git clone https://mirror.ghproxy.com/https://github.com/tensorflow/tensorflow.git下载到源码了)
下载完成后,进入到tensorflow的目录里:
cd tensorflow

第四步,配置configure

执行命令: ./configure
这一步很重要,不要选错

You have bazel 6.5.0 installed.
Please specify the location of python. [Default is /usr/bin/python3]:

确认你的python安装路径,没问题直接回车

Please input the desired Python library path to use.  Default is [/usr/lib/python3/dist-packages]

输入的你的python库文件路径,直接默认回车就行

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

ROCm相当于就是A卡的cuda,如果用A卡加速就选y,我用CPU就选的N

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

CUDA支持,N卡选y,我选的N

Do you want to use Clang to build TensorFlow? [Y/n]:

这一个很重要,问是否使用Clang编译,当然选y,参考第二步内容

Please specify the path to clang executable. [Default is /usr/lib/llvm-17/bin/clang]:

确认Clang的路径,默认回车就行

You have Clang 17.0.6 installed.

如果Clang安装成功并且地址正确就会出现以上这句回复。

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -Wno-sign-compare]:

这里默认回车

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

这个选N

第五步,执行编译

这也是一个坑,最新的编译命令会直接打包好wheel文件,不要用//tensorflow/tools/pip_package:build_pip_package,这个会报错找不到target
正确编译命令:bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-msse4.1 --copt=-msse4.2 -k //tensorflow/tools/pip_package:wheel
整个编译过程前期会下载各种库,由于网络问题,一直超时报错,多执行几次编译命令把库下载到缓存就好了
最后一次报错:

FileNotFoundError: [Errno 2] No such file or directory: 'patchelf'

解决方法:sudo apt-get install patchelf
最后经过无数次失败,漫长的等待,最终出现INFO: Build completed successfully,代表编译成功。

第五步,安装

最后编译完毕的tensorflow已经打包好whl文件在./bazel-bin/tensorflow/tools/pip_package/wheel_house路径下,直接运行pip install ./bazel-bin/tensorflow/tools/pip_package/wheel_housetensorflow-2.18.0-cp310-cp310-linux_x86_64.whl,不需要再进行打包操作。

完结

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是在Linux系统中从源码编译安装TensorFlow 1.13.1的步骤: 1. 安装必要的依赖项: ``` sudo apt-get update && sudo apt-get install python3-dev python3-pip python3-wheel python3-venv sudo apt-get install libhdf5-dev libc-ares-dev libeigen3-dev sudo apt-get install libatlas-base-dev libopenblas-dev libblas-dev sudo apt-get install liblapack-dev cython3 ``` 2. 创建Python虚拟环境: ``` python3 -m venv tensorflow_env source tensorflow_env/bin/activate ``` 3. 下载TensorFlow 1.13.1源代码: ``` wget https://github.com/tensorflow/tensorflow/archive/v1.13.1.tar.gz tar -xzvf v1.13.1.tar.gz ``` 4. 进入TensorFlow源代码目录: ``` cd tensorflow-1.13.1 ``` 5. 配置编译选项: ``` ./configure ``` 按照提示进行配置,其中需要注意的是: - 选择Python解释器的路径为虚拟环境中的Python路径,例如:/home/user/tensorflow_env/bin/python3.6; - 如果您的计算机支持AVX指令集,请在编译选项中启用该选项,以获得更好的性能。 6. 开始编译: ``` bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package ``` 编译过程可能需要一些时间,请耐心等待。 7. 生成安装包: ``` ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg ``` 此步骤将会在/tmp/tensorflow_pkg目录下生成TensorFlow 1.13.1的安装包。 8. 安装TensorFlow: ``` pip install /tmp/tensorflow_pkg/tensorflow-1.13.1-*.whl ``` 9. 验证TensorFlow是否安装成功: ``` python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))" ``` 如果输出了一个随机数的和,则说明TensorFlow安装成功。 希望以上步骤能够帮助您成功安装TensorFlow 1.13.1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值