Windows 下编译 TensorFlow 2.9.1 CC库

这篇具有很好参考价值的文章主要介绍了Windows 下编译 TensorFlow 2.9.1 CC库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

     参考 Intel 的 tensorflow 编译指导,不过项目还是可以用 TF原本的,不是一定要选择Intel 的TF版本。

安装 MSVC 2019

安装 Intel OneDNN  OneMKL

似乎也可以不安装  ( @ & @ )

https://www.intel.cn/content/www/cn/zh/developer/articles/tool/oneapi-standalone-components.html#onednn

安装 Python 

    TensorFlow文档一般都是推荐安装Python3.8,但高一点版本也没关系,我用的是 Python 3.10.11 。

    安装 pip 和其他工具。 pip的安装不记得了,应该不难。    

python -m ensurepip --default-pip

    安装 numpy 等模块,numpy肯定需要,其他的也可以在编译错误提示的时候安装。

pip install idna
pip install numpy
pip install psutil

安装 Msys2 及 基本工具

    下载 MSYS2-x86_64-20231026.exe 并安装。

     安装开发有关的包,宁滥毋缺。其实 TF的编译不在 MSYS2环境中,就是利用 MSYS2提供的工具。

pacman -S --noconfirm --needed base-devel vim tar wget unzip protobuf
 
pacman -S --noconfirm --needed \
		${MINGW_PACKAGE_PREFIX}-cmake \
		${MINGW_PACKAGE_PREFIX}-gcc \
		${MINGW_PACKAGE_PREFIX}-toolchain \
		${MINGW_PACKAGE_PREFIX}-boost \
		${MINGW_PACKAGE_PREFIX}-ccache \
		${MINGW_PACKAGE_PREFIX}-eigen3 \
		${MINGW_PACKAGE_PREFIX}-gcc-libgfortran \
        ${MINGW_PACKAGE_PREFIX}-grpc \
		${MINGW_PACKAGE_PREFIX}-gtk3 \
		${MINGW_PACKAGE_PREFIX}-julia \
        ${MINGW_PACKAGE_PREFIX}-dlfcn \
		${MINGW_PACKAGE_PREFIX}-ogre3d \
		${MINGW_PACKAGE_PREFIX}-python \
		${MINGW_PACKAGE_PREFIX}-vtk
pacman -S --noconfirm --needed \
		${MINGW_PACKAGE_PREFIX}-libpng \
		${MINGW_PACKAGE_PREFIX}-libjpeg \
		${MINGW_PACKAGE_PREFIX}-libtiff \
		${MINGW_PACKAGE_PREFIX}-libwebp \
		${MINGW_PACKAGE_PREFIX}-dlib \
		${MINGW_PACKAGE_PREFIX}-ffmpeg \
		${MINGW_PACKAGE_PREFIX}-harfbuzz \
		${MINGW_PACKAGE_PREFIX}-lapack \
		${MINGW_PACKAGE_PREFIX}-openblas \
		${MINGW_PACKAGE_PREFIX}-opencl-clhpp \
		${MINGW_PACKAGE_PREFIX}-opencl-headers \
		${MINGW_PACKAGE_PREFIX}-opencl-icd \
		${MINGW_PACKAGE_PREFIX}-openmp

安装Bazel

    不同tensorflow版本对应的Bazel版本是不同的,提前确定好。

    对于 tensorflow 2.9.1,下载安装 Windows 版本 bazel 5.4.0,复制到 C:\Program Files\Bazel-5.4.0 或 D:\Bazel-5.4.0 目录,改名为 bazel.exe。

## 官方下载
wget https://github.com/bazelbuild/bazel/releases/download/5.4.0/bazel-5.4.0-windows-x86_64.exe
## 国内镜像
wget https://hub.nuaa.cf/bazelbuild/bazel/releases/download/5.4.0/bazel-5.4.0-windows-x86_64.exe

下载 tensorflow 

git 克隆后切换到指定版本

git clone --recursive https://github.com/tensorflow/tensorflow.git
cd tensorflow
# switch to the branch you want to build
git checkout r2.9.1  # r1.9, r1.10, etc. 

