質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

977閲覧

jupyter notebookでのtensorflowのimportに失敗する

aoies

総合スコア331

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/22 15:49

編集2020/10/23 03:33

前提・実現したいこと

多段階ポートフォワードした先のjupyter notebookでtensorflowをimportすると強制終了してしまうため、改善したい。

sshした先の計算コンピュータでpython、tensorflowの開発環境を作っています。
より具体的にはログインノードにsshしてそこからgrid engineを使って管理された計算ノードにqloginするという形です(踏み台経由の多段階ポートフォワード)。計算ノードから2段階ポートフォワードを踏んで計算ノード上のjupyter notebookをローカルのブラウザから操作したいと考えています。
ログインノードではtensorflowをimportしようとするとIllegal instruction (core dumped)になるのを確認しています。これは調べるとavxの有無が原因のように見えました。一方avxを持つ計算ノード上では確かにコマンドラインからpythonを実行するとき、tensorflowを正常にimportできました。
しかし、2段階ポートフォワードでjupyter notebookを計算ノードにて開き、tensorflowをimportしようとすると、ログインノードにおいてと同様にプロセスが終了されてしまいます。

ポートフォワード、jupyter notebookなどについても正直あまり詳しく理解してはいないのですが、これはどのような原因で起きているのと考えられるのでしょうか?

多分少なくともtensorflowのバージョンを下げれば対処できるとは思いますが可能ならこの方法は使いたくないです。

発生している問題・エラーメッセージ

jupyter notebookにてimport tensorflowできない。

エラーメッセージ The kernel appears to have died. It will restart automatically.

###実行しているコマンド
(server1=ログインノード、server2=計算ノードとします)
下記のコマンドを順に実行しています。

bash

1localPC:~$ ssh server1 -L 9900:localhost:9900 2返答 3Linux xxx 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3 (2019-02-02) x86_64 4 5The programs included with the Debian GNU/Linux system are free software; 6the exact distribution terms for each program are described in the 7individual files in /usr/share/doc/*/copyright. 8 9Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent 10permitted by applicable law. 11Last login: Fri Oct 23 09:54:14 2020 from 000.000.00.00

bash

1server1:~$ qlogin -q gpu.q 2返答 3Your job 43383 ("QLOGIN") has been submitted 4waiting for interactive job to be scheduled ... 5Your interactive job 43383 has been successfully scheduled. 6Establishing builtin session to host server2.aaa.com ...

bash

1server2:~$ cd projectA # (pipenvのプロジェクトフォルダに移動) 2server2:~/projectA$ pipenv shell 3返答 4Launching subshell in virtual environment... 5 . /path/to/$HOME/.venv/porjectA-IwBB_zea/bin/activate 6server2:~/projectA$ . /path/to/$HOME/.venv/projectA-IwBB_zea/bin/activate

bash

1(projectA)server2:~/projectA$ nohup jupyter notebook --no-browser --port 9900 > jupyter.log & 2返答 3[1] 17939 4nohup: ignoring input and redirecting stderr to stdout

bash

1(projectA)server2:~/projectA$ ssh server1 -R 9900:localhost:9900 -N -f 2返答 3Enter passphrase for key '/path/to/$HOME/.ssh/server1': 4#(パスを入力)

ブラウザでhttp://localhost:9900/にアクセス。

python

1import socket 2host = socket.gethostname() 3print(host) 4返答 5server2

となるためserver2からちゃんと実行されているように見える。
import tensorflowを実行しようとすると失敗する。

error

1Kernel Restarting 2The kernel appears to have died. It will restart automatically

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toast-uz

2020/10/22 23:39 編集

ソースコード、とされているものは、1行ずつ実行したものでしょうか? どのマシンにシェルが切り替わった状態なのか、を見たいので、途中の反応も含めて、全て記載できますでしょうか?(個人情報や秘密情報はマスクしていただいてかまいません)
bsdfan

2020/10/23 01:58 編集

ポートフォワードの部分は、特に問題ないように見えます。 pipenvをお使いのようですが、jupyterではkernelの切り替えで複数の環境を使い分けることができます。server2上に複数のkernelが入っていて、想定している環境と違うものを使っていないか確認してみてください。 import sys print(sys.executable)
aoies

2020/10/23 03:22

ありがとうございます。print(sys.executable)をjupyter notebookと外のpythonのコマンドラインで確認しましたが2つとも同じものが出て、またjupyterのkernelは1つしか出てこなかったのでkernelは問題ないように見えました。
toast-uz

2020/10/23 09:44

import tensorflowを外のpythonのコマンドラインで実行すると情報が得られるかもです。 https://analytics-note.xyz/programming/tensorflow-omp-error-libiomp5/ 「Jupyter Kernelの突然死は、同じコードをコンソールで実行するとWarningやErrorを見れる場合があるということも覚えておくと便利です。」
aoies

2020/10/23 09:50

それがJupyterの外のコマンドラインで実行すると正常にimportできてるみたいなんですよね...
guest

回答1

0

自己解決

色々試したところ勘違いでそもそもコマンドラインでtensorflowをimportできているときもtensorflow関係の関数を使うと落ちてしまうみたいなので、ポートフォワードやjupyterはあまり関係なく、tensorflow自体の問題のようでした。とりあえず質問は閉鎖します。

投稿2020/10/30 01:45

aoies

総合スコア331

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問