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

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

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

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

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

解決済

1回答

3546閲覧

ColabでGPUが使えていないように思えます。

omiteratail

総合スコア19

Keras

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

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

0クリップ

投稿2019/04/20 14:35

前提・実現したいこと

Colab でGPUを使ってLSTMモデルを学習させたいです。
(ライブラリはKerasをTensorflowバックエンドで使っています。)

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

ColabのGPUの実行時間がローカル(Macbook Pro, CPU: Core i5)よりも長いため、
うまくColabのGPUが作動していないのではないかと思い色々と試したのですが、
解決策が見つからないため、質問させていただきました。

下がローカルのMacbookのJupyter notebookにてCPU Core i5で動かした際の実行結果です。

CPU

1Train on 60000 samples, validate on 10000 samples 2Epoch 1/3 360000/60000 [==============================] - 148s 2ms/step 4Epoch 2/3 560000/60000 [==============================] - 151s 3ms/step 6Epoch 3/3 760000/60000 [==============================] - 160s 3ms/step

下がColabにてGPUで動かした際の実行結果です。

GPU

1Train on 60000 samples, validate on 10000 samples 2Epoch 1/3 360000/60000 [==============================] - 164s 3ms/step 4Epoch 2/3 560000/60000 [==============================] - 162s 3ms/step 6Epoch 3/3 760000/60000 [==============================] - 162s 3ms/step

ColabのGPUで動かした方が時間がかかるというあり得ない状況になってしまっています。
ちなみに、ColabのCPUで動かした実行結果が以下です。

CPU

1WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version. 2Instructions for updating: 3Use tf.cast instead. 4Train on 60000 samples, validate on 10000 samples 5Epoch 1/3 660000/60000 [==============================] - 218s 4ms/step 7Epoch 2/3 860000/60000 [==============================] - 214s 4ms/step 9Epoch 3/3 1060000/60000 [==============================] - 215s 4ms/step

該当のソースコード

MNISTをLSTMモデルにて行なっており、
ひねりなどは全くありません。

Python

1###Import library 2from keras.models import Sequential 3from keras.layers import Dense, Dropout, LSTM 4from keras.optimizers import Adam 5from keras.datasets import mnist 6 7###Load mnist 8(x_train, y_train), (x_test, y_test) = mnist.load_data() 9 10###Define and compile the model 11model = Sequential() 12model.add(LSTM(128, input_shape=x_train.shape[1:], activation='relu', return_sequences=True)) 13model.add(Dropout(0.2)) 14model.add(LSTM(128, activation='relu')) 15model.add(Dropout(0.2)) 16model.add(Dense(32, activation='relu')) 17model.add(Dropout(0.2)) 18model.add(Dense(10, activation='softmax')) 19 20model.compile(optimizer=Adam(lr=1e-3, decay=1e-5), 21 loss='sparse_categorical_crossentropy', 22 metrics=['acc']) 23 24###Regularize data 25x_train =x_train/ 255.0 26x_test =x_test / 255.0 27 28###Train the model 29history = model.fit(x_train,y_train, epochs=3, validation_data=(x_test, y_test))

試したこと

ColabにてGPUを選択し保存を押したのち、
上記コードを実行する前に

Python

1import torch 2torch.cuda.get_device_name(0) 3#Return: 'Tesla T4' 4 5import tensorflow as tf 6tf.test.gpu_device_name() 7#Return: '/device:GPU:0'

を実行し、それぞれコメントアウトの結果が得られました。
Tesla T4を使っており、しっかりGPUを使っていることがわかります。
それにもかかわらず、実行時間が遅すぎます。
このコードのみならず、GRUモデルを用いた天気予報のコードにてもローカルのCPUよりもColabのGPUが遅いという現象が起きております。
このコードではタスクが軽すぎるやそもそもKerasでColabのGPUは使えないなどの理由で
ColabのGPUとローカルのCPUの実行時間に差ががでないのでしょうか。(というより、GPUの方が遅い。)
その場合、具体的にどのようなコードだとColabのGPUの速度を体感できるでしょうか。

お手数をおかけしますが、解決策や提言などお待ちしております。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

おそらく、Trainable Parameterの数が小さすぎた(200,000程度)ため、差異が出なかったものと思います。
もともとのモデルを以下のように変えました。(2,000,000程度)

Python

1model = Sequential() 2model.add(LSTM(512, input_shape=x_train.shape[1:], activation='relu', 3return_sequences=True)) 4model.add(Dropout(0.2)) 5model.add(LSTM(256, activation='relu',return_sequences=True)) 6model.add(Dropout(0.2)) 7model.add(LSTM(128, activation='relu')) 8model.add(Dropout(0.2)) 9model.add(Dense(128, activation='relu')) 10model.add(Dense(64, activation='relu')) 11model.add(Dense(32, activation='relu')) 12model.add(Dropout(0.2)) 13model.add(Dense(10, activation='softmax'))

すると、ローカルのCPUとColabのGPUでは結果が以下のようになり、差異が出ました。
GPUが正常に作動しているものと思います。
何か同じような疑問に至った方のためにお役に立てればと思います。
ありがとうございました。

CPU

1Train on 60000 samples, validate on 10000 samples 2Epoch 1/3 360000/60000 [==============================] - 728s 12ms/step 4Epoch 2/3 560000/60000 [==============================] - 713s 12ms/step 6Epoch 3/3 760000/60000 [==============================] - 702s 12ms/step

GPU

1Train on 60000 samples, validate on 10000 samples 2Epoch 1/3 360000/60000 [==============================] - 272s 5ms/step 4Epoch 2/3 560000/60000 [==============================] - 268s 4ms/step 6Epoch 3/3 760000/60000 [==============================] - 268s 4ms/step

投稿2019/04/21 00:06

omiteratail

総合スコア19

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問