作者:TensorFlow 从源代码构建 TensorFlow pip 包,并将其安装在 Ubuntu Linux 和 macOS 上。 虽然这些说明可能适用于其他系统,但它仅针对 Ubuntu 和 macOS 进行测试和支持。 注意:我们已经为 Linux 和 macOS 系统提供了经充分测试的预构建 TensorFlow 软件包。 Linux 和 macOS 的安装程序 安装以下构建工具,来配置开发环境。 安装 Python 和 TensorFlow 包依赖项 UBUNTU $ sudo apt install python-dev python-pip # or python3-dev python3-pip MAC OS 需要 Xcode 8.3 或更高版本。 使用 Homebrew 包管理器安装: $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" $ export PATH="/usr/local/bin:/usr/local/sbin:$PATH" $ brew install python@2 # or python (Python 3) 安装 TensorFlow pip 包依赖项(如果使用虚拟环境,则省略-- user 参数): $ pip install -U --user pip six numpy wheel mock $ pip install -U --user keras_applications==1.0.5 --no-deps $ pip install -U --user keras_preprocessing==1.0.3 --no-deps 在 REQUIRED_PACKAGES 下的 setup.py 文件中查看依赖项。(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/pip_package/setup.py) 安装 Bazel 安装 Bazel,用于编译 TensorFlow 的构建工具。将 Bazel 可执行文件的位置添加到 PATH 环境变量中。 安装 GPU 支持(可选,仅限 Linux) macOS 无 GPU 支持。 阅读 GPU 支持指南,将运行 TensorFlow 所需的驱动程序和其他软件安装在 GPU 上。 注意:设置一个 TensorFlow 支持 GPU 的 Docker 镜像会更容易一些。 下载 TensorFlow 源代码 使用 Git 克隆 TensorFlow 存储库: $ git clone https://github.com/tensorflow/tensorflow.git $ cd tensorflow repo 默认为 master 开发分支。 您还可以检验需要构建的发布分支: $ git checkout branch_name # r1.9, r1.10, etc. 要测试 source tree 的副本,请运行以下测试(这可能需要一段时间): $ bazel test -c opt -- //tensorflow/... -//tensorflow/compiler/... -//tensorflow/contrib/lite/... 关键点:如果您在最新的开发分支上遇到构建问题,请尝试一个已知可用的发布分支。 配置构建 通过在 TensorFlow 源代码树的根目录下运行以下命令来配置系统构建: $ ./configure 此脚本会提示您输入 TensorFlow 依赖项的位置,并询问其他构建配置选项(例如,编译器标志)。 以下内容向我们展示了./configure 的示例运行(会话可能会有所不同): 查看示例配置会话 对于 GPU 支持,请指定 CUDA 和 cuDNN 的版本。 如果您的系统安装了多个版本的 CUDA 或 cuDNN,请显式设置版本,不要依赖于默认版本。 ./configure 创建指向系统 CUDA 库的符号链接 - 因此,如果更新 CUDA 库路径,必须在构建之前再次运行此配置步骤。 对于编译优化标志,缺省值(-march = native)优化为适应您的计算机 CPU 类型而生成的代码。 但是,如果为不同的 CPU 类型构建 TensorFlow,请考虑更具体的优化标志。 有关示例,请参阅 GCC 手册。 有一些预先配置的构建配置可以添加到 bazel 构建命令中,例如:
注意:从 TensorFlow 1.6 开始,二进制文件使用 AVX 指令,这些指令可能无法在较老的 CPU 上运行。 构建 pip 包 Bazel 构建 仅 CPU 使用 bazel 让 TensorFlow 包构建器仅支持 CPU: $ bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package GPU 支持 要使 TensorFlow 包构建器具有 GPU 支持: $ bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package Bazel 构建选项 从源代码构建 TensorFlow 会使用大量的 RAM。 如果您的系统受内存限制,请使用以下命令限制 Bazel 的 RAM 使用情况:--local_resources 2048,.5,1.0. 官方 TensorFlow 软件包使用 GCC 4 构建,并使用较老的 ABI。对于 GCC 5 及更高版本,使用以下命令使您的构建与老的 ABI 兼容: - cxxopt =“ - D_GLIBCXX_USE_CXX11_ABI = 0”。 ABI 兼容性确保针对官方 TensorFlow 包构建的自定义操作继续与 GCC 5 构建的包一起使用。 构建包 bazel build 命令创建一个名为 build_pip_package 的可执行文件 - 这是一个构建 pip 包的程序。 例如,以下内容在 /tmp/tensorflow_pkg 目录中构建 .whl 包: $ ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg 虽然可以在同一 source tree 下构建 CUDA 和非 CUDA 配置,但推荐在同一 source tree 中切换这两种配置时运行 bazel clean。 安装包 生成的 .whl 文件的文件名取决于 TensorFlow 版本和您的平台。 使用 pip install 来安装软件包,例如: $ pip install /tmp/tensorflow_pkg/tensorflow-version-cp27-cp27mu-linux_x86_64.whl 成功:现在已安装 TensorFlow。 Docker Linux 构建 TensorFlow 的 Docker 开发镜像是一种设置环境以从源代码构建 Linux 包的简单方法。 这些镜像已包含构建 TensorFlow 所需的源代码和依赖项。 请参阅 TensorFlow Docker 指南以获取安装和可用镜像标记列表(https://tensorflow.google.cn/install/docker?hl=zh-CN) 仅 CPU 以下示例使用 the :nightly-devel 镜像从最新的 TensorFlow 源代码构建仅 CPU 的 Python 2 包。 有关可用的 TensorFlow -devel 标记,请参阅 Docker 指南。 下载最新的开发镜像并启动我们将用于构建 pip 包的 Docker 容器: $ docker pull tensorflow/tensorflow:nightly-devel $ docker run -it -w /tensorflow -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \ tensorflow/tensorflow:nightly-devel bash # git pull # within the container, download the latest source code 上面的 docker run 命令在 / tensorflow 目录中启动一个 shell – source tree 的根目录。 它将主机的当前目录安装在容器的 / mnt 目录中,并通过环境变量将主机用户的信息传递给容器(用于设置权限 - Docker 可以使这一点变得棘手)。 或者,要在容器中构建 TensorFlow 的主机副本,请将主机 source tree 挂载到容器的 / tensorflow 目录: $ docker run -it -w /tensorflow -v /path/to/tensorflow:/tensorflow -v $PWD:/mnt \ -e HOST_PERMS="$(id -u):$(id -g)" tensorflow/tensorflow:nightly-devel bash 设置 source tree 后,在容器的虚拟环境中构建 TensorFlow 包: 1. 配置构建 - 这会提示用户回答构建配置问题。 2. 构建用于创建 pip 包的工具。 3. 运行该工具以创建 pip 包。 4. 调整容器外部文件的所有权。 # ./configure # answer prompts or use defaults # bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package # ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt # create package # chown $HOST_PERMS /mnt/tensorflow-version-cp27-cp27mu-linux_x86_64.whl 安装并验证容器中的包: # pip uninstall tensorflow # remove current version # pip install /mnt/tensorflow-version-cp27-cp27mu-linux_x86_64.whl # cd /tmp # don't import from source directory # python -c "import tensorflow as tf; print(tf.__version__)" 成功:现已安装 TensorFlow。 在主机上,TensorFlow pip 包位于当前目录中(具有主机用户权限):./tensorflow-version-cy27-cp27mu-linux_x86_64.whl GPU 支持 Docker 是为 TensorFlow 构建 GPU 支持的最简单方法,因为主机只需要 NVIDIA® 驱动程序(不必安装 NVIDIA® CUDA® Toolkit)。 请参阅 GPU 支持指南和 TensorFlow Docker 指南, 来设置 nvidia-docker(仅限 Linux)。 以下示例加载 TensorFlow :nightly-devel-gpu-py3 镜像,并使用 nvidia-docker 运行启用 GPU 的容器。 此开发镜像配置为构建支持 GPU 的 Python 3 pip 包: $ docker pull tensorflow/tensorflow:nightly-devel-gpu-py3 $ docker run --runtime=nvidia -it -w /tensorflow -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \ tensorflow/tensorflow:nightly-devel-gpu-py3 bash 之后,在容器的虚拟环境中, 在 GPU 支持下构建 TensorFlow 包: # ./configure # answer prompts or use defaults # bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package # ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt # create package # chown $HOST_PERMS /mnt/tensorflow-version-cp35-cp35m-linux_x86_64.whl 安装并验证容器中的包,并检查 GPU: # pip uninstall tensorflow # remove current version # pip install /mnt/tensorflow-version-cp27-cp27mu-linux_x86_64.whl # cd /tmp # don't import from source directory # python -c "import tensorflow as tf; print(tf.contrib.eager.num_gpus())" 成功:现已安装 TensorFlow。 经过测试的构建配置 Linux 点击图片,放大查看 点击图片,放大查看 macOSCPU点击图片,放大查看 GPU点击图片,放大查看 ------------------------------------------------------------------------- 我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。 ------------------------------------------------------------------------- |