LoginSignup
1
1

More than 3 years have passed since last update.

サーバー上にtensorflow用の仮想環境を構築する

Last updated at Posted at 2018-11-07

はじめに

ワケあって今まで使っていたサーバー上に環境を立てなくちゃいけなくなってハマり,相当な時間を無駄にしたので,自分への戒めと今後のためにメモ.(こういうハマり方する度に最上流に行きたくなる.)
ゴールは,サーバーのjupyter notebookをlocalのブラウザで開き,その上でtensorflowがきちんと動く環境を作ること.
今回やったことは,
- virtualenvで仮想環境構築
- numpyのversion上げ
- pyenvでpython2.7.9導入
- jupyter notebook起動時のoption付け

環境

色々試した後の環境(試す前の環境をメモするの忘れた)

ubuntu 14.04
python 2.7.6
tensorflow-gpu 1.2.1
numpy 1.15.4

本題

import tensorflowしたら以下のエラーが出た.

`RuntimeError: module compiled against API version 0xa but this version of numpy is 0x9`

`ImportError: Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
ImportError: numpy.core.multiarray failed to import


Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/install_sources#common_installation_problems

for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.`

URLが書いてあるが,ここ見てもよくわからない.
どうやらtensorflowが古いversionのnumpyを見に行ってるらしい.numpyなんかそう何個も入れないんだけどなぁ...
numpyのversionあげないとだが,OS管理下のnumpyをいじるのは怖いし,そもそも自分はこのサーバーのsudoer権限を持っていないので,virtualenvで仮想環境を立ててnumpyを更新することにした.

pyenvでpython2.7.9を入れる

早速virtualenvで仮想環境作ってnumpyのversionをあげたいところだが,python2.7.9以降でないとjupyter notebookが入らないので,まずはpyenvでpython2.7.9の環境を作る.

そもそもpyenvが入ってなかった(笑)ので,
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
でpyenvをインストールする.
あとはpyenv install 2.7.9でpython 2.7.9を入れて,pyenv local 2.7.9をすればpython 2.7.9の環境に入れる.

virtualenvで仮想環境構築

pythonの環境が整ったので,ようやく仮想環境作りに入る.
なんのことはないが,
virtualenv ENVNAME --no-site-package --python=PYTHON_PATH
で仮想環境を構築した.
この時指定するPYTHON_PATHだが,前述したように2.7.9以降でないとjupyter notebookがpip installできないので,それ以前の場合はまずpyenvで2.7.9以上のpythonを入れて,そのPATHである~/.pyenv/versions/2.7.9/bin/pythonを指定する.
直下に./ENVNAMEディレクトリが作成されているはずなので,source ./ENVNAME/bin/activateで仮想環境に入る.

あとはpip install tensorflowすればnumpyは一緒にインストールされるし,pip install jupyterも問題なく動くはず.

サーバーのjupyter notebookに,localからアクセス

jupyter notebook起動時にちょっとしたオプションを付けないとうまく動いてくれなかった.
以前,ここ(分析サーバーでjupyter notebookを起動してローカルからアクセス)を参考にポートフォワーディングの設定をしたので,
サーバー上でjupyter notebook --ip localhost --port 8888をして,localhostの自分が設定したportにアクセスすれば,jupyter notebookを触れる.
port番号は適宜書き換える.

おわりに

すんなり環境構築できたみたいに見えるが,実際はいろんなページ飛び回ったり,仮想環境作った後で古いpythonだとjupyterが入らないことに気づいてやり直したりで,丸一日かかってしまった.
なんとか動くようにはなったが,最初のエラーがいきなり出た原因は不明なままなのでどうも腑に落ちない.
きちんと仮想環境整えなきゃなぁ思いつつ,バグが出る予感しかしないので,できれば一生やりたくない.
でもこのままだと,いずれ今回のような不具合が出るし,思い切ってやってしまおうか...

1
1
0

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
  3. You can use dark theme
What you can do with signing up
1
1