tensorflow gpu python3.5_在 Windows 环境中从源代码构建

本文档详细介绍了如何在Windows系统上从源代码编译TensorFlow的GPU版本,包括安装Python依赖、Bazel、MSYS2、Visual C++ 生成工具等必要组件,以及配置CUDA和cuDNN版本,最后通过Bazel构建和安装pip软件包的步骤。
摘要由CSDN通过智能技术生成

我们将从源代码构建 TensorFlow pip 软件包并将其安装在 Windows 设备上。

注意:我们已针对 Windows 系统提供了经过充分测试的预构建 TensorFlow 软件包。

Windows 设置

安装以下构建工具以配置 Windows 开发环境。

安装 Python 和 TensorFlow 软件包依赖项

安装 TensorFlow pip 软件包依赖项:

pip3 install six numpy wheel

pip3 install keras_applications==1.0.6 --no-deps

pip3 install keras_preprocessing==1.0.5 --no-deps

这些依赖项就列在 setup.py 文件的 REQUIRED_PACKAGES 下。

安装 Bazel

安装 Bazel,它是用于编译 TensorFlow 的构建工具。如需确认适用的 Bazel 版本,请参阅适用于 Windows 的经过测试的构建配置。配置 Bazel 来构建 C++。

将 Bazel 可执行文件的位置添加到 %PATH% 环境变量中。

安装 MSYS2

为构建 TensorFlow 所需的 bin 工具安装 MSYS2。如果 MSYS2 已安装到 C:\msys64 下,请将 C:\msys64\usr\bin 添加到 %PATH% 环境变量中。然后,使用 cmd.exe 运行以下命令:

pacman -S git patch unzip

安装 Visual C++ 生成工具 2019

安装 Visual C++ 生成工具 2019。该工具随附在 Visual Studio 2019 中,但可以单独安装:

选择“可再发行组件和生成工具”,

下载并安装:

Microsoft Visual C++ 2019 可再发行组件包

Microsoft 生成工具 2019

注意:TensorFlow 已针对 Visual Studio 2019 进行了测试。

安装 GPU 支持项(可选)

若要安装在 GPU 上运行 TensorFlow 所需的驱动程序和其他软件,请参阅 Windows GPU 支持指南。

下载 TensorFlow 源代码

使用 Git 克隆 TensorFlow 代码库(git 随 MSYS2 一起安装):

git clone https://github.com/tensorflow/tensorflow.git

cd tensorflow

该代码库默认为 master 开发分支。您也可以检出想要构建的版本分支:

git checkout branch_name # r1.9, r1.10, etc.

要点:如果您在使用最新的开发分支时遇到构建问题,请尝试已知可用的版本分支。

配置 build

通过在 TensorFlow 源代码树的根目录下运行以下命令来配置系统构建:

python ./configure.py

此脚本会提示您指定 TensorFlow 依赖项的位置,并要求指定其他构建配置选项(例如,编译器标记)。以下代码展示了 python ./configure.py 的示例运行会话(您的会话可能会有所不同):

查看示例配置会话

python ./configure.py

Starting local Bazel server and connecting to it...

................

You have bazel 0.15.0 installed.

Please specify the location of python. [Default is C:\python36\python.exe]:

Found possible Python library paths:

C:\python36\lib\site-packages

Please input the desired Python library path to use. Default is [C:\python36\lib\site-packages]

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

CUDA support will be enabled for TensorFlow.

Please specify the CUDA SDK version you want to use. [Leave empty to default to CUDA 9.0]:

Please specify the location where CUDA 9.0 toolkit is installed. Refer to README.md for more details. [Default is C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0]:

Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 7.0]: 7.0

Please specify the location where cuDNN 7 library is installed. Refer to README.md for more details. [Default is C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0]: C:\tools\cuda

Please specify a list of comma-separated Cuda compute capabilities you want to build with.

You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus

Please note that each additional compute capability significantly increases your build time and binary size. [Default is: 3.5,7.0]: 3.7

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is /arch:AVX]:

Would you like to override eigen strong inline for some C++ compilation to reduce the compilation time? [Y/n]:

Eigen strong inline overridden.

Configuration finished

配置选项

为了支持 GPU,请指定 CUDA 和 cuDNN 的版本。如果您的系统安装了多个版本的 CUDA 或 cuDNN,请明确设置版本,而不是依赖于默认版本。./configure.py 会创建指向系统 CUDA 库的符号链接,因此,如果您更新 CUDA 库路径,就必须在构建之前再次运行此配置步骤。

