@Lenciel

Nvidia新GPU与算法工程师

今天看到介绍 Nvidia 新 GPU 的帖子,副标题是,「4nm 制程 800 亿晶体管,20 张即可承载全球互联网流量,全新 Hopper 架构太炸了」。

有点像爽文了,对不对。

正好,上周末看到特斯拉的 Andrej Karpathy 一篇关于神经网络的文章,自己也去把 Yann LeCun 的那个识别手写邮编号码的实验又做了一遍。

说「又」,是当年读研的时候,因为搞的是控制,也弄过一下神经网络,就查到过Yann LeCun 的那篇论文,也仿照着做过实验。

当时的数据我已经不太记得了。

这一次,基于 Karpathy 基于 PyTorch 的 Repo ,仍然用文章里最初采用的 Bootou 和 LeCun 在 88 年搞出来的的反向传播模拟器的实现机制,在 MacBook Pro (14-inch, 2021,M1 Pro 芯片)上训练数据集(很小,7291 个图例)只用了十几秒钟(论文里在 SUN-4/260 平台上花了三天左右),并得到了几乎一致的结果。

换句话说,过去的 33 年里,因为硬件体系结构的变化,带来的性能提升是近万倍的(如果 PyTorch 能够把 M1 Pro 里的 GPU 和 NPU 也用起来的话应该会更快)。

但,如果换个思路,要在「软一点」的层面去优化一下这个神经网络,会有什么样的效果呢?

首先,这个 33 年前的神经网络,麻雀虽小五脏俱全:它有一个数据集,有完整的架构和实现,还给出了训练集和测试集的实验结果和错误率。

然后,无论是像原来论文里留的 todo 一样去加上 weight normalization,还是把激活函数从 TanH 升级到 ReLu (这个主要是对 dropout 有帮助,但也会引入更多的噪声,使得训练时间变长),带来的收益都是很线性的。

最后,连 Karpathy 这样吃这碗饭的行家,想出来的不增加时间成本的优化方案,也是扩大数据集(这主要是因为最近 30 多年很多的进展或者优化都是基于更大数据集的,在这样的样本空间上,其实没有特别大的效果)。

所以,站在一个比较大的时间尺度上,深度学习在算法本身上的突破是线性的甚至可能是停滞的。但是数据集(当年不过万,现在动不动就是几个亿的样本)和算力(当年可以玩几千个参数,现在随便玩几万亿参数)方面带来的突破却可能是指数的。

一个背后的推论也许是,今天动辄百万年薪的算法工程师,可能未必是一个长期存在的行业。以后我们训练一个 AI,大概跟今天打开手机拍个照一样容易:于是掌握在暗房里冲洗胶卷的手艺的人大量下岗了。

类似的情况发生在各种有趣的地方。比如今天我们去看 NES 时代的《超级玛丽》或者说街机时代的《街头霸王》这样的游戏,在如何压榨有限的内存和存储,把音乐、图像、动效等综合处理和呈现做到极致,有过很多让人赞叹的设计和实现。

但突然有一天,硬件升级了,相关的所有需要大量理论和经验支撑的设计或者调优技巧全部都变得不重要了。

现在很多的程序员甚至不真正理解内存和存储。

我相信,世界上肯定有一些人做算法研究或者是在有限资源下的游戏开发,完全是出于兴趣,并不会被这样的改变剥夺所有的成就感。

但大部分人,投入工作是为了更好的生活。面对复杂的问题,能不能识别出关键杠杆,并且把红利真正吃下去,可能是会改变生活的决定。

这一点,在移动互联网红利终于消耗殆尽,下一个时代还不知道由什么硬件来承载,每个社交网络上都有一群挂着售价几十万美金的 NFT 头像的年轻人,在热烈讨论要不要辞职或者是辍学投入到 Web3 事业的今天,真是个特别有意思的话题。

欢迎留言