深度学习训练如何防止被炸显存

2023-01-05 02:54:26 +08:00
 liukanshan123

如题,一张显卡上不同人提交任务多了,一不小心显存就会炸掉(OOM, OutOfMemory)导致全部中断 有什么方法防止 OOM(OutOfMemory)或者减小 OOM 的影响?

2012 次点击
所在节点    程序员
12 条回复
dayeye2006199
2023-01-05 03:03:21 +08:00
同时进行的任务太多导致 OOM ,这个基本无解。解决方法无外乎买更多的显卡,更大的现存型号,减少同时提交的任务树。

如果 OP 想要做一个好公民,减少自己程序的现存占用,可以考虑以下几点:
1. 减少 batch size
2. CPU + GPU 混合处理(比如数据处理的部分放在 CPU+内存里面处理完之后再发到 GPU 显存里面)
3. 多做 checkpoint 存盘
4. 多卡并行,减少单张卡的现存占用
5. 考虑使用混合精度训练
6. 考虑使用集群资源管理,例如 k8s, slurm ,让大家提交任务的时候声明需求
systemcall
2023-01-05 03:41:05 +08:00
弄几张 24g 的疯牛病显卡
SmiteChow
2023-01-05 09:52:51 +08:00
加锁啊
lookStupiToForce
2023-01-05 10:01:05 +08:00
我其实也疑惑现在各种框架都极少涉及控制显存使用以及与内存做交换的 api ,仿佛用多少显存然后炸掉只是使用者自己的事一样,“没钱用什么用”
Deplay
2023-01-05 11:28:32 +08:00
恩,重跑呗
现在跑 NLP 基本都得上 24G 显存了,一开起来基本直接飙 20G
想去某鱼捡块 M40
liukanshan123
2023-01-05 22:58:39 +08:00
@dayeye2006199

感谢 我占的其实很少了,就是有的朋友不太讲武德 混合训练再理解一下
liukanshan123
2023-01-05 23:01:47 +08:00
@liukanshan123 (我)再理解一下
liukanshan123
2023-01-05 23:16:23 +08:00
@systemcall 已经 24G 了,只能怪需求无止境
liukanshan123
2023-01-05 23:17:58 +08:00
@lookStupiToForce 是这个样子,现在写了个 try
liukanshan123
2023-01-05 23:19:21 +08:00
@SmiteChow 显存加锁?不过 OOM 了还是要被清掉吧
liukanshan123
2023-01-05 23:32:39 +08:00
@Deplay 是的,重跑
ppj
2023-02-15 22:02:32 +08:00
这个属于资源调度的范畴,可以使用调度器如 slurm/torque/openlava/lsf 等,采用 mig 算法来分配 GPU 资源。做到应用资源的隔离,防止 oom 的出现。

如果需要可 v 我: HPCLIB

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/906642

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX