我正在使用类似 GPT 的模型进行时间序列预测。这个想法类似于训练一个语言模型,给定句子的开头部分,该模型可以生成该句子的其余部分。
“我饿了,我想要一个汉堡和一杯可乐。”
输入:我饿了
预测:我想要一个汉堡和一杯可乐。
自回归语言模型将逐步生成单词。
我饿了,我 我饿了,我想要 我饿了,我想要一个 …… 我饿了,我想要一个汉堡和一杯可乐。
也就是说,新生成的单词将被追加到先前输入序列的末尾,以构造新的输入序列。在训练过程中,我将计算生成的内容“我想要一个汉堡和一杯可乐”的损失,并使用反向传播来更新模型参数。生成过程可以通过 for 循环和“仅解码器”模块来实现。
但是,GPU 内存使用量总是在这个 for 循环中达到峰值。
您对优化实施有什么建议吗?
您认为我的实现是生成单词序列的正确方法吗?
我的时间序列预测序列包含大约100个元素,即for循环重复操作100次。
用于时间序列预测的自回归语言模型的实现总体上是正确的,但是有几种方法可以对其进行优化以减少内存使用并提高性能。我可以建议我们使用发电机
您可以使用生成器,而不是使用 for 循环来生成序列。生成器是可以暂停和恢复的函数,这对于减少内存使用很有用。您可以定义一个生成器函数来生成序列中的下一个元素,然后使用 for 循环来迭代生成器。