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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2242閲覧

python 実行環境の違いによるInternalErrorの解決方法

harug

総合スコア28

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/06/20 09:35

前提

家庭用PC(ノートパソコン)と大学PC(デスクトップ)での実行環境が違うため、jupyter lab上で同じプログラムを実行しても家庭用PCの方ではエラーが出ないのですが、大学PCの方ではエラーが出てしまうという問題が生じています。
なお、大学PCはGPUサーバを使って実行しています。

実現したいこと

  • 家庭用PCと同じように、大学PCでもプログラムを正常に実行できるようにする。

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

問題の、大学PCでプログラムを実行した際に吐かれたエラーです。

--------------------------------------------------------------------------- InternalError Traceback (most recent call last) <ipython-input-28-bf3054b856d5> in <module> 17 steps_per_epoch = 100, ---> 18 validation_data=([te_pairs[:, 0], te_pairs[:, 1]], te_y)) 19 /usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, max_queue_size, workers, use_multiprocessing, **kwargs) 1637 initial_epoch=initial_epoch, 1638 steps_per_epoch=steps_per_epoch, -> 1639 validation_steps=validation_steps) 1640 1641 def evaluate(self, /usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/training_arrays.py in fit_loop(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps) 152 callbacks.on_batch_begin(step_index, batch_logs) 153 try: --> 154 outs = f(ins) 155 except errors.OutOfRangeError: 156 logging.warning('Your dataset iterator ran out of data; ' /usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/backend.py in __call__(self, inputs) 2984 2985 fetched = self._callable_fn(*array_vals, -> 2986 run_metadata=self.run_metadata) 2987 self._call_fetch_callbacks(fetched[-len(self._fetches):]) 2988 return fetched[:len(self.outputs)] /usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in __call__(self, *args, **kwargs) 1437 ret = tf_session.TF_SessionRunCallable( 1438 self._session._session, self._handle, args, status, -> 1439 run_metadata_ptr) 1440 if run_metadata: 1441 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) /usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py in __exit__(self, type_arg, value_arg, traceback_arg) 526 None, None, 527 compat.as_text(c_api.TF_Message(self.status.status)), --> 528 c_api.TF_GetCode(self.status.status)) 529 # Delete the underlying status object from memory otherwise it stays alive 530 # as there is a reference to status from this from the traceback due to InternalError: Dst tensor is not initialized. [[{{node _arg_input_2_0_1/_147}} = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, tensor_name="edge_910__arg_input_2_0_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"]()]] [[{{node loss_2/add_2/_169}} = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_926_loss_2/add_2", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]

ちなみにGPU:1の方を使用して、このようなエラーが発生しました。

GPUサーバのメモリ不足だと思うのですが、7952MiBのGPUサーバを使用しているので,このようにメモリ不足になることは考えにくいです…(ましてやこれよりもスペックの低い家庭用PCでは実行できたので)
他にも、家庭用PCと大学PCのライブラリのバージョンが違うことが挙げられますが具体的に何をどのようにすればよいのか分かりません、何か解決方法やご指摘等ございましたら教えていただきたいです。

該当のソースコード

python

1tr_y = tf.cast(tr_y, dtype='float32') 2te_y = tf.cast(te_y, dtype='float32') 3 4rms = RMSprop() 5model.compile(loss=contrastive_loss, optimizer=rms, metrics=[accuracy]) 6 7H = model.fit([tr_pairs[:, 0], tr_pairs[:, 1]], tr_y, 8 epochs=20, 9 verbose=1, 10 steps_per_epoch = 100, 11 validation_data=([te_pairs[:, 0], te_pairs[:, 1]], te_y))

補足情報(FW/ツールのバージョンなど)

家庭用PC

OS : Windows10(64bit)
CPU : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz 1.80 GHz
RAM : 8GB
グラフィックボード : Intel(R) UHD Graphics 620

Python : 3.9.12
TensorFlow-gpu : 2.6.0
Keras : 2.6.0
こちらはGPU環境はないですが、TensorFlow-gpuは入れてあるといった状態です。

GPUサーバPC

OS : Ubuntu 16.04.5 LTS
CPU : Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
RAM : 32GiB
グラフィックボード : GeForce RTX 2080 x2

Python : 3.5.2
TensorFlow : 1.13.0-rc0
CUDA : 10.0.130
cuDNN : 7.4.2
Keras : 2.3.1

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

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

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

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

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

harug

2022/06/20 11:54

お返事ありがとうございます。 現在までの進展はありませんが、この問題はOSのバージョンを上げれば解決できる可能性があるということでしょうか。 また、ライブラリのバージョンが低いことも原因としてあるのでしょうか。
jbpb0

2022/06/20 13:48

> 7952MiBのGPUサーバを使用しているので,このようにメモリ不足になることは考えにくい https://teratail.com/questions/2vj6fy7grdqc6c にも書きましたが、nvidia-smiで、 ・jupyter起動前 ・jupyterでpython実行中 ・jupyterのRestart the Kernelボタンをクリック後 ・jupyterのshutdownボタンをクリック後 のそれぞれの状態でのGPUのメモリーの使用量を確認して、余裕があるかを確認してください https://note.nkmk.me/nvidia-smi-monitoring-gpu/
退会済みユーザー

退会済みユーザー

2022/06/20 21:31

> この問題はOSのバージョンを上げれば解決できる可能性があるということでしょうか。また、ライブラリのバージョンが低いことも原因としてあるのでしょうか。 1. Ubuntu16のユーザーはUbuntu18のユーザーより少ない(体感)なので、OSに起因する相性問題がある(しかもOSが古いことを理由にバグがほったらかしになっている可能性がある)のと、 2. TFがすでに2.xに移行しているのに1.13を使っているのであれば、これもTFのバージョンに起因する相性問題がある(しかも新しいバージョンではすでにバグが潰されている可能性がある) ということを危惧しています。先のコメントにも書きましたが、TF1.1xはまだ発展途上でTF1.3かTF1.5くらいから急激に安定性が上がったような気がします。 jbpb0さんのコメントにあるように、多分メモリリーク関連の問題と思います。
harug

2022/06/21 01:53

jbpb0さんのご指摘のとおり、各場合に対してメモリの使用状況を確認しました。 ・jupyter lab起動前(GPUサーバ上) 0MiB / 7952MiB ・jupyter labでpython実行中 7622MiB / 7952MiB ・jupyter labのRestart the Kernelボタンをクリック後 0MiB / 7952MiB ・jupyterのshutdownボタンをクリック後(GPUサーバ上) 0MiB / 7952MiB 1つ目と4つ目はコマンドプロンプトで実行した結果になります。 python 実行中以外はメモリを使用していないようでした。。。
jbpb0

2022/07/29 07:00 編集

> ・jupyter labでpython実行中 7622MiB / 7952MiB そんなにカツカツだと、いつ落ちてもおかしくありません 瞬間的にメモリー使用量が増えた時に、残り容量が無くなって落ちます 経験的には、実行中の普段は最低でも0.5GB以上空いてないと、よく落ちます > 大学PCはGPUサーバを使って実行しています。 GPUは、メモリー不足になると確実に落ちます > これよりもスペックの低い家庭用PCでは実行できた CPUだと、メモリー不足になっても、ある程度はストレージ(ハードディスクやSSD)をメモリー代わりに使ってくれるので、(遅くなるけど)落ちなくて実行できます
guest

回答1

0

ベストアンサー

事例)
Dst tensor is not initializedというキーワードで探すと、同じくJupyter notebookで古いTensorflowを走らせてGPUのメモリを食いつぶされて困っている、という事例に行きつきます。

原因)
恐らく、Jupyter notebookのバックグラウンド処理でメモリを食いつぶされているのでは?とのこと。

対策1)
Jupyter notebookを起動する前に以下のコマンドを実行何とかなるみたいです。
export CUDA_VISIBLE_DEVICES=1

対策2)
メモリを明示的に仕切ると良いみたいです。
config = tf.ConfigProto(gpu_options= tf.GPUOptions(allow_growth=True))
※ tf.ConfigProtoの設定はTFのバージョンが変わると設定がコロコロ変わったと思うので、特定のバージョンのTFに沿ってしっかり調べた方がいいかもしれません。

投稿2022/06/21 21:26

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問