V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WeiJoseph
V2EX  ›  机器学习

在 Titan RTX 上的深度学习模型还没有 CPU 和 1650 快

  •  
  •   WeiJoseph · 2020-10-19 18:07:45 +08:00 · 2863 次点击
    这是一个创建于 1501 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个机器学习小作业 mnist 数据集上的一个小模型 同样的代码在 titan rtx 的服务器上要跑 2min 我用自己 i9 9980 的 MacBook Pro 只需要 1:35
    在同学 1650 的笔记本上用 cuda 只跑了 1:28
    十分疑惑 求大佬解释
    15 条回复    2021-01-20 22:50:55 +08:00
    ztyMCR
        1
    ztyMCR  
       2020-10-19 18:10:07 +08:00
    两分钟真的看的出啥来吗,是不是 GPU 没启用
    WeiJoseph
        2
    WeiJoseph  
    OP
       2020-10-19 18:21:48 +08:00 via iPhone
    @ztyMCR 肯定启用了噻 几个电脑上都是一份代码
    csunny
        3
    csunny  
       2020-10-19 18:27:11 +08:00
    看看运行时的负载呢
    WeiJoseph
        4
    WeiJoseph  
    OP
       2020-10-19 18:30:47 +08:00 via iPhone
    @csunny 就 50 多瓦
    minami
        5
    minami  
       2020-10-19 18:35:22 +08:00
    GPU 调用是异步的,可能是计时不准的原因。建议加入取回 CPU 的操作,保证 GPU 上任务计算完毕
    Porphet
        6
    Porphet  
       2020-10-19 18:36:56 +08:00
    如果显存几乎占满了,50w 的负载,原因可能是模型设计的问题。如果没满,可以尝试提高 batch_size
    WeiJoseph
        7
    WeiJoseph  
    OP
       2020-10-19 18:39:01 +08:00 via iPhone
    @minami 感谢 我回去试试
    Porphet
        8
    Porphet  
       2020-10-19 18:40:32 +08:00
    模型设计问题有可能是没有及时 backward,导致大量的计算图被暂时存储起来没有 backward,也就不能及时释放
    WeiJoseph
        9
    WeiJoseph  
    OP
       2020-10-19 18:41:03 +08:00
    @Porphet 24G 显存用了 1G 吧
    Porphet
        10
    Porphet  
       2020-10-19 18:42:57 +08:00
    @WeiJoseph 提高 batch_size, 这么少的显存占用肯定跑不满 rtx, 简直是浪费这块大显存显卡黑盒😂
    WeiJoseph
        11
    WeiJoseph  
    OP
       2020-10-19 18:45:03 +08:00 via iPhone
    @Porphet 感谢 晚上我提升一下 batch size
    different
        12
    different  
       2020-10-19 19:12:59 +08:00 via Android
    如 5 楼所示,可能 GPU 并行数据量太少了,大部分时间都在 cpu_gpu 交互或者 cpu 串行时间过长。
    你的服务器 cpu 可能主频较低,服务器 cpu 一般都不超过 2.5GHz 。服务器 cpu 主频一般随着核心数的增多,主频会稍微下降,大部分在 2.2GHz 以下。

    为了凸现 gpu 的优势,缩小 cpu 差距,你可能需要增大在 GPU 并行的数据量。不知道和楼上说的 batch size 是否同一个意思。
    Escapist367
        13
    Escapist367  
       2020-10-19 19:31:21 +08:00
    代码发出来看看

    很可能是读取数据和加载模型的时间占了总耗时的大部分
    高主频+SSD 的个人电脑在读数据和加载模型上相对于服务器有巨大优势
    WeiJoseph
        14
    WeiJoseph  
    OP
       2020-10-19 23:57:57 +08:00
    @minami
    @Porphet
    @different
    @Escapist367
    今晚拉大 batch_size 虽然占用的显存还是只有 1G 但是终于运算速度终于大幅度超过 cpu 了 看来是我之前 batch_size 设置的太小了
    不过 batch_size 拉大以后训练效果就下降了 综合下来还是感觉这个小模型和小数据集根本不需要服务器来跑
    感谢大家
    kickcellardoor
        15
    kickcellardoor  
       2021-01-20 22:50:55 +08:00
    @WeiJoseph 加 batchsize 的同时一般要同比例地提高 learning rate,加 batchsize 一般是不会有负面作用的。不过 mnist 是用不着服务器(
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2800 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:37 · PVG 23:37 · LAX 07:37 · JFK 10:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.