使用动态批次调整防止PyTorch中的CUDA内存溢出

Reddit r/LocalLLaMA 工具

摘要

MEM v3 是一个用于PyTorch的内存管理工具,它动态调整批次大小和梯度累积,以防止训练和微调过程中的CUDA内存溢出崩溃,具有抗混乱性、防崩溃检查点和实时遥测功能。

我构建了MEM v3来解决PyTorch中的一个令人沮丧的问题:长时间训练和微调运行中的CUDA内存溢出崩溃。MEM充当内存管理器,而不是在内存峰值时重启或为了安全而将批次大小设置得过小。它实时监控VRAM和吞吐量,然后在不中断进程的情况下动态调整批次大小和梯度累积。 它做了什么: - 动态批次调整:根据实际GPU内存压力,在毫秒内调整批次大小。 - 抗混乱性:经过测试,能够应对突然增加10 GB VRAM分配的冲击而不崩溃。 - 防崩溃检查点:使用原子文件替换和SHA-256校验跨轮换插槽,因此断电不会损坏保存的权重。 - 实时遥测:内置本地网络仪表盘,用于跟踪损失、吞吐量和批次切换。 您可以直接在免费的Colab GPU上测试它,无需在本地设置任何内容:https://colab.research.google.com/github/nobazzy/mem-llm-orchestrator/blob/main/notebooks/mem_orchestrator_interactive_demo.ipynb 仓库:https://github.com/nobazzy/mem-llm-orchestrator 非常乐意听取您的想法和反馈!
查看原文

相似文章