注意:从 TensorFlow 1.6 开始,二进制文件使用 AVX 指令,这些指令可能无法在旧版 CPU 上运行。

构建 pip 软件包

TensorFlow 2.x

tensorflow:master 代码库已经默认更新为 build 2.x。请安装 Bazel 并使用 bazel build 创建 TensorFlow 软件包。

bazel build //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

如需从 master 分支构建 TensorFlow 1.x,请使用 bazel build --config=v1 创建 TensorFlow 1.x 软件包。

bazel build --config=v1 //tensorflow/tools/pip_package:build_pip_package

仅支持 CPU

使用 bazel 构建仅支持 CPU 的 TensorFlow 软件包构建器:

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

GPU 支持

要构建支持 GPU 的 TensorFlow 软件包编译器,请运行以下命令:

bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

Bazel 构建选项

在构建时使用以下选项,避免在创建软件包时出现问题:tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

请参阅 Bazel 命令行参考文档,详细了解构建选选项。

从源代码构建 TensorFlow 会消耗大量 RAM。如果您的系统受内存限制,请将 Bazel 的 RAM 使用量限制为:--local_ram_resources=2048。

如果构建支持 GPU 的 TensorFlow,请添加 --copt=-nvcc_options=disable-warnings 以禁止显示 nvcc 警告消息。

构建软件包

bazel build 命令会创建一个名为 build_pip_package 的可执行文件,此文件是用于构建 pip 软件包的程序。例如,以下命令会在 C:/tmp/tensorflow_pkg 目录中构建 .whl 软件包:

bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

尽管可以在同一个源代码树下构建 CUDA 和非 CUDA 配置,但建议在同一个源代码树中的这两种配置之间切换时运行 bazel clean。

安装软件包

生成的 .whl 文件的文件名取决于 TensorFlow 版本和您的平台。例如,使用 pip3 install 安装软件包:

pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl

成功:TensorFlow 现已安装完毕。

使用 MSYS shell 构建

也可以使用 MSYS shell 构建 TensorFlow。做出下面列出的更改,然后按照之前的 Windows 原生命令行 (cmd.exe) 说明进行操作。

停用 MSYS 路径转换

