转载自 | 知乎
编辑|机器学习算法与自然语言处理
「实验室一块GPU都没有怎么做深度学习?」
观点一: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天)。普通玩家谁能有这样的硬件或者时间?