簡體   English   中英

GPU僅使用1-5%Tensorflow-gpu和Keras

[英]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%利用率)。 如果沒有發生這種情況,代碼的其他部分在每個批處理過程中需要很長時間。 很難說它是什么(特別是因為你沒有添加任何代碼),但你可以嘗試一些事情:

輸入數據

確保網絡的輸入數據始終可用。 從磁盤讀取圖像需要很長時間,因此請使用多個workersmultiprocessing接口:

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使用率。 然后再次打開軟位置。

您可以嘗試一些方向。

  1. 仔細檢查輸入管道,確保它不是性能的瓶頸。
  2. 增加批號或圖層寬度,以確保GPU獲得足夠的數據。
  3. 最有效的方法是轉儲配置文件json來查看。

我的經驗是在大多數時候,低利用率是因為缺乏GPU消耗的數據。

一些有用的鏈接* https://www.tensorflow.org/guide/performance/datasets * https://towardsdatascience.com/howto-profile-tensorflow-1a49fb18073d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM