TensorFlow的安装

时间:2024-10-26 08:31:12

TensorFlow的安装

标签(空格分隔):TensorFlow


1. 前提说明

在公司试着学习下深度学习项目,决定使用TensorFlow框架,公司的服务器上之前有人搭建过,遇到不懂的也也可以顺便请教。至于为什么还要自己重新搭建一个,因为公司的TensorFlow可能版本较老,在运行mnist的深度学习模型不能运行,所以还得自己重新装一个。
先说明一下现有的条件吧,

  1. 服务器系统为Linux
  2. 有NVIDIA的K80显卡
  3. 并不是服务器的管理者,没有root权限
  4. python 版本2.7

2. Virtualenv下安装TensorFlow

TensorFlow的安装方式有许多种,包括Pip, Docker, Virtualenv, Anaconda 或 源码编译的方法安装.不同的平台下官网上也有相应的安装教程,详见TensorFlow开源社区orTensorFlow中文社区
因为服务器上有众多用户使用,所以对我而言比较好的办法是在沙盒中运行,因此使用Virtualenv安装方式。

# 在 Linux 上:
$ sudo apt-get install python-pip python-devpython-virtualenv
  • 1
  • 2

接下来, 建立一个全新的 virtualenv 环境。可以将环境设在指定目录下,这里设为 /tensorflowtest :

$ virtualenv --system-site-packages tensorflowtest
$ cd tensorflowtest
  • 1
  • 2

然后在自己创建的tensorflow目录下, 激活 virtualenv:

$ source bin/activate  # 如果使用 bash
$ source bin/  # 如果使用 csh
(tensorflowtest)$  # 终端提示符应该发生变化
  • 1
  • 2
  • 3

接下来按照按照官网上的步骤
image_1b950fa5r1ji29mi16b81aub1gusg.png-51.6kB
执行

(tensorflowtest)$ pip install --upgrade tensorflow
  • 1

坑就来了。。。
image_1b950q6vb9bv1qdlek3v841nugt.png-120.9kB

❌Could not find any downloads that satisfy the requirement tensorflow in /usr/lib/python2.7/site-packages.
这一般是由于pip版本过低所致,查看了以下pip版本号,

image_1b950uc2hu8a6661qj0gjthkv1a.png-43.6kB

然后update一下,

(tensorflowtest)$ pip install -U pip
  • 1

image_1b95124rtej0146215eo1o8g11461n.png-71.8kB

再重新pip安装一下,就没问题了。此处安装的是CPU版本,如果没有GPU使用需求的话,至此应该是结束了。
但是按照教程安装GPU版本的话,

(tensorflowtest)$ pip install --upgrade tensorflow-gpu
  • 1

image_1b951fi2rgr21vj01phmest1imc24.png-54.3kB

至此,我也以为万事大吉了,但是在import tensorflow时,

❌CImportError: .8.0: cannot open shared object file: No such file or directory
查了/tensorflow/tensorflow/issues/5625,这是由于CUDA和CUDNN版本不匹配所造成的。
有条件的同学可以自己升级或者下载匹配的CUDA和CUDNN,但是服务器并不是我一人独享,所以环境配置不能随便更改。因此,只能重新用源码安装TensorFlow以适配当前服务器的环境。

3. 用源码安装TensorFlow

主要参考卜居的博客,上面说的也很详细。

下载源码
$ git clone --recurse-submodules https:///tensorflow/tensorflow
  • 1
安装 Bazel

参考 /docs/

配置

$ ./configure 参考lenbow的博客
里面有一项3.5-5.2运算能力的设置,可以参考/cuda-gpus
在我的配置过程中,有一个选项是:

Do you wish to build TensorFlow with OpenCL support? [y/N] n
  • 1

如果用不上的话千万不要选,否则会出现如下一直循环的情况
image_1b953gcd7hcpa4aejhl121i8t2h.png-136.5kB
❌Clease specify the location where ComputeCpp for SYCL 1.2 is installed. [Default is /usr/local/computecpp]:
Invalid SYCL 1.2 library path. /usr/local/computecpp/lib/ cannot be found

编译
  • 仅 CPU 支持,无 GPU 支持:
$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
  • 1
  • 有 GPU 支持:
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package 
  • 1
  • 生成 pip 安装包
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
  • 1
  • cd 到 /tmp/tensorflow_pkg目录下,找到编译好的whl文件
  • 再使用PIP 工具安装
  • 这里如果要有gpu版本的话,也记得要加上–config=cuda
$ pip install --config=cuda /tmp/tensorflow_pkg/tensorflow-x.x.x-py2-none-linux_x86_64.whl
  • 1
编译目标程序, 开启 GPU 支持
$ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer

$ bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu
# 大量的输出信息. 这个例子用 GPU 迭代计算一个 2x2 矩阵的主特征值 (major eigenvalue).
# 最后几行输出和下面的信息类似.
000009/000005 lambda = 2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]
000006/000001 lambda = 2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]
000009/000009 lambda = 2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

至此,折腾了一天半的TensorFlow安装之旅圆满结束。:)