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

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

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

很可能是读取数据和加载模型的时间占了总耗时的大部分
高主频+SSD 的个人电脑在读数据和加载模型上相对于服务器有巨大优势
WeiJoseph
2020-10-19 23:57:57 +08:00
@minami
@Porphet
@different
@Escapist367
今晚拉大 batch_size 虽然占用的显存还是只有 1G 但是终于运算速度终于大幅度超过 cpu 了 看来是我之前 batch_size 设置的太小了
不过 batch_size 拉大以后训练效果就下降了 综合下来还是感觉这个小模型和小数据集根本不需要服务器来跑
感谢大家
kickcellardoor
2021-01-20 22:50:55 +08:00
@WeiJoseph 加 batchsize 的同时一般要同比例地提高 learning rate,加 batchsize 一般是不会有负面作用的。不过 mnist 是用不着服务器(

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

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

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

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

© 2021 V2EX