【问题标题】:GPU memory usage of cudNN lstm and accelerationcudNN lstm的GPU内存使用和加速
【发布时间】:2019-10-27 03:50:03
【问题描述】:

我有几个关于有状态的 cuDNN LSTM 模型的问题,我正在尝试使用 keras 库来适应 R。我安装了 tensorflow-gpu,它似乎运行成功。 我想知道的第一件事是模型训练的速度,使用 cuDNN lstm 而不是普通的 LSTM,它似乎只增加了 1.3 倍。我读过其他案例,与普通 lstm 相比,使用 cudnn lstm 时,人们得到的模型训练速度快 10 倍甚至 15 倍。我将在下面发布一些代码。 此外,我想知道 GPU 的内存使用百分比。运行代码时,它似乎只占用了大约 8% 的 GPU 内存,这似乎有点低。这是否与缺乏提高的速度有关。

dim(x.train) = (208, 1, 4) 昏暗(y.train)=(208,1)

对于验证集,除了 tat 208 被替换为 42 之外,它是相同的。

     batch_size = 1

     model <- keras_model_sequential() 

     model %>% layer_cudnn_lstm(units = 1, batch_input_shape = c(1,1,4), 
                           stateful = TRUE, return_sequences = FALSE) %>% 
          layer_dropout(rate = dropout) %>% 
          layer_dense(units = 0.01)


    model %>% compile(
     loss = 'mean_squared_error',
      optimizer = optimizer_adam(lr= 0.01, decay = 1e-8),  
      metrics = c('mean_squared_error')
    )


    Epochs <- 500 

     hist_temp <-  model %>% fit(x.train, y.train, epochs=1,      batch_size=batch_size, verbose=1, shuffle=FALSE,
                             validation_data = list(x.train_val, y.test))

    model %>% reset_states()

我希望它更快,对 GPU 内存的要求更高。我在这里错过了什么?

【问题讨论】:

    标签: r keras gpu lstm cudnn


    【解决方案1】:

    这可能有多种原因,例如:

    1. 您在读取数据时造成了瓶颈。您应该检查 CPU、内存和磁盘使用情况。您也可以增加批量大小以增加 GPU 使用率,但您的样本量相当小。此外,批量大小为 1 并不常见;)

    2.您的网络非常小,因此您无法从 GPU 加速中获利。您可以尝试增加网络的大小以测试 GPU 使用率是否增加。

    我希望这会有所帮助。

    【讨论】:

    • 感谢您的意见,有一些问题 1. 将 batch_size 从 1 增加到 2 使 gpu 使用率从 8% 下降到 4%(大致),并且训练 lstm 的时间减少了一半好吧。 2.增加lstm层的数量增加了时间消耗和模型参数的数量,但完全不影响gpu的使用,这看起来很奇怪。如何充分利用 GPU?对于一般的 lstm 网络来说,样本量可能太小了。
    • 这实际上可能是。您可以,只是为了测试更大的样本量,人为地增强您的数据集(例如多次复制和粘贴样本),以测试 gpu 使用率是否随着更大的样本量而增加。
    • 至于batch_size,我猜是因为你的数据集很小,如果你加倍batch_size,它会导致gpu空闲更多,因为cpu没有那么忙。您能否提供 nvidia-smi 和 top 的屏幕截图(或任务管理器,如果您使用 windows),以查看您的机器不同组件在训练时的使用情况?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2016-05-19
    • 1970-01-01
    相关资源
    最近更新 更多