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

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

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

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

Q&A

解決済

Anaconda上のTensorflow GPU版を使うとき、処理の初期化の時間が長すぎる

raddeee
raddeee

総合スコア11

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

1回答

0グッド

0クリップ

4692閲覧

投稿2021/02/19 12:17

編集2021/02/19 12:25

TensorFlowのCPU版で問題なく動いたプログラムをGPUサポート環境のTensorFlowを動かそうとするときに、一応処理は成功するのですが初期化と思われる段階で時間がかなりかかっています。
具体的に示すと、下記のログの
I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0 で約5分、
I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll で20分弱かかっています。

ログ: https://pastebin.com/ckebAnmZ

環境構成は以下の通りです
Python 3.7
cuDNN 7.6.5
CUDA 10.1
TensorFlow 2.1.0

どうかよろしくお願いいたします。


コード: https://www.tensorflow.org/tutorials/images/classification?hl=ja

Python

1import tensorflow as tf 2 3from tensorflow.keras.models import Sequential 4from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D 5from tensorflow.keras.preprocessing.image import ImageDataGenerator 6import scipy 7 8import os 9import numpy as np 10import matplotlib.pyplot as plt 11 12_URL = 'https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip' 13path_to_zip = tf.keras.utils.get_file('cats_and_dogs.zip', origin=_URL, extract=True) 14PATH = os.path.join(os.path.dirname(path_to_zip), 'cats_and_dogs_filtered') 15 16train_dir = os.path.join(PATH, 'train') 17validation_dir = os.path.join(PATH, 'validation') 18 19train_cats_dir = os.path.join(train_dir, 'cats') # 学習用の猫画像のディレクトリ 20train_dogs_dir = os.path.join(train_dir, 'dogs') # 学習用の犬画像のディレクトリ 21validation_cats_dir = os.path.join(validation_dir, 'cats') # 検証用の猫画像のディレクトリ 22validation_dogs_dir = os.path.join(validation_dir, 'dogs') # 検証用の犬画像のディレクトリ 23 24num_cats_tr = len(os.listdir(train_cats_dir)) 25num_dogs_tr = len(os.listdir(train_dogs_dir)) 26 27num_cats_val = len(os.listdir(validation_cats_dir)) 28num_dogs_val = len(os.listdir(validation_dogs_dir)) 29 30total_train = num_cats_tr + num_dogs_tr 31total_val = num_cats_val + num_dogs_val 32 33batch_size = 128 34epochs = 15 35IMG_HEIGHT = 150 36IMG_WIDTH = 150 37 38train_image_generator = ImageDataGenerator(rescale=1./255) # 学習データのジェネレータ 39validation_image_generator = ImageDataGenerator(rescale=1./255) # 検証データのジェネレータ 40 41train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size, 42 directory=train_dir, 43 shuffle=True, 44 target_size=(IMG_HEIGHT, IMG_WIDTH), 45 class_mode='binary') 46 47val_data_gen = validation_image_generator.flow_from_directory(batch_size=batch_size, 48 directory=validation_dir, 49 target_size=(IMG_HEIGHT, IMG_WIDTH), 50 class_mode='binary') 51 52model = Sequential([ 53 Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)), 54 MaxPooling2D(), 55 Conv2D(32, 3, padding='same', activation='relu'), 56 MaxPooling2D(), 57 Conv2D(64, 3, padding='same', activation='relu'), 58 MaxPooling2D(), 59 Flatten(), 60 Dense(512, activation='relu'), 61 Dense(1, activation='sigmoid') 62]) 63 64model.compile(optimizer='adam', 65 loss='binary_crossentropy', 66 metrics=['accuracy']) 67 68model.summary() 69 70history = model.fit_generator( 71 train_data_gen, 72 steps_per_epoch=total_train // batch_size, 73 epochs=epochs, 74 validation_data=val_data_gen, 75 validation_steps=total_val // batch_size 76) 77 78acc = history.history['accuracy'] 79val_acc = history.history['val_accuracy'] 80 81loss = history.history['loss'] 82val_loss = history.history['val_loss'] 83 84epochs_range = range(epochs) 85 86plt.figure(figsize=(8, 8)) 87plt.subplot(1, 2, 1) 88plt.plot(epochs_range, acc, label='Training Accuracy') 89plt.plot(epochs_range, val_acc, label='Validation Accuracy') 90plt.legend(loc='lower right') 91plt.title('Training and Validation Accuracy') 92 93plt.subplot(1, 2, 2) 94plt.plot(epochs_range, loss, label='Training Loss') 95plt.plot(epochs_range, val_loss, label='Validation Loss') 96plt.legend(loc='upper right') 97plt.title('Training and Validation Loss') 98plt.show()

以下のような質問にはグッドを送りましょう

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

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

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

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

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

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

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

適切な質問に修正を依頼しましょう。

raddeee

2021/02/19 13:23

duplicateな質問でしたね、すみません... CUDA等のバージョンを更新してみて試してみます。

回答1

0

自己解決

TensorFlowを2.4.0
CUDAを11.0にすることで解決できました!

投稿2021/02/19 15:06

raddeee

総合スコア11

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

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

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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