提问人:erfan momeni 提问时间:11/12/2023 最后编辑:erfan momeni 更新时间:11/12/2023 访问量:34
如何在不增加内存的情况下减少神经网络的训练时间?
How can we decrease the training time of neural networks without increasing memory?
问:
我想训练 rnn 模型(gru+lstm) 我的训练模型有 500000 个英文文本,我想用这些数据训练和评估模型。当我检查批量大小为 20 的一个 epoch 的训练时间时,它真的很高(6 小时)
图层(类型)输出形状参数#
===============================================================
input_4 (InputLayer) [(无, 149, 1)] 0
gru_6 (GRU) (无, 169) 87204
dense_6(密集)(无,128) 21760
repeat_vector_3 (RepeatVector) (无, 169, 128) 0
gru_7 (GRU) (无, 169, 128) 99072
time_distributed_3 (TimeDistributed) (None, 169, 165627) 21365883
===============================================================
参数总数: 21,573,919
可训练参数:21,573,919
不可训练的参数:0
这是神经网络层的摘要。 我想知道我们是否有任何减少训练时间的方法(不增加内存或增加批处理大小)。
答:
您可以研究 的用法,它既可用于 TensorFlow/Keras
也可用于 PyTorch
。通过降低模型的精度,它需要更少的内存。例如,仅使用(16 位)而不是 (32 位)的模型需要一半的内存,这就是为什么您通常可以将内存加倍,从而显着加快训练速度的原因。mixed precision
float16
float32
batch size
但是,请记住,使用错误的 dtypes 可能不会带来任何性能改进 - 例如,在没有 (Advanced Matrix Extensions) 的情况下使用 on s 不会加快您的训练速度,实际上会使您的训练变慢!因此,您应该仔细阅读该主题并使用提供的链接作为起点。bfloat16
CPU
AMX
评论
float32
float32
评论