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

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

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

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

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

Q&A

解決済

3回答

8776閲覧

Tensorflowを使ってGPUで学習する際に、フリーズする問題

6123_sadaharu-.

総合スコア6

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

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

0グッド

0クリップ

投稿2018/05/20 11:11

編集2018/05/21 04:54

前提・実現したいこと

tensorflowを使ってGPUで学習をしようとしています。
同じプログラムをCPUで実行すると問題なく実行できますが、
GPUを使うと以下のsess.run(train)でフリーズしてしまいます。

sess = tf.Session() sess.run(tf.global_variables_initializer()) sess.run(train, feed_dict={X: x_data, Y:y_data})

{x_data =(1000,500)、Y_data =(1000,250) }

ちなみに、ctr+Cを押しても停止できません。
nvidia-smiでGPUの使用状況を確認するとGPUはしっかり使われています。

feed_dictを使うと停止してしまうみたいなのですが、どうすれば改善できると思いますか?
ご意見よろしくお願い致します。
必要があればコードやスペックなども記述しますので、宜しくお願い致します。
以下、nvidia-smiを実行。
GPU-Util = 0%なのが気がかりです。

+-----------------------------------------------------------------------------+ | NVIDIA-SMI 384.111 Driver Version: 384.111 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX TIT... Off | 00000000:02:00.0 Off | N/A | | 22% 48C P2 67W / 250W | 11645MiB / 12205MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 7449 C python 11634MiB | +-----------------------------------------------------------------------------+

以下、上手く実行された例

# -*- coding: utf-8 -*- import tensorflow as tf import numpy as np # Create 100 phony x, y data points in NumPy, y = x * 0.1 + 0.3 x_data = np.random.rand(1000,100).astype(np.float32) y_data = x_data * 0.1 + 0.3 print(x_data) X = tf.placeholder(dtype = tf.float32, shape = [None, x_data.shape[1]]) Y = tf.placeholder(dtype = tf.float32, shape = [None, y_data.shape[1]]) # Try to find values for W and b that compute y_data = W * x_data + b # (We know that W should be 0.1 and b 0.3, but TensorFlow will # figure that out for us.) W = tf.Variable(tf.random_uniform([100,100], -1.0, 1.0)) b = tf.Variable(tf.zeros([1])) ######相違点####### y = W * X + b #y=tf.matmul(W,X)+b # Minimize the mean squared errors. loss = tf.reduce_mean(tf.square(y -Y)) optimizer = tf.train.GradientDescentOptimizer(0.5) train = optimizer.minimize(loss) # Before starting, initialize the variables. We will 'run' this first. init = tf.global_variables_initializer() # Launch the graph. sess = tf.Session() sess.run(init) #print(x_data) #print(y_data) # Fit the line. for step in range(201): #sess.run(train) sess.run(train,feed_dict={X:x_data[0:100],Y:y_data[0:100]}) if step % 20 == 0: print(step, sess.run(W), sess.run(b)) # Learns best fit is W: [0.1], b: [0.3] # Close the Session when we're done. sess.close()

以下、上手くいかずフリーズした例

# -*- coding: utf-8 -*- import tensorflow as tf import numpy as np # Create 100 phony x, y data points in NumPy, y = x * 0.1 + 0.3 x_data = np.random.rand(1000,100).astype(np.float32) y_data = x_data * 0.1 + 0.3 print(x_data) X = tf.placeholder(dtype = tf.float32, shape = [None, x_data.shape[1]]) Y = tf.placeholder(dtype = tf.float32, shape = [None, y_data.shape[1]]) # Try to find values for W and b that compute y_data = W * x_data + b # (We know that W should be 0.1 and b 0.3, but TensorFlow will # figure that out for us.) W = tf.Variable(tf.random_uniform([100,100], -1.0, 1.0)) b = tf.Variable(tf.zeros([1])) ######相違点####### #y = W * X + b y=tf.matmul(W,X)+b # Minimize the mean squared errors. loss = tf.reduce_mean(tf.square(y -Y)) optimizer = tf.train.GradientDescentOptimizer(0.5) train = optimizer.minimize(loss) # Before starting, initialize the variables. We will 'run' this first. init = tf.global_variables_initializer() # Launch the graph. sess = tf.Session() sess.run(init) #print(x_data) #print(y_data) # Fit the line. for step in range(201): #sess.run(train) sess.run(train,feed_dict={X:x_data[0:100],Y:y_data[0:100]}) if step % 20 == 0: print(step, sess.run(W), sess.run(b)) # Learns best fit is W: [0.1], b: [0.3] # Close the Session when we're done. sess.close()

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

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

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

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

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

guest

回答3

0

https://github.com/tensorflow/tensorflow/issues/1947
同じような問題が起きているみたいですが、ドライバーをアップグレードして直ったという意見が多いようです。
それでダメならマザボが原因の可能性があるようです。

投稿2018/05/21 05:14

puroko3

総合スコア185

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

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

6123_sadaharu-.

2018/05/21 10:43

ご回答ありがとうございます。 確かにURL先の問題と似ていますね。 最近ドライバーをインストールして384.111とまだ新しいので、 nvidiaにGPUと合っているか問い合わせたいと思います。 マザーボードに関しては、他人と共有マシーンですので、対応は厳しそうです。 また何か気付いた点がありましたら、宜しくお願い致します。
guest

0

自己解決

ドライバーのバーションがGPUに合ってるか確認。
ー>PATHを確認
ー>nvcc -Vで出力エラーを確認
ー>nvcc -Vが上手くいくようにpath設定
ー>改善

投稿2018/05/22 14:19

6123_sadaharu-.

総合スコア6

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

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

0

同様の事象になったことがないのでうまくいく保証はありませんが、コメントします。
デフォルトでtf.Session()を実行するとgpuの全メモリがひとつのプロセスに割り当てられるそうで、これが原因かもしれません。tf.Sessionにconfigパラメーターを設定すると割り当てを設定できるようなので試してみてはいかがでしょうか。当方も設定したことがないので、「tensorflow gpu メモリ」で検索すると例示コードが見つかると思うので確かめてください

投稿2018/05/21 03:56

R.Shigemori

総合スコア3376

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

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

6123_sadaharu-.

2018/05/21 04:07

ご回答ありがとうございます。 GPUのパラメータを設定したのですが、上手くいきませんでした。 具体的には、 tf.Session( tf.ConfigProto(gpu_options=tf.GPUOptions( allow_growth=True or per_process_gpu_emory_fraction = 0.8) ) を試しました。 またfeed_dictを用いてtf.matmulを計算すると、 フリーズしてしまうようです。
R.Shigemori

2018/05/21 05:25

そうするとpuroko3さんのいうようにドライバーの問題かもしれません。pcのログに痕跡が見つかるのであればほぼ確実です。
6123_sadaharu-.

2018/05/21 10:44

ご返答ありがとうございます。 無知で申し訳ないのですが、pcのログの痕跡などはどのようにすれば確認できるのでしょうか?
R.Shigemori

2018/05/21 10:56

win10だとイベントビューワーが管理ツールから起動できます。 原因を気にせず、アップグレードするのも「有り」かもしれません。
6123_sadaharu-.

2018/05/22 14:15

ドライバーについて調べてたら問題解決しました。 結果的に、PATHの問題でした。 nvcc -Vで上手く出力できなかったことを改善したら使えるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問