在训练多头注意力以自回归方式生成句子时面临 GPU 内存泄漏

问题描述 投票:0回答:1

我正在使用类似 GPT 的模型进行时间序列预测。这个想法类似于训练一个语言模型,给定句子的开头部分,该模型可以生成该句子的其余部分。

“我饿了,我想要一个汉堡和一杯可乐。”

输入:我饿了

预测:我想要一个汉堡和一杯可乐。

自回归语言模型将逐步生成单词。

我饿了,我 我饿了,我想要 我饿了,我想要一个 …… 我饿了,我想要一个汉堡和一杯可乐。

也就是说,新生成的单词将被追加到先前输入序列的末尾,以构造新的输入序列。在训练过程中,我将计算生成的内容“我想要一个汉堡和一杯可乐”的损失,并使用反向传播来更新模型参数。生成过程可以通过 for 循环和“仅解码器”模块来实现。

但是,GPU 内存使用量总是在这个 for 循环中达到峰值。

您对优化实施有什么建议吗?

您认为我的实现是生成单词序列的正确方法吗?

我的时间序列预测序列包含大约100个元素,即for循环重复操作100次。

deep-learning nlp time-series transformer-model
1个回答
-1
投票

用于时间序列预测的自回归语言模型的实现总体上是正确的,但是有几种方法可以对其进行优化以减少内存使用并提高性能。我可以建议我们使用发电机

您可以使用生成器,而不是使用 for 循环来生成序列。生成器是可以暂停和恢复的函数,这对于减少内存使用很有用。您可以定义一个生成器函数来生成序列中的下一个元素,然后使用 for 循环来迭代生成器。

© www.soinside.com 2019 - 2024. All rights reserved.