cudNN lstm和加速的GPU内存使用

时间:2019-06-12 15:13:26

标签: r keras gpu lstm cudnn

我有两个问题,我想使用keras库在Statefull cuDNN LSTM模型中进行拟合。我已经安装了tensorflow-gpu,它似乎正在成功运行。  我想知道的第一件事是模型训练的速度,使用cuDNN lstm代替普通的LSTM似乎只会增加1.3倍。我读过其他一些案例,人们发现使用cudnn lstm的模型训练速度比普通lstm快10甚至15倍。我将在下面发布一些代码。 此外,我想知道GPU的内存使用百分比。运行代码时,似乎仅占用大约8%的GPU内存,这似乎有点不足。可以与缺乏提高的速度联系起来吗?

dim(x.train)=(208,1,4) dim(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内存的速度更快,要求更高。我在这里错过了什么?

1 个答案:

答案 0 :(得分:0)

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

  1. 您在读取数据时创建了瓶颈。您应该检查CPU,内存和磁盘使用情况。另外,您可以增加批处理大小以增加GPU使用率,但样本量却很小。 Morover批量大小为1的情况并不常见;)

2。您的网络非常小,因此无法从GPU加速中获得太多收益。您可以尝试增加网络规模,以测试GPU使用率是否增加。

我希望这会有所帮助。