如题,一张显卡上不同人提交任务多了,一不小心显存就会炸掉(OOM, OutOfMemory)导致全部中断 有什么方法防止 OOM(OutOfMemory)或者减小 OOM 的影响?
1
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 ,让大家提交任务的时候声明需求 |
2
systemcall 2023-01-05 03:41:05 +08:00 via Android
弄几张 24g 的疯牛病显卡
|
3
SmiteChow 2023-01-05 09:52:51 +08:00
加锁啊
|
4
lookStupiToForce 2023-01-05 10:01:05 +08:00
我其实也疑惑现在各种框架都极少涉及控制显存使用以及与内存做交换的 api ,仿佛用多少显存然后炸掉只是使用者自己的事一样,“没钱用什么用”
|
5
Deplay 2023-01-05 11:28:32 +08:00
恩,重跑呗
现在跑 NLP 基本都得上 24G 显存了,一开起来基本直接飙 20G 想去某鱼捡块 M40 |
6
liukanshan123 OP |
7
liukanshan123 OP @liukanshan123 (我)再理解一下
|
8
liukanshan123 OP @systemcall 已经 24G 了,只能怪需求无止境
|
9
liukanshan123 OP @lookStupiToForce 是这个样子,现在写了个 try
|
10
liukanshan123 OP @SmiteChow 显存加锁?不过 OOM 了还是要被清掉吧
|
11
liukanshan123 OP @Deplay 是的,重跑
|
12
ppj 2023-02-15 22:02:32 +08:00 1
这个属于资源调度的范畴,可以使用调度器如 slurm/torque/openlava/lsf 等,采用 mig 算法来分配 GPU 资源。做到应用资源的隔离,防止 oom 的出现。
如果需要可 v 我: HPCLIB |