MSYS 会自动将类似 Unix 路径的参数转换为 Windows 路径,而此转换不适用于 bazel。(标签 //path/to:bin 被视为 Unix 绝对路径,因为它以斜杠开头。)

export MSYS_NO_PATHCONV=1

export MSYS2_ARG_CONV_EXCL="*"

设置 PATH

将 Bazel 和 Python 安装目录添加到 $PATH 环境变量中。如果 Bazel 安装到了 C:\tools\bazel.exe,并且 Python 安装到了 C:\Python36\python.exe,请使用以下命令设置 PATH:

# Use Unix-style with ':' as separator

export PATH="/c/tools:$PATH"

export PATH="/c/Python36:$PATH"

如需支持 GPU,请将 CUDA 和 cuDNN bin 目录添加到 $PATH 中:

export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin:$PATH"

export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/extras/CUPTI/libx64:$PATH"

export PATH="/c/tools/cuda/bin:$PATH"

经过测试的构建配置

CPU

版本Python 版本编译器构建工具

tensorflow-2.4.03.6-3.8MSVC 2019Bazel 3.1.0

tensorflow-2.3.03.5-3.8MSVC 2019Bazel 3.1.0

tensorflow-2.2.03.5-3.8MSVC 2019Bazel 2.0.0

tensorflow-2.1.03.5-3.7MSVC 2019Bazel 0.27.1-0.29.1

tensorflow-2.0.03.5-3.7MSVC 2017Bazel 0.26.1

tensorflow-1.15.03.5-3.7MSVC 2017Bazel 0.26.1

tensorflow-1.14.03.5-3.7MSVC 2017Bazel 0.24.1-0.25.2

tensorflow-1.13.03.5-3.7MSVC 2015 update 3Bazel 0.19.0-0.21.0

tensorflow-1.12.03.5-3.6MSVC 2015 update 3Bazel 0.15.0

tensorflow-1.11.03.5-3.6MSVC 2015 update 3Bazel 0.15.0

tensorflow-1.10.03.5-3.6MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.9.03.5-3.6MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.8.03.5-3.6MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.7.03.5-3.6MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.6.03.5-3.6MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.5.03.5-3.6MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.4.03.5-3.6MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.3.03.5-3.6MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.2.03.5-3.6MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.1.03.5MSVC 2015 update 3Cmake v3.6.3

tensorflow-1.0.03.5MSVC 2015 update 3Cmake v3.6.3

GPU

版本Python 版本编译器构建工具cuDNNCUDA

tensorflow_gpu-2.4.03.6-3.8MSVC 2019Bazel 3.1.08.011.0

tensorflow_gpu-2.3.03.5-3.8MSVC 2019Bazel 3.1.07.610.1

tensorflow_gpu-2.2.03.5-3.8MSVC 2019Bazel 2.0.07.610.1

tensorflow_gpu-2.1.03.5-3.7MSVC 2019Bazel 0.27.1-0.29.17.610.1

tensorflow_gpu-2.0.03.5-3.7MSVC 2017Bazel 0.26.17.410

tensorflow_gpu-1.15.03.5-3.7MSVC 2017Bazel 0.26.17.410

tensorflow_gpu-1.14.03.5-3.7MSVC 2017Bazel 0.24.1-0.25.27.410

tensorflow_gpu-1.13.03.5-3.7MSVC 2015 update 3Bazel 0.19.0-0.21.07.410

tensorflow_gpu-1.12.03.5-3.6MSVC 2015 update 3Bazel 0.15.079

tensorflow_gpu-1.11.03.5-3.6MSVC 2015 update 3Bazel 0.15.079

tensorflow_gpu-1.10.03.5-3.6MSVC 2015 update 3Cmake v3.6.379

tensorflow_gpu-1.9.03.5-3.6MSVC 2015 update 3Cmake v3.6.379

tensorflow_gpu-1.8.03.5-3.6MSVC 2015 update 3Cmake v3.6.379

tensorflow_gpu-1.7.03.5-3.6MSVC 2015 update 3Cmake v3.6.379

tensorflow_gpu-1.6.03.5-3.6MSVC 2015 update 3Cmake v3.6.379

tensorflow_gpu-1.5.03.5-3.6MSVC 2015 update 3Cmake v3.6.379

tensorflow_gpu-1.4.03.5-3.6MSVC 2015 update 3Cmake v3.6.368

tensorflow_gpu-1.3.03.5-3.6MSVC 2015 update 3Cmake v3.6.368

tensorflow_gpu-1.2.03.5-3.6MSVC 2015 update 3Cmake v3.6.35.18

tensorflow_gpu-1.1.03.5MSVC 2015 update 3Cmake v3.6.35.18

tensorflow_gpu-1.0.03.5MSVC 2015 update 3Cmake v3.6.35.18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C:\Users\zhang'xin'ge>python -c "import tensorflow as tf; print(tf._version_)" Traceback (most recent call last): File "<string>", line 1, in <module> File "D:\Anaconda\lib\site-packages\tensorflow\__init__.py", line 38, in <module> from tensorflow.python.tools import module_util as _module_util File "D:\Anaconda\lib\site-packages\tensorflow\python\__init__.py", line 37, in <module> from tensorflow.python.eager import context File "D:\Anaconda\lib\site-packages\tensorflow\python\eager\context.py", line 32, in <module> from tensorflow.python import pywrap_tfe File "D:\Anaconda\lib\site-packages\tensorflow\python\pywrap_tfe.py", line 25, in <module> from tensorflow.python._pywrap_tfe import * ImportError: DLL load failed while importing _pywrap_tfe: 找不到指定的模块。 C:\Users\zhang'xin'ge>python -c "import keras; print(keras._version_)" Traceback (most recent call last): File "<string>", line 1, in <module> File "D:\Anaconda\lib\site-packages\keras\__init__.py", line 21, in <module> from tensorflow.python import tf2 File "D:\Anaconda\lib\site-packages\tensorflow\__init__.py", line 38, in <module> from tensorflow.python.tools import module_util as _module_util File "D:\Anaconda\lib\site-packages\tensorflow\python\__init__.py", line 37, in <module> from tensorflow.python.eager import context File "D:\Anaconda\lib\site-packages\tensorflow\python\eager\context.py", line 32, in <module> from tensorflow.python import pywrap_tfe File "D:\Anaconda\lib\site-packages\tensorflow\python\pywrap_tfe.py", line 25, in <module> from tensorflow.python._pywrap_tfe import * ImportError: DLL load failed while importing _pywrap_tfe: 找不到指定的模块。
07-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值