[ディープ・アプリケーション】 ・ディープラーニングの主流ハードウェアの速度比較(CPU、GPU、TPU)
ディープラーニングの主流ハードウェアの速度比較(CPU、GPU、TPU)
<ブロッククオート個人ホームページ-> http://www.yansongsong.cn
Xiao Songさんをフォローするのは歓迎です。 最小限のAI ディープラーニングを学ぶためにあなたを連れて行く:。
ディープラーニングをベースとした理論的な学習やアプリケーションの開発手法が共有され、ディープラーニングの辛口コンテンツもよく紹介しますし、ディープラーニングの学習や応用でどんな問題があるのか、トップでコミュニケーションすることも可能です。
から CSDNブログエキスパート & 志水ディープラーニングコラムニスト 歌(@song)はどうですか?
関連する読み物
[Dev Tips] - PyTorchのGPUアクセラレーションの使い方(CPUとGPUのデータの相互変換)。
[Dev Tips]-TensorFlow&Kerasについて GPU
CNNに基づくCifar10データセットの分類を実装し、この同じコードを異なる主流の深層学習でテストし、学習速度に関する比較データを得ました。
ディープラーニングの主流ハードウェアの速度比較
(Colab TPU) 速度 382s/epoch
(i5 8250u) 速度320s/epoch
(i7 9700k) 速度 36s/epoch
(GPU MX150) 速度 36s/epoch
(Colab GPU) 速度 16s/epoch
(GPU GTX 1060) 速度 9s/epoch
(GPU GTX1080ti) 速度 4s/epoch
比較すると、エントリークラスのグラフィックカード(GPU MX150)は通常の比較対象のノートパソコン(i5 8250u)のCPUと比較して約8倍、高性能グラフィックカード(GPU GTX1080ti)は約80倍となり、複数のGPUを使用すればより速くなるので、頻繁にトレーニングを行う場合はGPUを推奨しています。
また、以下のコードをご自分のパソコンで実行して、速度を比較することも歓迎します。私のコンピュータはCPUが320s/epochです。
コードセクション
from tensorflow import keras
from keras.datasets import cifar10
import numpy as np
batch_size = 100
num_classes = 10
epochs = 10
# Data loading
(x_train, train_labels), (x_test, test_labels) = cifar10.load_data()
print(x_train.shape)
train_images = x_train.reshape([-1,32,32,3]) / 255.0
test_images = x_test.reshape([-1,32,32,3]) / 255.0
model = keras.Sequential([
#(-1,32,32,3)->(-1,32,32,16)
keras.layers.Conv2D(input_shape=(32, 32, 3),filters=32,kernel_size=3,strides=1,padding='same'), # Padding method),
#(-1,32,32,32)->(-1,32,32,32)
keras.layers.Conv2D(filters=32,kernel_size=3,strides=1,padding='same'), # Padding method),
#(-1,32,32,32)->(-1,16,16,32)
keras.layers.MaxPool2D(pool_size=2,strides=2,padding='same'),
#(-1,16,16,32)->(-1,16,16,64)
keras.layers.Conv2D(filters=64,kernel_size=3,strides=1,padding='same'), # Padding method),
#(-1,16,16,64)->(-1,16,16,64)
keras.layers.Conv2D(filters=64,kernel_size=3,strides=1,padding='same'), # Padding method),
#(-1,16,16,64)->(-1,8,8,64)
keras.layers.MaxPool2D(pool_size=2,strides=2,padding='same'),
#(-1,8,8,64)->(-1,8*8*128)
keras.layers.Conv2D(filters=128,kernel_size=3,strides=1,padding='same'), # Padding method),
#(-1,8,8,128)->(-1,8*8*128)
keras.layers.Conv2D(filters=128,kernel_size=3,strides=1,padding='same'), # Padding method),
#(-1,8,8,128)->(-1,8*8*128)
keras.layers.Flatten(),
#(-1,8*8*128)->(-1,256)
keras.layers.Dropout(0.3),
keras.layers.Dense(128, activation="relu"),
#(-1,256)->(-1,10)
keras.layers.Dense(10, activation="softmax")
])
print(model.summary())
model.compile(optimizer="adam",
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, batch_size = batch_size, epochs=epochs,validation_data=[test_images[:1000],test_labels[:1000]])
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(np.argmax(model.predict(test_images[:20]),1),test_labels[:20])
出力結果(GPU gtx 1080 ti)
python demo.py
Using TensorFlow backend.
(50000, 32, 32, 3)
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 32, 32, 32) 896
_________________________________________________________________
conv2d_1 (Conv2D) (None, 32, 32, 32) 9248
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 16, 16, 32) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 16, 16, 64) 18496
_________________________________________________________________
conv2d_3 (Conv2D) (None, 16, 16, 64) 36928
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 8, 8, 64) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 8, 8, 128) 73856
_________________________________________________________________
conv2d_5 (Conv2D) (None, 8, 8, 128) 147584
_________________________________________________________________
flatten (Flatten) (None, 8192) 0
_________________________________________________________________
dropout (Dropout) (None, 8192) 0
_________________________________________________________________
dense (Dense) (None, 128) 1048704
_________________________________________________________________
dense_1 (Dense) (None, 10) 1290
=================================================================
Total params: 1,337,002
Trainable params: 1,337,002
Non-trainable params: 0
_________________________________________________________________
Train on 50,000 samples, validate on 1000 samples
Train on 50,000 samples, validate on 1000 samples
Epoch 1/10
2019-03-15 17:07:34.477745: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2019-03-15 17:07:34.552699: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:964] successful NUMA node read from SysFS had negative value (-
関連
-
ターゲット検出ベースモジュール(iou/giou/ciou/diou)のIoU概要
-
undefinedGoogLeNet 論文の翻訳 - 英語と中国語で書かれています。
-
ValueError:入力配列を形状 (450,600,3) から形状 (64,64,3) にブロードキャストできませんでした。
-
深層学習トラッキングアルゴリズム概要
-
PackagesNotFoundError: 次のパッケージは、現在のチャンネルから利用できません ソリューション
-
U-netのソースコード解説(Keras編)
-
pytorchはエラーを報告します。ValueError: num_samples は正の整数値であるべきですが、num_samples=0 となりました。
-
Tensorflow-gpu2.0.0インストールとtensorflow-gpuインストール成功のテストプログラム。
-
TensorFlow実行時エラー、AttributeError: モジュール 'pandas' には 'computation' という属性がない。
-
AttributeError: モジュール 'pandas' には 'core' という属性がありません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ResNetの紹介
-
py-faster-rcnn/lib の make でエラー: コマンドラインオプション '-Wdate-time' が認識されない
-
[Tensorflow-Error】CUDA_ERROR_OUT_OF_MEMORY:メモリが不足しています。
-
tensorflowをインポートしています。ImportError: libcublas.so.9.0: cannot open shared object file: No such file or director
-
Tensorflowのメタフィジカルエラーです。終了コード -1073741819 (0xC0000005)
-
カーネルが死んだようです」の解決法。自動的に再起動します" の解決方法
-
TypeError: 'module' object is not callable solution to [Keras] call "merge".
-
ロジスティック回帰は2分法モデル
-
tensorflow experience code error Adding visible gpu devices: 0 , モジュール 'tensorflow' には 'Session' という属性がありません。
-
tensorflowエラーノート:PyCharmとAttributeErrorの下で様々なモジュールのインポートの問題:モジュール 'pandas.core.computation' は属性を持っていません。