GPU版Chainer でサンプル(train_mnist.py)がエラー

2,526 views
Skip to first unread message

szu.s...@gmail.com

unread,
Aug 10, 2015, 12:53:56 AM8/10/15
to Chainer User Group
芝田と申します。
Ubutu14.04LTS(64bit) 環境でChainer の評価を行っています。

GPU版でない(無印)Chainer ではサンプルが正常に動作します(遅いですが)。
    $ python train_mnist.py
    load MNIST dataset
    Downloading train-images-idx3-ubyte.gz...
    Done
    Downloading train-labels-idx1-ubyte.gz...
    Done
    Downloading t10k-images-idx3-ubyte.gz...
    Done
    Downloading t10k-labels-idx1-ubyte.gz...
    Done
    Converting training data...
    Done
    Converting test data...
    Done
    Save output...
    Done
    Convert completed
    ('epoch', 1)
    graph generated
    :


GPU 版では次のようにエラーが発生し動作しませんでした。
    $ python train_mnist.py -g 0
    /usr/local/lib/python2.7/dist-packages/skcuda/cublas.py:273:UserWarning: creating CUBLAS context to get version number
    warnings.warn('creating CUBLAS context to get version number')
    Traceback (most recent call last):
    File "train_mnist.py", line 13, in <module>
    import chainer
    File "/usr/local/lib/python2.7/dist-packages/chainer/__init__.py", line3, in <module>
    from chainer import function
    File "/usr/local/lib/python2.7/dist-packages/chainer/function.py", line7, in <module>
    from chainer import cuda
    File "/usr/local/lib/python2.7/dist-packages/chainer/cuda.py", line 75,in <module>
    import skcuda.linalg
    File "/usr/local/lib/python2.7/dist-packages/skcuda/linalg.py", line 43,in <module>
    from . import install_headers
    ImportError: cannot import name install_headers


GPU 版のインストールにあたり、無印Chainer のインストール後
pycuda をソースからコンパイルしテストプログラムの動作を確認した後に
「sudo pip install chainer-cuda-deps」を実行しています。

一度GPU 版をインストールしてしまうと、無印Chainer のサンプルも
同じエラーが出るようになりました。

この場合、設定上の不備として考えられる点は何でしょうか。
過去の投稿からPYTHONPATH が疑わしいと考え、思いつくパスを一通り設定してみた
のですが上記結果の通りでした。
例)
    export PYTHONPATH=/usr/local/lib/python2.7/dist-packages/chainer


全体としては、次のように構成しています。
・Ubuntu14.04LTS
・nvidia のビデオドライバとcuda のドライバをインストール
・get-pip にてpip をインストール
・sudo pip install chainer
・train_mnist.py の動作を確認
・pycuda をソースからインスール。テストプログラムの動作を確認
・sudo pip install chainer-uda-deps
・train_mnist.py のエラーを確認

想定される設定上の不備などございましたら
ご教示いただけますでしょうか。

よろしくお願いいたします。

Kenta Oono

unread,
Aug 10, 2015, 8:06:57 AM8/10/15
to Chainer User Group
こんにちは。大野です

pipでchainer-cuda-depsをインストールした際に、前にインストールした際のキャッシュが残っている可能性があります。
一度chainer-cuda-depsをアンインストールした後に、--no-cache-dirオプションを追加してもう一度インストールしてみるとどうなりますでしょうか

$ pip uninstall chainer-cuda-deps
$ pip install chainer-cuda-deps --no-cache-dir


2015年8月10日月曜日 13時53分56秒 UTC+9 szu.s...@gmail.com:

szu.s...@gmail.com

unread,
Aug 11, 2015, 3:48:38 AM8/11/15
to Chainer User Group
大野様
お世話になります。芝田です。

ご返信いただきありがとうございます。
--no-cache-dir つきのインストールオプションは存じませんでした。

確認できましたら報告させていただきたいと思います。

以上、よろしくお願いいたします。

2015年8月10日月曜日 21時06分57秒 UTC+9 Kenta Oono:

