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

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

ただいまの
回答率

90.47%

  • Python

    8565questions

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

  • Ubuntu

    1480questions

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

  • TensorFlow

    708questions

  • CPU

    37questions

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

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 650

 前提・実現したいこと

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()
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/21 19:43

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

    キャンセル

check解決した方法

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/21 13: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を計算すると、
    フリーズしてしまうようです。

    キャンセル

  • 2018/05/21 14:25

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

    キャンセル

  • 2018/05/21 19:44

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

    キャンセル

  • 2018/05/21 19:56

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

    キャンセル

  • 2018/05/22 23:15

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

    キャンセル

関連した質問

同じタグがついた質問を見る

  • Python

    8565questions

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

  • Ubuntu

    1480questions

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

  • TensorFlow

    708questions

  • CPU

    37questions