以下基于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 |
暂无评论内容