szu.s...@gmail.com

unread,
Aug 13, 2015, 7:56:54 AM8/13/15
to Chainer User Group
大野様
お世話になります。芝田です。

上記文書(P9)記載の手順に従って再インストールを行ったうえで
先にご提示いただいた操作を行いましたが結果的には同じでした。

引き続き調査したいと思いますがPYTHONPATH に指定する
Chainer パッケージ(CUDA版)のパスは通常どの値になるものでしょうか。

参考ですが次のモジュールの43行目をコメントアウトしたところ
GPU版の「python train_mnist.py -g 0」 でエラーは発生せず動作しているようでした。

"/usr/local/lib/python2.7/dist-packages/skcuda/linalg.py"

適切な措置だったかは判りませんが念の為共有します。
問題ある措置とすれば指摘いただければ幸いです。

以上、よろしくお願いいたします。

2015年8月11日火曜日 16時48分38秒 UTC+9 szu.s...@gmail.com:

hid...@gmail.com

unread,
Aug 14, 2015, 1:15:44 PM8/14/15
to Chainer User Group
芝田様、

PFNの比戸です。

同様の症状だというユーザーの方がTwitterに2名いらっしゃって、共に以下の手順で問題が解決したそうです。
$ pip uninstall pycuda scikit-cuda chainer-cuda-deps
$ pip install chainer-cuda-deps --no-cache-dir

pycudaとscikit-cudaも同時にアンインストールすることがポイントなのか、こちらで再現はできていないのですが、ご参考になれば幸いです。

szu.s...@gmail.com

unread,
Aug 17, 2015, 2:09:19 AM8/17/15
to Chainer User Group, hid...@gmail.com
PFN 比戸様
お世話になります。芝田です。

> 同様の症状だというユーザーの方がTwitterに2名いらっしゃって、共に以下の手順で問題が解決したそうです。
> $ pip uninstall pycuda scikit-cuda chainer-cuda-deps
> $ pip install chainer-cuda-deps --no-cache-dir

解決策のご提示ありがとうございます。
結果から申し上げますと、ご提示の方法では
chainer-cuda-deps のインストール時にpycuda の(再?)インストールと思われる箇所で
エラーが発生してしまいました。

>     c++ -pthread -shared -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/src/wrapper/_pvt_struct_v2.o -o build/lib.linux-x86_64-2.7/pycuda/_pvt_struct.so 
>     running install_lib 
>     creating /usr/local/lib/python2.7/dist-packages/pycuda 
>     error: could not create '/usr/local/lib/python2.7/dist-packages/pycuda': Permission denied 
>  
>     ---------------------------------------- 
>  [31mCommand "/usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-b3P9or/pycuda/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-qPTZ3P-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-b3P9or/pycuda [0m 
>  ]0;xxxxxx-test@Titan-X-01: ~/chainer/examples/mnistxxxxxx-test@Titan-X-01:~/chainer/examples/mnist$

ご提示の方法の場合、chainer-cuda-deps のインストール時に
pycuda とscikit-cuda は自動的に再インストールされるようにも見えますが、
別途インストールが必要だったりするものでしょうか。

インストールのやり方によってご提示の方法が通じない場合もあるのかもしれません。
とりあえずPYTHONPATH が正しく設定されているかを見直したいと思います。

また何か分かりましたら再度投稿いたします。

以上、よろしくお願いいたします。


2015年8月15日土曜日 2時15分44秒 UTC+9 hid...@gmail.com:

Hido Shohei

unread,
Aug 17, 2015, 5:05:49 AM8/17/15
to szu.s...@gmail.com, Chainer User Group
芝田様

PFNの比戸です。お世話になっております。

インストール先のPermission問題ということで、pipをsudo付きにするか
--userオプション付けてユーザーのホーム以下に変更することで解消
されるかもしれません。影響を考えると、後者をおすすめします。

そのあたりは下記Tipsにもありますのでご参考になれば幸いです。

2015年8月16日 23:09 <szu.s...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages