前提・実現したいこと
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の速度を体感できるでしょうか。
お手数をおかけしますが、解決策や提言などお待ちしております。
よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。