V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liukanshan123
V2EX  ›  程序员

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

  •  
  •   liukanshan123 · 2023-01-05 02:54:26 +08:00 · 1965 次点击
    这是一个创建于 680 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    dayeye2006199
        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 ,让大家提交任务的时候声明需求
    systemcall
        2
    systemcall  
       2023-01-05 03:41:05 +08:00 via Android
    弄几张 24g 的疯牛病显卡
    SmiteChow
        3
    SmiteChow  
       2023-01-05 09:52:51 +08:00
    加锁啊
    lookStupiToForce
        4
    lookStupiToForce  
       2023-01-05 10:01:05 +08:00
    我其实也疑惑现在各种框架都极少涉及控制显存使用以及与内存做交换的 api ,仿佛用多少显存然后炸掉只是使用者自己的事一样,“没钱用什么用”
    Deplay
        5
    Deplay  
       2023-01-05 11:28:32 +08:00
    恩,重跑呗
    现在跑 NLP 基本都得上 24G 显存了,一开起来基本直接飙 20G
    想去某鱼捡块 M40
    liukanshan123
        6
    liukanshan123  
    OP
       2023-01-05 22:58:39 +08:00
    @dayeye2006199

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

    如果需要可 v 我: HPCLIB
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:14 · PVG 06:14 · LAX 14:14 · JFK 17:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.