Windows10/11下如何安装bazelisk工具编译tensorflow2.x

以下基于PowerShell进行TensorFlow 2.x的编译安装。

为什么要安装bazelisk

在编译tensorflow采用bazel,而bazel和tensorflow有版本匹配要求。如果使用不匹配的bazel版编译,会使得编译失败。

安装bazelisk

准备工作:安装Chocolatey 

以管理员权限运行PowerShell,运行以下指令

Set-ExecutionPolicy Bypass -Scope Process -Force

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072

iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

注:系统兼容性检查​​

Windows 版本​:Chocolatey 需要 Windows 7+ 或 Server 2003+。

PowerShell 版本​:运行 $PSVersionTable.PSVersion 确认版本 ≥ 3.0。

如果运行以指令尤其是[System.Ne…]这个指令出现PowerShell闪退,则可以直接拷贝除https://chocolatey.org/install.ps1脚本,直接在PowerShell上运行。

此外,由于PowerShell无法直接访问c:Documets and Settings,可以使用c:Users替代(
C:Documents and Settings 是 C:Users 的旧版兼容链接)。

安装bazelisk

完成Chocolatey 运行以下指令进行安装bazelisk

choco install bazelisk

Bazelisk构建TensorFlow

以下以tensorflow 2.14.1为例

下载代码

git clone –branch v2.14.1 https://github.com/tensorflow/tensorflow.git

环境配置

1)环境变量

按照安装的Visual Studio 2022配置如下环境变量:

2)bazel缓存空间

Bazel缓存空间默认为C盘下,具体为:

C:Users<用户名>_bazel_<用户名>

对应的C盘需要预留20GB空间。

或者通过设置环境变量修改,BAZEL_USER_ROOT来修改。

例如需要修改为E:Bazel

则Bazel的输出目录会是E:Bazel.caheazel_bazel_<用户名>上。

3) 虚环境

建立基于python 3.10的conda虚环境。并进入虚环境运行后面的指令

对于PowerShell对于conda支持,需要进入管理员身份打开的PowerShell执行如下指令:

Set-ExecutionPolicy RemoteSigned

输入Y并回车,再执行如下指令:

conda init powershell

运行

# 二选一

# cmd指令

configure.cmd

# python脚本

python configure.py

# 两者一样的效果,喜欢哪个选哪个即可

选项

含义

1

选择python路径

2

选择python库路径

3

选择ROCm支持?GPU硬件加速

4

AVX指令集,若 CPU 支持 AVX2,可指定 /arch:AVX2 获得更好性能

5

选择不覆盖 eigen 内联优化,编译时间可能较长

6

不配置 Android 构建

执行编译指令

在tensorflow源码根目录执行以下指令,并确保能连通外网

bazel build //tensorflow/tools/pip_package:build_pip_package

–define=no_tensorflow_py_deps=true –local_ram_resources=4096 –cxxopt=-std=c++11

参数

作用

–define=no_tensorflow_py_deps=true

禁用 TensorFlow 的 Python 依赖检查

效果​:

•跳过对 numpy, absl-py 等 Python 包的依赖验证

•减少构建时间(约 15-20%)

风险​:可能导致运行时兼容性问题

适用场景​:

•已知环境已安装所有依赖

•仅需构建二进制包,不立即使用

–local_ram_resources=4096

作用​​:限制 Bazel 使用的内存资源

​​参数值​​:4096 MB (4GB)

​​效果​​:

•防止 OOM(内存不足)崩溃

•在资源受限环境中稳定构建

•优化内存密集型任务(如 C++ 模板实例化)

​​建议值​​:

•轻量级构建:4096 MB

•完整构建:8192 MB 或更高

–cxxopt=-std=c++11

作用​​:强制使用 C++11 标准编译

效果​​:

确保向后兼容旧编译器(如 GCC 4.8)

•避免 C++14/17 特性导致的编译错误

•统一所有组件的语言标准

TensorFlow 要求​​:

•最低支持 C++11

•推荐 C++14(但此参数覆盖为 C++11)

其他指令:

1)清除修改

‘git reset –hard HEAD

‘git pull

2)构建

# 彻底清理环境

bazel clean –expunge

# 然后重新运行同步

bazelisk sync –-configure

#执行构建

bazel build //tools/pip_package:build_pip_package

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
沐Linss的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容