LoginSignup
0
3

More than 5 years have passed since last update.

Jupyter on GCP で keras.layer.LSTM やると Segmentation Fault になる問題

Last updated at Posted at 2017-11-15

ハマった問題

  • GCP に pyenv で anaconda を入れて jupyter を起動
  • jupyter notebook --ip=0.0.0.0 --port=8888 でサーバを起動し、ローカルからhttp://<GCEインスタンス外部IP>:8888/に接続
  • ipynb を作り、 その中で keras.layer.LSTM のインスタンスをつくると落ちる

原因の調査

実行していたコードはこれで、単純なテキスト分類タスク

 1. from keras.layers import Input, LSTM, Embedding
 2. 
 3. MAX_SEQUENCE_LENGTH = 500
 4. VOCABULARY = 10000
 5. EMBEDDING_DIM = 300
 6. LSTM_OUTPUT_DIM = 100
 7. EPOCHS = 15
 8. BATCH_SIZE = 1024
 9.
10. sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32')
11. embedded = Embedding(output_dim=EMBEDDING_DIM, input_dim=VOCABULARY, input_length=MAX_SEQUENCE_LENGTH)(sequence_input)
12. preds = LSTM(LSTM_OUTPUT_DIM, return_sequences=True)(embedded)
13. 
14. model = Model(sequence_input, preds)
15. model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])
  • 上記の LSTM インスタンスを作成している12行目のところで Segmentation fault と出て終わってしまう
  • そもそも学習すら走らせてないのに、インスタンス作成で死ぬってどういうこと?

LSTM を宣言しないとどうなるか

  • すんなり compile まで通る

メモリの上限にきてるのではないか

  • GCE のメモリを 240GB に増やして実行
  • 使用率5%程度まで使用して、やはり Segmentation fault で落ちる

LSTM の出力次元をいじるとどうなるか

  • LSTM の出力次元を 10 に変えてみた → 動いた!!!
  • LSTM の出力次元を 50 に変えてみた → 動いた!!!
  • LSTM の出力次元を 51 に変えてみた → 動かない!!! (Segmentation fault)
  • LSTM の出力次元を 60 に変えてみた → 動かない!!! (Segmentation fault)
  • 50 と 51 の間に謎の壁がある

keras lstm segmentation fault でググる

  • いろいろ出てくるが、全部 model.fit() 時の Segmentation fault (core dumped) エラー
  • 今回は LSTM 宣言しただけで起きてるので、参考になるものがなかった

解決方法

  • ふと、「これは jupyter の問題だったりするんじゃないか?」と思って調べたところ

  • ふと、「anaconda の最新版のバグなんじゃないか」と思って

    • anaconda3-5.0.1 (当時最新版)から anaconda3-4.4.0 に変更
    • jupyter を再起動し、コードを動かすと………動いた……
  • 結論、 anaconda3-5.0.1 でのバグっぽい?

  • これ以上調べている時間がなかったので、今回はここまでで原因調査を終了

  • 解決して良かったが、気持ち悪さが残るので時間があるときに調査してみよう

0
3
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
0
3