高GPU内存使用但低挥发性gpu-util

时间:2017-09-16 06:43:31

标签: deep-learning keras lstm word2vec tensorflow-gpu

Keras和DL新手在这里。我想构建一个模型来训练顺序文本数据以进行分类。数据如下:

id,text,label

1,tom.hasLunch,0

2,jerry.drinkWater,1

我是用python3.5和keras 2(TF作为后端)构建的。模型摘要如下:

  1. 第一个/输入层是一个word2Vec嵌入,它是从头开始构建的,有4332个单词。
  2. 第二层是一个简单的LSTM层,参数包括:(dense_dim = 100,kernel_initializer ='he_normal',dropout = 0.15,recurrent_dropout = 0.15,implementation = 2)
  3. 紧随第三个辍学层:辍学(0.3)
  4. 输出图层
  5. Model summary

    训练数据大小约为30GB。参数的数量并不多,因为我将功能的嵌入层数从300减少到100,而我只为每行/ ID选择前1000个字。在AWS EC2 p2.8xlarge实例上运行后,我发现了

    1. 低易失性gpu-util但高GPU内存使用率 GPU-Util通常约为30%ish且不超过50%,我希望能更好地利用GPU,以便加速培训。 1个时代现在需要大约6-7个小时。 GPU util and memory usage

    2. 考虑到实例/机器的强大程度,CPU和内存使用率也非常低。看起来只有python3线程正在运行,但它确实通过htop显示多个线程,但仍然是非常低的CPU利用率。 Low CPU and memory usage

    3. HTOP CPU multiple core utilization

      请您建议更好地利用GPU,CPU和内存的方法吗?

      另一个问题是顺序文本数据主要是骆驼模式,例如“tom.hasLunch”,“jerry.drinkWater”等。

      如果以[tom,has,lunch],[jerry,drink,water]的格式分割单词而不是[tom,haslunch],[jerry,drinkwater],它会表现得更好吗?后者不会将单词分成细粒度,这可能类似于为每个标记化的单词指定数字/ id,如1表示haslunch,2表示drinkwater。

      更新 ,到目前为止它经历了6个时代,似乎它在第5纪元开始过度拟合并且似乎时代3获得了最佳模型/性能,后续问题是为什么验证准确性优于训练准确性?大概通常是另一种方式?

      大纪元1/10

      损失:0.2445 - acc:0.8944 - val_loss:0.1646 - val_acc:0.9318

      大纪元2/10

      损失:0.1870 - acc:0.9232 - val_loss:0.1450 - val_acc:0.9408

      大纪元3/10

      亏损:0.1675 - acc:0.9326 - val_loss:0.1728 - val_acc:0.9238

      Epoch 4/10

      亏损:0.2060 - acc:0.9116 - val_loss:0.1550 - val_acc:0.9337

      大纪元5/10

      损失:0.1676 - acc:0.9320 - val_loss:0.1268 - val_acc:0.9499

      大纪元6/10

      亏损:0.4216 - acc:0.7999 - val_loss:0.4375 - val_acc:0.7981

0 个答案:

没有答案