Help us understand the problem. What is going on with this article?

CentOS6.7にTensorFlowをインストールする

More than 3 years have passed since last update.

初投稿

初めての投稿ですが、今回からTensorFlowを使ってみようと思っていて、
備忘録的な意味も込めて、まとめていこうと思います。

TensorFlow

DeepLearningのフレームワークといえばBVLCのCaffeやChainerなどありますが、今回はGoogleのTensorFlowを使ってみることにしました。

まずはインストール

基本的に、TensorFlowで Hello Worldを動かしてみた&その解説
を参考に進めていくのですが、自分の場合割と面倒だったので改めてまとめます。

1. pythonの更新

$ python -V
Python 2.6.6

TensorFlowでは2.7以上が必要なので、まずはpythonの更新から始めます。

$ cd /usr/local/src/
$ wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
$ tar zxf Python-2.7.6.tgz
$ cd Python-2.7.6/
$ ./configure
$ make && make altinstall
$ mv /usr/bin/python /usr/bin/python2.6.6
$ cp /usr/local/src/Python-2.7.6/python /usr/bin/python
$ python -V
Python 2.7.6

2. pipのインストール

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py
ImportError: cannot import name HTTPSHandler

HTTPSHandlerがimportできないと怒られる…
これはopensslに含まれるもので、openssl-develをインストールして、再度makeします。

$ yum install openssl-devel
$ make clean
$ make && make altinstall
$ cp /usr/local/src/Python-2.7.6/python /usr/bin/python
$ python get-pip.py
$ pip --version
pip 8.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)

3. virtualenvのインストールと環境構築

$ pip install virtualenv
$ cd ~
$ mkdir tensorflow && cd tensorflow
$ virtualenv --system-site-packages ~/tensorflow
$ source bin/activate

4. TensorFlowのインストール

(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

テストスクリプトの実行

$ python hello-tf.py 

(hello-tf.pyの詳細は上記のリンク先を参照して下さい。)
すると以下のように怒られました。

ImportError: /lib64/libc.so.6: version `GLIBC_2.17' not found

とりあえずglibcのバージョンを見てみます。

$ yum info glibc
名前       : glibc
アーキテクチャ  : x86_64
バージョン    : 2.12

なるほど確かに足りていない…
glibcはかなりいろいろな箇所で使われているものなので、安易に更新するというのは割と危険
だと思いますので、glibcの2.17をどっかから取ってきてLD_LIBRARY_PATHでパスを通すことを考えます。

とりあえずパッケージを取ってきて展開します。

$ wget ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/7.0/x86_64/updates/security/glibc-devel-2.17-55.el7_0.5.x86_64.rpm
$ wget ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/7.0/x86_64/updates/security/glibc-2.17-55.el7_0.5.x86_64.rpm
$ mkdir libc2.17 && cd libc2.17
$ rpm2cpio ../glibc-devel-2.17-55.el7_0.5.x86_64.rpm | cpio -id
$ rpm2cpio ../glibc-2.17-55.el7_0.5.x86_64.rpm | cpio -id

例えば/tmpに置いておいて、パスを通して再び実行しみます。

$ LD_LIBRARY_PATH=/tmp/libc6_2.17/lib64/ /tmp/libc6_2.17/lib64/ld-2.17.so bin/python ~/tensorflow/hello-tf.py

ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found

まぁ、そうですよね…
バージョンを見てみる

$ strings /usr/lib64/libstdc++.so.6.0.13 | grep GLIBCXX

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

おしい…
さっきと似たようなことをします。

$ wget http://mirrors.kernel.org/centos/7.2.1511/os/x86_64/Packages/libstdc++-devel-4.8.5-4.el7.x86_64.rpm
$ wget http://mirrors.kernel.org/centos/7.2.1511/os/x86_64/Packages/libstdc++-4.8.5-4.el7.x86_64.rpm
$ rpm2cpio libstdc++-devel-4.8.5-4.el7.x86_64.rpm | cpio -id
$ rpm2cpio libstdc++-4.8.5-4.el7.x86_64.rpm | cpio -id

展開したものを/tmpに置きパスを通して再び実行します。

$ LD_LIBRARY_PATH=/tmp/libc6_2.17/lib64/:/tmp/libstdc++4.8.5/usr/lib64 /tmp/libc6_2.17/lib64/ld-2.17.so bin/python ~/tensorflow/hello-tf.py

I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 32
I tensorflow/core/common_runtime/direct_session.cc:58] Direct session inter op parallelism threads: 32
hello, tensorflow
30

わーいわーい

次回?

さて、今回はインストールしてテストスクリプトを動かすまでをまとめました。
次回(もしあれば)は実際に何かやってみたいと思ってます。

Wanwannodao
C/C++ CUDA Emacs
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away