概要からお伝えします。Tensorflowを用いた機械学習を、sbatch
コマンドを用いてサーバー上で行いたいのですが、手元のプログラムはエラーが出て実行することができません。適切なバージョンのglibcが見つからないらしいのですが、サーバー管理者に問い合わせたところ、簡単にはアップデートできないとのことですので、ホームディレクトリ以下に用意した適切なバージョンのglibcを指定して参照させる方法があれば教えていただきたいと思っています。
1. プログラム
今回実行したいプログラムは、 San_さんの記事 にある translate.py
というものです。何も改変せず、入力するデータだけを変えて試してみるつもりでいます。
ちなみに、次のような単純なプログラムでもエラーとなります:
Python
1import tensorflow as tf 2 3with tf.Session() as sess: 4 print('Hello, Tensorflow!')
2. 実行方法
次に、実行にあたっては、sbatch
コマンドでサーバーにバッチファイルを投げて処理を行わせています。サーバーではAnacondaで作成した専用の環境"tensorflow"
上に、以下の環境を構築しています。
- OS: CentOS x86_64 6.3
- ルート権限なし
- Anaconda 4.1.1
- Python 3.5.2
- Tensorflow-GPU 0.12.1
- CUDA ToolKit 8.0
- glibc 2.12
バッチファイルは次のようなものです。
sh
1#!/bin/sh 2echo Begin batch. 3export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64 4source /home/username/.pyenv/versions/anaconda3-4.1.1/bin/activate tensorflow 5python3 translate.py --data_dir datas --train_dir datas 6source /home/username/.pyenv/versions/anaconda3-4.1.1/bin/deactivate 7echo End batch.
3. エラー
そして、出力されるエラーは次の通りです:
Begin batch. Traceback (most recent call last): File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/__init__.py", line 49, in <module> from tensorflow.python import pywrap_tensorflow File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module> _pywrap_tensorflow = swig_import_helper() File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description) File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/imp.py", line 242, in load_module return load_dynamic(name, filename, file) File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/imp.py", line 342, in load_dynamic return _load(spec) ImportError: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by /home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "translate.py", line 20, in <module> import tensorflow.python.platform File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/__init__.py", line 24, in <module> from tensorflow.python import * File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/__init__.py", line 60, in <module> raise ImportError(msg) ImportError: Traceback (most recent call last): File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/__init__.py", line 49, in <module> from tensorflow.python import pywrap_tensorflow File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module> _pywrap_tensorflow = swig_import_helper() File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description) File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/imp.py", line 242, in load_module return load_dynamic(name, filename, file) File "/home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/imp.py", line 342, in load_dynamic return _load(spec) ImportError: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by /home/username/.pyenv/versions/anaconda3-4.1.1/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so) Error importing tensorflow. Unless you are using bazel, you should not try to import tensorflow from its source directory; please exit the tensorflow source tree, and relaunch your python interpreter from there. End batch.
4. 試してみた対策
LD_LIBRARY_PATH
を使って、rpmで入手してホームディレクトリ以下に展開したglibc 2.17を参照するようにしてみました:
sh
1#!/bin/sh 2echo Begin batch. 3export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64 4# ↓この行を追加 5export LD_LIBRARY_PATH=/home/username/libc2.17/lib64/:$LD_LIBRARY_PATH 6source /home/username/.pyenv/versions/anaconda3-4.1.1/bin/activate tensorflow 7python3 translate.py --data_dir datas --train_dir datas 8source /home/username/.pyenv/versions/anaconda3-4.1.1/bin/deactivate 9echo End batch.
そうすると、別のエラーが出るようになってしまいました。それはこういったものでした:
Begin batch. dirname: relocation error: /home/username/libc2.17/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference uname: relocation error: /home/username/libc2.17/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference /home/username/.pyenv/versions/anaconda3-4.1.1/bin/activate: line 53: /conda: そのようなファイルやディレクトリはありません python3: relocation error: /home/username/libc2.17/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference dirname: relocation error: /home/username/libc2.17/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference uname: relocation error: /home/username/libc2.17/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference End batch.
glibc 2.16でも試してみましたが、同様のエラーが出る結果となりました。
なんとかして、任意のバージョンのglibcを指定して使用することはできないでしょうか?それとも、3.でお見せしたエラーを防ぐ方法が他にあるのでしょうか?ご存知の方がおりましたら、どうぞよろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー