首页 > 解决方案 > cudNN lstm的GPU内存使用和加速

问题描述

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

昏暗(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 内存的要求更高。我在这里错过了什么?

标签: rkerasgpulstmcudnn

解决方案


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

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

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

我希望这有帮助。


推荐阅读