或下载源码包并解压

## 官网地址
wget https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.9.1.zip

## 国内镜像
wget https://hub.nuaa.cf/tensorflow/tensorflow/archive/refs/tags/v2.9.1.zip

## 解压
unzip v2.9.1.zip

编译 TF 2.9.1 

     在开始菜单中点击“Developer Command Prompt for VS 2019” 进入 MSVC2019 命令行环境。

     进入tensorflow 目录,编辑 prepare-build-TF2.9.bat 批处理文件 。

@echo off

set MSYS64_BASPATH=D:\msys64
set BAZEL_SH=%MSYS64_BASPATH%\usr\bin\bash.exe

set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio
set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC
set TF_VC_VERSION=16.6

set OneMKL_DIR=C:\Program Files (x86)\Intel\oneAPI\mkl\2023.2.0
set OneAPI_DIR=C:\Program Files (x86)\Intel\oneAPI

set BAZEL_DIR=C:\Bazel-5.4.0
set PYTHON_3_10=C:\Users\Tony\AppData\Local\Programs\Python\Python310
set GIT_PATHS=C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin


set PATH=%OneAPI_DIR%;%PYTHON_3_10%;%PYTHON_3_10%\Scripts;%OneMKL_DIR%\;%BAZEL_DIR%;%GIT_PATHS%;%PATH%;%MSYS64_PATHS%;%MSYS64_BASPATH%\usr\bin

setvars.bat

configure.cmd

BAZEL_DIR:指向你的 bazel执行文件所在目录,其他参数就看你实际的安装路径了。

编辑 build-TF2.9.bat 批处理文件。

@echo off

set OUT_DIR=K:\TF2.9.1_OUT

for %%i in ( 1 ) do (
echo " -------------------- ROUND %1 :  START on %time%  --------------------- "

 bazel --output_base=%OUT_DIR%  build --config=opt  --config=mkl  --define=no_tensorflow_py_deps=true  --local_ram_resources=HOST_RAM*.6  --local_cpu_resources=7  //tensorflow:tensorflow_cc
 bazel --output_base=%OUT_DIR%  build --config=opt  --config=mkl  --define=no_tensorflow_py_deps=true  --local_ram_resources=HOST_RAM*.6  --local_cpu_resources=7  //tensorflow:tensorflow_cc.lib
 bazel --output_base=%OUT_DIR%  build --config=opt  --config=mkl  --define=no_tensorflow_py_deps=true  --local_ram_resources=HOST_RAM*.6  --local_cpu_resources=7  //tensorflow:install_headers
echo " ------------------- ROUND %1 :   DONE on %time%  --------------------- "

 OUT_DIR : 通过 bazel 参数 --output_base=指定的编译工作目录,不指定的话会指向 C:\Users\yourname\_bazel_compiler\<hashcode>,对C盘容量是巨大的挑战,特别是你同时编译几个版本的时候。

    执行这个批处理文件就好了。生成路径如下图

Windows 下编译 TensorFlow 2.9.1 CC库,windows,tensorflow,人工智能

问题:

github下载超时

 将bazel脚本中 github.com链接换成国内github 镜像,加速下载,这里我使用https://hub.nuaa.cf,你看到的时候这个镜像大概率不能用了,自己搜一个就好。

sed -i -e 's#https:\/\/github\.com#​​​​​​​​​​​​​​https://hub.nuaa.cf#g' \
                   */*.bzl */*/*.bzl */*/*/*.bzl */*/*/*/*.bzl \
                   */*.py  */*/*.py  */*/*/*.py  */*/*/*/*.py

但是部分 bazel 脚本会将 github  URL 替换成 镜像站 URL。

  https://github.com/...........

   -->  https://storage.googleapis.com/mirror.tensorflow.org/github.com/..........

这会造成  https://hub.nuaa.cf/.......... 被转换成  https://storage.googleapis.com/mirror.tensorflow.org/hub.nuaa.cf/...........

所以,当发现这种错误引起的下载失败的话,再将 github镜像 url 转换回原url,继续编译。

sed -i -e 's#​​​​​​​​​​​​​​https:\/\/hub\.nuaa\.cf#https://github.com#g' \
                   */*.bzl */*/*.bzl */*/*/*.bzl */*/*/*/*.bzl \
                   */*.py  */*/*.py  */*/*/*.py  */*/*/*/*.py

pip下载超时

可以看看 pip有没有设置镜像URL,如果没有,设置到镜像站,我选用清华镜像站

pip config get global.index-url
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

报错:用户没有权限

执行 os.symlink(target, link_name)时,报告用户没有权限。我即使以管理员执行 msys2也无法解决这个问题。

最后 直接用管理员账号登录,重新准备所有环境才解决

报错:Couldn't find undname.exe under。。。

一般是使用的 MSVC版本不合适,我安装 VS2019后这个问题被解决。

BAZEL_VC does not work when vs2019 and vs2022 exist on windows 11. · Issue #14232 · bazelbuild/bazel · GitHub

Auto-Configuration Error: Couldn't find undname.exe under C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\ · Issue #31608 · tensorflow/tensorflow · GitHubb

报错:fatal error C1007: 无法识别的标志“-ReducedOptimizeHugeFunctions”(在“p2”中)

 VS2015,VS2017 还不支持这个选项,一定要安装 VS2019。

(VS2022 我没有成功,保留意见)。

参考 tensorflow源码根目录配置文件.bazelrc 的说明

Windows 下编译 TensorFlow 2.9.1 CC库,windows,tensorflow,人工智能

为了保证进入 Msys2界面后 VS2019 编译环境 正常,在~/.bashrc 中追加初始化指令,你需要修改为你机器的VS2019安装路径。

"D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"

报错:ERROR: No matching distribution found for numpy==1.23.5

 默认版本不兼容,安装指定版本的 python-numpy

wget https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/mingw-w64-x86_64-python-numpy-1.23.5-1-any.pkg.tar.zst
pacman -U mingw-w64-x86_64-python-numpy-1.23.5-1-any.pkg.tar.zst

指定安装包版本

wget https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/mingw-w64-x86_64-python-psutil-5.9.5-2-any.pkg.tar.zst

wget https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/mingw-w64-x86_64-python-idna-3.4-2-any.pkg.tar.zst

报错 : fatal error C1060: 编译器的堆空间不足

Windows 下编译 TensorFlow 2.9.1 CC库,windows,tensorflow,人工智能

限制 bazel 占用资源数。实际使用下来效果改善不大,只能反复编译个几十遍。

bazel build --config=opt \
        --local_ram_resources=HOST_RAM*.8 \
        --local_cpu_resources=HOST_CPUS-2  \
        //tensorflow/tools/pip_package:build_pip_package

 报错 :无法打开 legalize_tf_xla_call_module_to_stablehlo_pass.obj.params

 windows下 有MAX_PATH=260 的限制,--output_base 设置编译输出路径尽量短小就好。 Windows 下编译 TensorFlow 2.9.1 CC库,windows,tensorflow,人工智能

报错:“prefix_sum_shifted”: 未声明的标识符

tensorflow/compiler/tf2xla/kernels/where_op.cc(242): error C2065: “prefix_sum_shifted”: 未声明的标识符 Windows 下编译 TensorFlow 2.9.1 CC库,windows,tensorflow,人工智能

 解决方法:在 MSys2 命令行界面中对报错文件执行 unix2dos 文章来源地址https://www.toymoban.com/news/detail-743899.html

到了这里,关于Windows 下编译 TensorFlow 2.9.1 CC库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python/人工智能】TensorFlow 框架原理及使用教程

    TensorFlow 是一款由 Google 开源的人工智能框架,是目前应用最广泛的深度学习框架之一。它可以在各种硬件平台上运行,包括单个 CPU、CPU 集群、GPU,甚至是分布式环境下的 CPU 和 GPU 组合。 除了深度学习领域,TensorFlow 还支持其他机器学习算法和模型,如 决策树 、 SVM 、 k-m

    2024年04月28日
    浏览(48)
  • 人工智能:Pytorch,TensorFlow,MXNET,PaddlePaddle 啥区别?

    学习人工智能的时候碰到各种深度神经网络框架:pytorch,TensorFlow,MXNET,PaddlePaddle,他们有什么区别? PyTorch、TensorFlow、MXNet和PaddlePaddle都是深度学习领域的开源框架,它们各自具有不同的特点和优势。以下是它们之间的主要区别: PyTorch是一个开源的Python机器学习库,它基

    2024年04月16日
    浏览(69)
  • 人工智能TensorFlow PyTorch物体分类和目标检测合集【持续更新】

    1. 基于TensorFlow2.3.0的花卉识别 基于TensorFlow2.3.0的花卉识别Android APP设计_基于安卓的花卉识别_lilihewo的博客-CSDN博客 2. 基于TensorFlow2.3.0的垃圾分类 基于TensorFlow2.3.0的垃圾分类Android APP设计_def model_load(img_shape=(224, 224, 3)_lilihewo的博客-CSDN博客   3. 基于TensorFlow2.3.0的果蔬识别系统的

    2024年02月09日
    浏览(62)
  • 鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法

    鱼类识别系统。使用Python作为主要编程语言开发,通过收集常见的30种鱼类(‘墨鱼’, ‘多宝鱼’, ‘带鱼’, ‘石斑鱼’, ‘秋刀鱼’, ‘章鱼’, ‘红鱼’, ‘罗非鱼’, ‘胖头鱼’, ‘草鱼’, ‘银鱼’, ‘青鱼’, ‘马头鱼’, ‘鱿鱼’, ‘鲇鱼’, ‘鲈鱼’, ‘鲍鱼’, ‘鲑

    2024年02月02日
    浏览(100)
  • 【人工智能】Transformers 快速上手: 为 Jax、PyTorch 和 TensorFlow 打造的先进的自然语言处理

    为 Jax、PyTorch 和 TensorFlow 打造的先进的自然语言处理 🤗 Transformers 提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用。 🤗 Transformers 提供了便于快速下载和使用的API,让你可以把

    2024年02月08日
    浏览(69)
  • tensorflow1 tensorflow 2 安装配置(cpu+gpu)windows+linux

    tensorflow1和2的安装部署,演示2.14版本(最新是2.15版本) windows和linux用法一致,我是在win10和ubuntu2204下都手动测试过的 本文使用的conda的方式,2023年12月10日更新 如果中间有任何报错,参考最后一节的处理 链接:tensorflow官网 注意:如果因为网络问题出现错误或卡住,多次尝

    2024年02月04日
    浏览(47)
  • 【TensorFlow】P0 Windows GPU 安装 TensorFlow、CUDA Toolkit、cuDNN

    TensorFlow 是一个基于数据流图的深度学习框架 TensorFlow是一个基于数据流图的深度学习框架,它使用张量(Tensor)作为数据的基本单位,在GPU上进行张量运算可以极大地提高深度学习模型的训练和推理速度。而CUDA则提供了在GPU上执行高性能并行计算所需的API和运行时环境,能

    2024年02月13日
    浏览(40)
  • 用Anaconda安装TensorFlow(Windows10)

    如果想要安装 tensorflow2.3.0 版本,可以阅读此篇博客:tensorflow安装步骤(Anaconda环境下,Windows10) 1.Anaconda下载 两种下载路径,第一种是从Anaconda官网下载 Anaconda官网 第二种是从清华镜像官网下载(比较快) 清华镜像Anaconda下载 我选择的是在清华镜像下载 Anaconda3-2021.11-Windo

    2023年04月08日
    浏览(44)
  • tensorflow-gpu卸载 (windows)

    在安装 Tensorflow-gpu 时,如果, Tensorflow-gpu 、 Python 、 cuda 、 cuDNN 版本关系不匹配很容易安装出错,要重新安装的话,要把之前装的卸载干净! tensorflow-cpu卸载, 激活进入虚拟环境,在这里卸载: 进入虚拟环境安装路径: Proceed(y/n)? y 删除之前创建的虚拟环境(例子为删除名

    2024年02月05日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包