Pytorch 如何防止在培训Huggingface Transformers(Pegasus)模型的中途缺少VRAM?

Pytorch 如何防止在培训Huggingface Transformers(Pegasus)模型的中途缺少VRAM?,pytorch,huggingface-transformers,huggingface-tokenizers,Pytorch,Huggingface Transformers,Huggingface Tokenizers,我正在通过Huggingface transformers(具体来说,google/pegasus-cnn\u dailymail,通过Pytorch使用Huggingface transformers)使用一个预先训练好的pegasus模型,我想根据我自己的数据进行微调。然而,这是一个相当大的数据集,我在培训过程中遇到了VRAM用完的问题,这是因为数据集的大小可能在培训开始后几天就用完了,这使得试错方法非常低效 我想知道如何提前确保它不会耗尽内存。我认为模型的内存使用在某种程度上与输入的大小成

我正在通过Huggingface transformers(具体来说,
google/pegasus-cnn\u dailymail
,通过Pytorch使用Huggingface transformers)使用一个预先训练好的pegasus模型,我想根据我自己的数据进行微调。然而,这是一个相当大的数据集,我在培训过程中遇到了VRAM用完的问题,这是因为数据集的大小可能在培训开始后几天就用完了,这使得试错方法非常低效

我想知道如何提前确保它不会耗尽内存。我认为模型的内存使用在某种程度上与输入的大小成正比,因此我将
truncation=True
padding=True
max_length=1024
传递给我的标记器,如果我的理解是正确的,应该使标记器的所有输出每行大小相同。考虑到批量大小也是一个常数,我认为VRAM的使用量应该是稳定的。因此,我应该能够将数据集分割成可管理的部分,只需查看第一次运行的ram/vram使用情况,并推断它将从头到尾平稳运行

然而,情况似乎恰恰相反。我一直在观察VRAM在任何时候的使用量,它可能变化很大,从一次约12GB到突然需要超过24GB并崩溃(因为我没有超过24GB)


因此,我如何确保在整个培训过程中使用的vram数量保持在合理的范围内,并避免在我已经进入培训过程数天的情况下由于缺少vram而导致其崩溃?

padding=True
实际上并没有pad到
最大长度
,但是对于列表中最长的样本,您将传递给标记器。要将padding设置为
max\u length
,您需要设置
padding='max\u length'