训练keras模型时,GPU性能应达到多少?

时间:2020-05-05 09:28:51

标签: python tensorflow keras gpu

我在mnist数据集上使用RTX 2080 ti。我已经安装了tensrflow-gpu。这比在其他环境中仅在CPU上运行快了12倍。

我正在训练时检查任务管理器的CPU和GPU性能。 这是训练期间的表现:

GPU环境: CPU = 20%GPU = 10%训练时间= 24秒

CPU环境: CPU = 100%GPU = 10%训练时间= 500秒

我想知道10%运行的GPU是否正常?可以手动提高性能还是降低性能?

1 个答案:

答案 0 :(得分:0)

这取决于您的应用程序。 GPU利用率低并不罕见。尝试增加批量大小以提高利用率。

可以这么说,MNIST规模的网络很小,很难为它们实现高GPU(或CPU)效率,我认为10%的利用率和CPU利用率在您的应用程序中并不罕见。批处理数量更大时,您将获得更高的计算效率,这意味着您每秒可以处理更多的示例,但统计效率也将降低,这意味着您需要总共处理更多的示例才能达到目标精度。所以这是一个权衡。对于小人物模型,统计效率在100之后会很快下降,因此可能不值得尝试增加用于训练的批处理大小。为了进行推断,您应该使用最大的批处理大小。

您还可以设置要在程序中使用的设备类型。您可以强制程序仅使用GPU并验证GPU使用率。

例如,在程序中仅将GPU用于model.fit

%tensorflow_version 2.x
print(tf.__version__)
# MLP for Pima Indians Dataset saved to single file
import numpy as np
from numpy import loadtxt
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import model_from_json

# load pima indians dataset
dataset = np.loadtxt("/content/pima-indians-diabetes.csv", delimiter=",")

# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]

# define model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# Model Summary
model.summary()

# Fit the model
with tf.device("/device:GPU:0"):
  model.fit(X, Y, epochs=150, batch_size=10, verbose=0)

# evaluate the model
scores = model.evaluate(X, Y, verbose=0)
print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))

输出-

2.2.0
Model: "sequential_6"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_18 (Dense)             (None, 12)                108       
_________________________________________________________________
dense_19 (Dense)             (None, 8)                 104       
_________________________________________________________________
dense_20 (Dense)             (None, 1)                 9         
=================================================================
Total params: 221
Trainable params: 221
Non-trainable params: 0
_________________________________________________________________
accuracy: 78.39%

希望这能回答您的问题。学习愉快。

相关问题