[英]GPU only being used 1-5% Tensorflow-gpu and Keras
我剛為gpu安裝了tensorflow,並且正在為我的CNN使用keras。 在訓練期間,我的GPU僅使用了大約5%,但在訓練期間正在使用6gb中的5個。 有時它會出現故障,在控制台中打印0.000000e + 00,然后gpu達到100%,但幾秒后訓練速度降低到5%。 我的GPU是Zotac gtx 1060 mini,我使用的是Ryzen 5 1600x。
Epoch 1/25
121/3860 [..............................] - ETA: 31:42 - loss: 3.0575 - acc: 0.0877 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00Epoch 2/25
121/3860 [..............................] - ETA: 29:48 - loss: 3.0005 - acc: 0.0994 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00Epoch 3/25
36/3860 [..............................] - ETA: 24:47 - loss: 2.9863 - acc: 0.1024
通常,我們希望瓶頸在GPU上(因此100%利用率)。 如果沒有發生這種情況,代碼的其他部分在每個批處理過程中需要很長時間。 很難說它是什么(特別是因為你沒有添加任何代碼),但你可以嘗試一些事情:
輸入數據
確保網絡的輸入數據始終可用。 從磁盤讀取圖像需要很長時間,因此請使用多個workers
和multiprocessing
接口:
model.fit(..., use_multiprocessing=True, workers=8)
2.強制模型進入GPU
這幾乎不是問題所在,因為/gpu:0
是默認設備,但是確保在目標設備中執行模型是值得的:
with tf.device('/gpu:0'):
x = Input(...)
y = Conv2D(..)
model = Model(x, y)
2.檢查型號的尺寸
如果批量大且允許軟放置,則網絡的一部分(不適合GPU的內存)可能會放在CPU上。 這大大減緩了這個過程。
如果啟用了軟放置,請嘗試禁用並檢查是否拋出了內存錯誤:
# make sure soft-placement is off
tf_config = tf.ConfigProto(allow_soft_placement=False)
tf_config.gpu_options.allow_growth = True
s = tf.Session(config=tf_config)
K.set_session(s)
with tf.device(...):
...
model.fit(...)
如果是這種情況,請嘗試減小批量大小,直到它適合並為您提供良好的GPU使用率。 然后再次打開軟位置。
您可以嘗試一些方向。
我的經驗是在大多數時候,低利用率是因為缺乏GPU消耗的數據。
一些有用的鏈接* https://www.tensorflow.org/guide/performance/datasets * https://towardsdatascience.com/howto-profile-tensorflow-1a49fb18073d
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.