毕竟,在 Linux 上设置 Tensorflow 的正确方法是什么?

What is the correct way of setting up Tensorflow on Linux, after all?

我遇到了一些关于 Tensorflow 的错误信息问题。关于很多地方的很多信息,而且永远不够完整。

我用 CUDA 8.0、cuDNN 设置了我的系统,我的 Keras + Theano 在 python 2.7 上工作正常。我正在尝试迁移到 Tensorflow。

当我尝试在同一环境中安装 numpy 和其他东西时遇到兼容性问题,我安装了 miniconda2,为它创建了一个虚拟环境 conda create -n tensorflow pip 并按照此处的说明激活它:https://www.tensorflow.org/install/install_linux#InstallingAnaconda

环境似乎可以运行。

之后,我从 https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.1-cp27-none-linux_x86_64.whlKeras 安装了 tensorflow,却发现我在 conda list 上复制了一些模块,其中一些标有版本字符串,其他只用 <pip> 标记。特别是,我得到了一个 Tensorflow-gpu 1.2.1Tensorflow 1.1.0。两个都。旧版本仅随 Keras 一起提供。

此外,关于 Tensorflow 未被编译为使用某些 CPU 指令集有无数警告,关于使用 basel 编译它有这个答案 How to compile Tensorflow with SSE4.2 and AVX instructions?,但我在 运行 设置 bazel 命令行之后,并没有真正找到任何关于将源代码放在哪里以及将哪些文件移动到哪里的信息。

更糟糕的是,每当我 运行 一个简单的 20x20 矩阵乘法代码与 "/gpu:0" 作为设备时,代码列表会发出可怕的警告,正确检测到 GTX 1070 的存在,但从来没有确实证实了它已经习惯了计算。而且它 运行 比 "/cpu:0"。我多么想念 Theano...

谁能指出我在哪里可以找到:

  1. 要下载什么版本的 Tensorflow 当前(不一定是最新的)?
  2. 完成它的简洁步骤以及如何测试这些步骤是否正确?

我正在使用 Linux Mint 18。

我使用过 conda 并安装了 Tensorflow=1.1.0,但它似乎从未在 python 中正常工作。我还在 github 问题中发现 anconda 目前正在 Tensorflow GPU 版本 上工作,所以无论我在 Anaconda 中尝试了什么,它都从未使用过我的 Tesla NVIDIA P100-SXM2-16GB 卡,它只使用 CPU.

我建议你使用普通环境,直到他们让 Tensorflow-gpu 在 Anaconda 中正常工作。

为了检查 tensorflow-gpu 是否工作,我使用了带有 TF0.12 / TF1.0 的 Inception v3 模型。

这是我安装tensorflow1.0的过程:

步骤 0.

sudo -i
apt-get install aptitude
aptitude install software-properties-common 
apt-get install libcupti-dev pip
apt-get update
apt-get upgrade libc6

步骤 1. 安装 Nvidia 组件。我想你已经安装了

从以下位置下载适用于 CUDA 8.0 的 NVIDIA cuDNN 5.1 https://developer.nvidia.com/rdp/cudnn-download (需要注册 NVIDIA 的加速计算开发者计划)

Cudnn 5.1 适用于大多数架构和 OS

步骤 2. 安装 bazel 和 tensorflow

apt-get install bazel

你可以去这个 link https://pypi.python.org/pypi/tensorflow-gpu/1.1.0rc0 然后做一个

pip install <python-wheel-version>

如果你安装了python2.7和python3.*,那么使用pip2安装python2.7

步骤 3. 安装 openjdk

apt-get install openjdk-8-jdk

步骤 4. git 克隆 Inception 模型代码

git clone https://github.com/tensorflow/models.git
cd models
git checkout master
cd inception

这就是 bazel 出现的地方。有关目标是什么的更详细说明,请参阅 Bazel 的 Getting Started 文档。所以,如果你做

ls -lstr

你可能会看到 5 个 bazel 相关符号 links

bazel-bin  bazel-genfiles  bazel-inception  bazel-out  bazel-testlogs 

这些是您构建特定模型的目标目录

假设您在 models/inception 目录中

bazel build inception/imagenet_train

这会激活符号 link

注意:要使 imagenet_train.py 正常工作,您需要准备 imagenet 数据集。你要么跳过这部分,要么完成这个:

步骤 5. 准备 Imagenet 数据集 在您首次 运行 训练脚本之前,您需要下载 ImageNet 数据并将其转换为原生 TFRecord 格式。 首先,您需要在 ImageNet 注册一个帐户才能访问数据。查找注册页面,创建帐户并请求访问密钥以下载数据。

获得用户名和密码后,您就可以运行我们的脚本了。确保您的硬盘至少有 500 GB 的可用空间 space 用于下载和存储数据。我们在这里 select DATA_DIR=$HOME/imagenet-data 作为这样的位置,但可以随意进行相应的编辑。

当您运行以下脚本时,请在提示时输入用户名和密码。这将发生在一开始。输入这些值后,您将不需要再次与脚本交互。

#location of where to place the ImageNet data 
DATA_DIR=$HOME/imagenet-data

这里$HOME是/root

# build the preprocessing script.
bazel build inception/download_and_preprocess_imagenet

# run it
bazel-bin/inception/download_and_preprocess_imagenet "${DATA_DIR}"
# Place the tensor records at /root/dataset

步骤 6. 源 bazel 和 tensorflow 这一步非常重要。这将激活 python 包,我认为你可能会收到错误,因为 tensorflow 的 python 包未激活。 如果您跳过了第 5 步,那么您可能想转到

/models/inception/sample

和运行 gpu.py 脚本

python gpu.py

这应该验证您的 tensorflow 版本是否适用于您的 gpu

source /opt/DL/bazel/bin/bazel-activate
source /opt/DL/tensorflow/bin/tensorflow-activate

您还可以通过将 tensorflow 导入 python 来检查 例如: 将 tensorflow 导入为 tf

在他们的站点上找到一个 hello world,例如,如果出现错误,则说明安装不正确

Step 7. 运行 imagenet training --如果跳过了step 5,则可以跳过这一步

bazel-bin/inception/imagenet_train --num_gpus=1 --batch_size=256 --train_dir=/tmp --data_dir=/root/dataset/ --max_steps=100