【问题标题】:How do I prevent a lack of VRAM halfway through training a Huggingface Transformers (Pegasus) model?如何在训练 Huggingface Transformers (Pegasus) 模型的过程中防止 VRAM 不足?
【发布时间】:2021-06-09 09:13:37
【问题描述】:

我正在通过 Huggingface 转换器采用预先训练的 pegasus 模型(具体来说,google/pegasus-cnn_dailymail,并且我正在通过 Pytorch 使用 Huggingface 转换器)并且我想根据自己的数据对其进行微调。然而,这是一个相当大的数据集,我遇到了在训练中途耗尽 VRAM 的问题,因为数据集的大小可能在训练开始后几天,这使得试错方法非常低效。

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

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

那么,我如何确保在整个培训过程中使用的 vram 数量保持在合理范围内,并避免在我已经进行几天的培训时由于缺少 vram 而崩溃过程?

【问题讨论】:

    标签: pytorch huggingface-transformers huggingface-tokenizers


    【解决方案1】:

    padding=True 实际上并没有填充到max_length,而是填充到您传递给标记器的列表中最长的样本。要填充到max_length,您需要设置padding='max_length'

    【讨论】:

      猜你喜欢
      • 2021-01-08
      • 2020-12-15
      • 2020-08-11
      • 2022-10-20
      • 1970-01-01
      • 2021-10-15
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多