「实验室一块GPU都没有怎么做深度学习?」
原帖地址:
观点一:Brain Is All You Need
《Rethink whether your brain is all you need》
观点二:攒一个带GPU的笔记本电脑
看了很多大佬提出了如何白嫖云端 GPU 等巧妙的技巧,但我的建议是勒紧裤腰带,给自己攒一个带 GPU 的笔记本电脑。理由如下:
观点三:用 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 太弱,会拖累整个流水线的响应时间。