search
LoginSignup
44
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

初投稿

初めての投稿ですが、今回から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

わーいわーい

次回?

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
44
Help us understand the problem. What are the problem?