learn.fine_tune(4, 1e-2) 内存不足


earn.fine_tune(4, 1e-2)

RuntimeError: MPS backend out of memory (MPS allocated: 8.07 GB, other
allocations: 10.09 GB, max allowed: 18.13 GB). Tried to allocate 20.25
MB on private pool. Use PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 to
disable upper limit for memory allocations (may cause system failure).

怎么修改入参数可以顺利运行,不会因为内存不足报错

这个错误信息表明在使用 MPS(Metal Performance Shaders,苹果设备上的图形处理单元加速)后端进行模型微调时,内存不足。错误信息中提到的 "MPS allocated" 和 "other allocations" 是已经分配的内存量,而 "max allowed" 是允许的最大内存量。当尝试分配的内存超过了剩余可用内存时,就会抛出这个错误。

要解决这个问题,你可以尝试以下几种方法:

  1. 减少批量大小(batch size):这是最直接的方法,减少批量大小可以降低每次迭代所需的内存量。在你的 learn.fine_tune 调用中,第一个参数就是批量大小,你可以尝试减少这个值。
  2. 优化模型结构:如果可能的话,尝试简化模型结构,减少模型的复杂度,这样可以减少模型运行时的内存占用。
  3. 使用梯度累积(gradient accumulation):如果减少批量大小影响了模型性能,你可以使用梯度累积技术,即在多个小批量上累积梯度,然后在一定数量的小批量后进行一次更新。
  4. 调整学习率(learning rate):你已经设置的学习率是 1e-2,这个值可能对于微调来说太高了,特别是如果模型已经在预训练阶段使用了较小的学习率。尝试降低学习率,比如 1e-31e-4
  5. 禁用 MPS 上的内存限制:虽然这可能会增加系统崩溃的风险,但如果你确信你的系统有足够的内存,可以通过设置环境变量 PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 来禁用内存限制。
  6. 使用 CPU 进行训练:如果 GPU 内存不足,作为最后的手段,你可以尝试在 CPU 上进行训练,虽然这会显著降低训练速度。
  7. 清理内存:确保在训练前关闭不必要的应用程序和进程,以释放尽可能多的内存。
  8. 升级硬件:如果你经常遇到内存限制问题,可能需要考虑升级你的硬件,比如使用具有更多内存的设备。

在修改参数之前,请确保你理解每个参数对模型训练的影响,以及它们如何与你的硬件资源相互作用。调整参数可能需要一些试验和错误,以找到最佳的配置。

声明:八零秘林|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - learn.fine_tune(4, 1e-2) 内存不足


记忆碎片 · 精神拾荒