0

一直在研究rowanz的grover模型。我能够在 4 个批量大小上训练 grover 的大型模型,但是在微调大型模型时出现内存分配错误,然后我将批量大小减少到 1,训练现在正在进行中。我还尝试将 max_seq_length 减少到 512 并将 batch_size 设置为 4 并且它正在工作。

我的问题是哪个参数对减少批量大小或减少 max_seq_length 的性能影响更大?

我还可以设置 max_seq_length 的值,而不是 2 的幂,比如 512 和 1024 之间的某个值吗?

4

1 回答 1

1

我的问题是哪个参数对减少批量大小或减少 max_seq_length 的性能影响更大?

批量大小的影响:

  1. 关于性能:无。批量大小以任何方式影响最终指标(例如准确性)是一个很大的误解。虽然更精细的批量大小意味着以更短的时间间隔报告指标,但会产生比实际更大的可变性的错觉。由于显而易见的原因,在批量大小 = 1 的情况下效果非常明显。较大的批量往往会报告更高的指标准确性,因为它们是在多个数据点上计算的。最终指标通常是相同的(考虑到权重的随机初始化)。
  2. 关于效率:较大的批量大小意味着计算指标的频率较低,但同时内存中的空间更大,同时指标根据批量大小聚合在多个数据点上。你面临的同样的问题。因此,批量大小更多的是效率问题,而不是性能问题。此外,您希望多久检查一次模型的输出。

max_seq_length 的影响:

  1. 关于性能:可能是 Grover 等基于语言的模型性能的最重要指标。这背后的原因是人类编写的文本的困惑度低于随机采样的文本,并且这种差距随着序列长度的增加而增加。通常,序列长度越长,语言模型在整个输出过程中就越容易保持一致。所以是的,它确实有助于模型性能。但是,您可能需要查看您的特定模型的文档,以了解序列长度的“Goldilocks Zones”以及 2 的幂的序列是否比其他序列更可取。

  2. 关于效率:更大的序列大小当然需要更多的处理能力和计算内存,因此序列长度越高,您需要的功率就越多。

我还可以设置 max_seq_length 的值,而不是 2 的幂,比如 512 和 1024 之间的某个值吗?

是的,为什么不呢?没有模型旨在使用一组固定的值。尝试不同的序列长度,看看哪个最适合你。以 2 的幂来调整一些参数一直是一种经典的做法,因为它们具有简单的二进制表示,但在今天的大型模型中可以忽略不计。

于 2020-10-24T14:02:54.087 回答