实验室一块GPU都没有怎么做深度学习?

学术   2024-10-23 20:27   安徽  
 Datawhale分享 
来源:知乎,编辑:Datawhale

实验室一块GPU都没有怎么做深度学习?

前天,一位读者 @__Ferrie__ 后台私信了 Datawhale,分享了一则他看到的比较有意思的知乎评论,
问题描述:
经过挑选整理后,分享给大家~

原帖地址:

https://www.zhihu.com/question/299434830/answer/2141600017

观点一:Brain Is All You Need

@全村的希望 的回答
图像的话直接人眼当CNN用,直接提取特征,别人还在慢吞吞的 transformer 的时候,你已经根据大脑的 attention 给特征标出了自适应权重,这一步直接先领先别人一大截。
计算部分也只是麻烦一点点而已,首先先买两个算盘,一般情况下你就双手进行并行运算,算的时候左脑和右脑最好分开运算,这样效率能提升许多。
最后还可以把珠子扳开进行半精度运算,也能提升效率,脑子算热了就去顺便洗个头,然后午睡一下清一下脑脊液
矩阵乘法就去汤家凤老师那边学一下三行四列的行列式是怎么算的,买本1800多练练计算
最后你还不需要调参,这是最关键的,别人还在那边 AdamW 优化学习率,你这边自适应超参,超过 sota 多少仅仅取决于你自适应到什么程度
最后关键的是来一个蹭热度的题目:

《Rethink whether your brain is all you need》

观点二:攒一个带GPU的笔记本电脑

@叶小飞 的回答

看了很多大佬提出了如何白嫖云端 GPU 等巧妙的技巧,但我的建议是勒紧裤腰带,给自己攒一个带 GPU 的笔记本电脑。理由如下:

1. 科研虽然有老师带领,但终究是给自己做的。你买了这笔记本电脑后可以随时随地写深度学习代码,训练自己的模型(根据你的描述,我不认为你们实验室的项目需要很强的算力,单块性能不错的 GPU 估计基本满足),基本不受网络、地理限制,能更快地推进自己科研进度,尽早出论文。
2. 鉴于你正处于深度学习入门阶段,有一台带 GPU 的私人笔记本可以大大加速你的学习进度。一般入门者都会上一些深度学习的课程,许多课程设置的作业往往需要你至少有一块 GPU 来完成。同时,由于这笔记本是你私人产物,你可以用来开发一些业余有趣的项目,参加 Kaggle 比赛等等,从长远来看,它绝对会为你创造额外的价值。
3. 云端服务器一般用来做大规模的训练,prototyping 最好用的永远是本地的机器。假设你发现代码有问题,要一步步 debug 你的代码,查看每个变量的内存,结果你发现只能面对冰冷的没有 UI 的 console,或者卡的要死的云端 VM,亦或者还要排队等 GPU 资源,你会不会感到很抓狂?这就是为什么在知名的实验室或者大厂里,标配是人手一个带着 Gpu 的 workstation 做算法原型 + 大型的 gpu cluster 做大规模训练。
4. 之所以建议买笔记本而不是 workstation, 主要是因为 workstation 体积太大,要么放到实验室里用,要么放在家里用,使用场所受到很大的限制。而且目前来看笔记本的性能应该足以满足你的需求。
写在最后,当年我暑假在美国西北大学 mHealth 实验室做科研的时候,实验室里一块 GPU 都没有,我就是咬紧牙买了一台 MSI 笔记本(自带一块 1060),后来这笔记本立下了汗马功劳,我有两篇论文的实验都是在上面跑出来的。

观点三:用 CPU 做深度学习

@伞兵8086 的回答

1. 初学者

你不必为了学习深度学习,而且买一块 GPU,甚至还要为它换台电脑。 

初学者会一般会从基本的多层感知器 MLP 开始学习。一般会包含 3 层全连接的神经网络,有基本的激活函数 Activation Function, 比如 sigmoid。数据集采用手写数字数据集 MNIST。这样的网络,对算力要求非常非常低。你的笔记本 CPU 就可以胜任。大概需要十几分钟的训练时间,就可以得到不错的精度。 

我建议初学者最好学习用 Python + Numpy 实现的例子。这样,你对深度学习的基本原理就会很容易理解。这样的例子,也只能用 CPU 运行了。 

如果使用 Tensorflow 或者 Pytorch 也可以。但不能体会全貌。但我们需要使用框架,学习简单的深度网络模型,比如 LeNet-5, AlexNet。这些经典的模型,算力需求也很小,CPU 足够了。 

2. 进阶者

你需要学习一些可以实用的深度网络模型,比如 ResNet50, Bert。这些模型是否需要 GPU 呢? 

如果你从 0 开始,训练这些模型,恐怕一块 GPU 是不够的。根据新闻,索尼用 2176 块 GPU,将 ResNet50 的训练记录缩短到了 224 秒(这个记录早就被突破了)。用一块的话,需要 487424 秒(6天)。普通玩家谁能有这样的硬件或者时间? 

面对这样的大型模型,人们会采用迁移学习 Transfer Learning 的方法:使用一个训练好的模型,利用模型已有的特征提取能力,在新的数据集上,只训练与新任务有关的最后几层。从而可以在很短的时间里,训练出精度不错的模型。这对算力的需求,也不算高,CPU 也可以胜任。几个 epoch 就够了。

3. 高阶者

当你需要训练一个超大模型,或者使用超大数据集(单个数据巨大(如1G的图片),或者数据量巨大),集群是唯一的选择。纯 CPU 的集群环境,很容易拿到。超算中心,HPC 中心,单位机房里凑十几,几十台服务器/PC,都容易办到。这些不用花钱购买的,现成的机器,可以让你轻松构建一个深度学习集群。毕竟 CPU 上的软件环境成熟稳定。

上面说的,都是深度学习训练的场景,下面说说推理的场景。这就更需要 CPU 了。

4. 项目实施者

你要面临的问题是深度模型推理部署。推理对算力的需求,远不如训练阶段的高。我们恨不得在 1 分钟内训练完毕的模型,在部署后,可能只需要 1 秒处理 5 张照片,或者 1 秒只收到 2 条文字查询请求。这种情况下,CPU 可以满足大部分需求。 

这时成本,功耗,封装体积是要额外考虑的因素。毕竟无论是在云端,边缘侧,终端,CPU 是必需的,其他设备能省就省。使用一颗强悍的 CPU 做推理,可以简化工程部署的问题。同时推理阶段,有部分算力是用来做数据预处理和后处理的。如果 CPU 太弱,会拖累整个流水线的响应时间。

在这个阶段,你可以继续使用训练模型时的深度学习框架(Tensorflow/Pytorch),也可以使用专门针对推理的框架(OpenVINO)。
一起“三连

Datawhale
一个专注于AI领域的开源组织,汇聚了众多优秀学习者,使命-for the learner,和学习者一起成长。
 最新文章