做深度学习科研就是在处理矛盾集合体,数据集少了各种发愁,东拼西凑地扩充,最后扩充地一塌糊涂模型摆烂不学啦;数据集多了就会出现我这几天的情况:服务器直接尬住。
事情的起因是我的朋友准备要发表一篇数据集的文章,这个数据集可大有来头,来头我不怎么关心,但是是真的大,大概有 80 万张图片,每张图片 Size 在 200 kB 到 500 kB 之间,平均 320 kB,所以整体上数据集大概 230 GB. 然后我们现在需要做的就是把这个数据集整理一下。
当时接到这个任务我想着不就是把图片按照日期和采集设备分分类嘛,这还难得到我 Bash 带师?但是当我下载好数据集文件的时候就傻眼了,合着多创建几个文件夹要钱是吧,所有 80 万张图片都在一个文件夹里面,再无子文件夹。也不知道是电脑有什么特性或者说这个文件量就是太大了,导致不管怎么办都进不到这个文件夹里面,cd 直接卡住。换成了 Windows 也是双击文件夹直接读条,然后报系统资源不足。
按理说我这个服务器的配置完全不至于出现这种问题,StackOverflow 上面也有人说打开 1 Million 甚至 5 Million 文件的数据集不应该有太大的问题。总之这个棘手的问题最后困扰了我们好几天,最后还是通过一些 Linux 黑科技搞定了。
在这抓耳挠腮的几天里面我一直在和电脑算力和承载能力作斗争(虽然不一定真的是算力问题),然后在休息的过程中经常想到一个问题,我电脑处理这个数据集都卡成这样了,那宇宙计算我的电脑计算这个数据集也卡吗?虽然我更加相信宇宙是故意卡我的()
这就涉及到一个被讨论了非常多的比喻,即把宇宙比作一个计算机,宇宙中的每个粒子都是计算的单元,宇宙疯狂计算粒子和粒子之间的各种作用,从而不断推进宇宙的演化。我们眼前的所有东西、我们本身也都是宇宙模拟出来的。
这个说法炫酷不炫酷、行不行得通我现在是不怎么在意了,我关心的是这算力得多强啊,你看看我们平常用数值方法算个简单的理想情况下的 CFD 过程都得算个三五个小时、长则一天的,外边大江大河的水流、整个地球的大气模拟,宇宙都是实时模拟的,这计算力,分我万分之一去训练深度学习模型,怎么也得一学期搞好几篇顶会吧。
不过盲目相信不是好事,我们要有怀疑和批判的精神,为什么宇宙你能算这么快,你是不是有什么 Trick. 然后我就想到了,咱们感觉到宇宙算得快,那也是咱们感觉到的,宇宙到底算得快不快,放在一个绝对标准下可不一定。因为我们也是宇宙模拟出来的,我们假设有一个宇宙外科学家,他正在边看着眼前的宇宙进行演算边大声吐槽这东西算得也太慢了吧,得三五个宇宙外时、长则一宇宙外天才能算出下一帧,只能说羡慕其中演算出来的一种自称叫人类的生物感觉不出来,因为我这演算一宇宙外秒,他们也才能感觉到一宇宙外秒。然后这个科学家就扭头去找部门要新的显卡了,留下这个宇宙搁着慢慢算吧,明天再回来看模拟结果,上个实验模拟的宇宙搞了个什么三体文明,和什么人类文明互搞把对方都搞没了,浪费了我宝贵的两天时间,我这论文还等着交呢下次炼丹宇宙能不能出个好点的随机种子。
作为被模拟的人类难免会羡慕模拟自己的计算机的算力,所以人类其实一直在想办法借用一点他们的算力,而这借用的方法其实就是:做现实的实验。
比如我们现在用超级计算机模拟粒子对撞可能要超级久,而我们直接让两个粒子对撞并且观测我们关心的数据,把粒子对撞的计算交给宇宙来进行,这样就省我们自己计算了。同样的这个可以用在各种其他的领域,什么化学分子的分析啊,生物进化的研究啊,咱们都别搞了,让宇宙自己算,我们来观测和总结。
落实到深度学习这边,什么 Classification 模型,别搞了,直接让人上,反正宇宙会算好通过人脑来分类数据的过程,并且让人说出这个结论。
想到这里,我突然知道为什么 ChatGPT 这么强了,与其相信 OpenAI 他们搞出了这么强大的模型,不如相信他们发明了时间静止的方法,然后雇 1000 个打工人坐在电脑后面,每接到一个问题就把时间停了,把这个问题的答案敲上去返回给提问者之后再让时间静止就可以了,这么复杂的解问题的过程就交给正在被宇宙计算着的人脑就可以咯。
我真是个小机灵鬼。