要点:
- 应对数字暴政:应对多即不同,材料同质化解决集成问题,在工程上无限缩放,不同材料的问题变成同一种材料(比如硅)的问题。
- 应对数字暴徒:应对僵硬,需要柔性和松弛,而意义编码则可解放大量用于维护无损等僵硬手段的算力。用人的方式,从自然中学习。
随晶体管偶然问世,人们认为用它们处理 0 和 1 的难度将随着系统规模的扩大而提高,人们不得不付出更多劳动和成本来就范,面临 “数字暴政”。但事情发展的方向正好相反。
推翻 “数字暴政” 的武器是 “集成”,而集成背后的理念是 “自己控制自己”,“同一种物质完成所有组件” 建立无限缩放性,这样就能摆脱 “多即不同” 的陷阱:若外部控制组件太多,各部分缩放率不同,只要其中一种先遇到瓶颈,整个系统的缩放将终止。
与其用碳粉,铝片,铜等各不相同的材料分别制造电阻,电容,电感等元件,不如用廉价的硅制造一切,集成电路生成。同样理念下,与其分别制造各种独立的计算,存储电路,不如制造通用可编程电路,CPU,内存生成。但由于冯诺依曼结构约束了计算机形态几乎半个世纪,CPU,内存一直没有集成。但未来它们大概率会集成在一起,冯诺依曼结构可能被颠覆。
数字暴政虽被推翻,互联网由超大规模集成电路简单构建起来,另一问题随即冒出。梅特卡夫等人一直对互联网持悲观态度,他们认为互联网会随着数据规模的指数级增长而崩溃,表现为传输和存储,数据将像暴徒一样越来越狠地侵袭互联网。而梅特卡夫定律是个表述定律,并非支撑定律,任何技术都托不住指数增长的带宽和存储需求。
对付数字暴政时,同质集成是正确的道路,而面对数字暴徒,人们显然还没有找到正确的路,数字暴徒远没有数字暴政好对付。
计算机应该模仿人的方式,用更自然的方式处理信息。模仿人的自然方式依赖强大的 AI,在传输或存储某信息前先检索,只做增量,这已世人皆知,但更必要的是模糊处理,在此基础上则宁传指令而不传数据。
如果没有模糊处理能力,世界上产生的每一 bit 信息都将是新的,丢了就是损失,处理这些损失消耗了大量算力,但如果将有损看做自然的,就没必要做任何应对,系统本身就是容错的。
为做到这一点,用人工神经网络存储信息就十分必要,而这种结构本身就是存算一体的,一旦采用人工神经网络结构,增量信息处理就本来无一物了,因为结构本身就是增量刻画的,这便是对冯诺依曼结构的颠覆。
人们花了大量精力研究拥塞控制,fec,压缩,无非就是想节省传输带宽,存储开销,虽然每比特成本越来越低,但我之前算过,以存储所有 ipv6 地址为例,以现有 ssd 技术,依然需要好几个地球的体积。人们一直在用图书馆的方式,而不是人的方式处理信息。
人的大脑不会存储 100 个 “我” 字,但却可在 100 个场景下使用 “我” 连接不同的子句,大脑 “根据上下文现场造句” 的能力来自存算一起的神经网络本身,everything is from everywhere,而不是某处存储器的某个地址。这种存储结构拥有强大的容错能力,从而可以 “从意义中恢复信息”,详见下面两篇:从意义中恢复,大模型时代的通信。不再赘述。
我专业是网络传输,侧重带宽利用率,当我领悟到从意义中恢复是如此有趣时,我就再也不做 capacity-search protocol cc 了,包括 bbr。tcp/ip 中的 ip 分布式尽力而为,这是互联网成功的根基,如果应用层也尽力而为,拥塞控制也就能尽力而为,大量算力将被解放。
应用层为什么难以尽力而为,根源在编码。
人脑能从意义中恢复,因为人脑直接编码意义,整个世界的意义在大脑的编码可等效为 n 维立方体中的点,n 随主人接收遗忘可变。相似意义的编码点在立方体中挨得足够近,当输入一个模糊信息给大脑时,该输入穿过神经网络的过程就是 n 维解分量的过程,n 个维度分量有多少算多少,最终锁定一个区域,该区域中的点就是信息所有可能的意义,如果只有一个点,他就恢复了 100%,如果有两个点,就看哪个点在他权重更大的维度上投影更小,如果都一样,就随便猜一个,纠错后再输入重塑这立方体。
但网络传输的信息大都是计算机编码而非意义编码,两个一点都不像的汉字的编码可能很像,编码和意义是分离的,就失去了容错的可能,但用意义编码就不一样,比如比特串在传输源和目标分别为 1001110010 和 1101110010,只差 1 个比特(次高位),在意义立方体中它们挨得足够近,如果第二个是错的,很容易将它恢复为第一个。
典型的例外是图片像素,这就是意义编码而不是计算机编码,因此很容易把图片压缩成马赛克而不影响识别。
如果收发两端有能力进行意义转码,创建好上述 n 维立方体,将计算机编码转换成意义编码,随即就可以进行模糊传输了,或叫有损传输,大量丢失的信息可以在意义中恢复。
下面谈谈增量指代,起点是字典,终点是告诉接收端一段指令,教它怎么恢复,都是祈使句,我长话短说。
我们日常交流很少直接传数据,却经常用指代伴随祈使句,比如 “请看《道德经》…”,根本没必要把道德经念给对方。另一种情况,当对方听不清或听不懂,表现为带宽太低(丢包?),我们懒得再解释时,会让对方转而问别人或到另一个带宽好的地方求解。这也奠定了世界上几乎所有语言的 “主-谓-宾” 结构,这是人与人之间沟通信息的基本结构,而复杂裸信息本身只能作为从句。
我曾在一个隧道协议中增加了一种新机制,我尝试在隧道的头尾建立长度分别为 8k,16k,64k,1M,4M 的字典,因为隧道里经常传反复修改的论文或报表(不必猜是哪里),这里面很多信息都是重复的,为什么要每次都传一遍呢,只传字典索引即可。结果效果非常好。教对端恢复我没有合适的例子,因为我还没机会做。
互联网本身已经足够容错了,互联网上面的每一次数据传输为什么不能呢?早上跟老婆聊天,她最近在看空中浩劫系列,提到飞机作为精密仪器,一个零件稍微有问题就可能全部完蛋,我说互联网正相反,把机房一半机器砸了,即使把机房砸了,服务照样运作,它的初衷就是应对核打击的。作为载荷的每一次数据处理,显然也要如此。
如何应对数据中心大流量。大多数拥塞控制方案最终还是回到 aimd,肤浅了,窄了。最后是一个 use case,同时涉及到存算分离的冯诺依曼结构以及 dcn incast 的反面。
小时候那些走街窜巷扛着炉子工具修锅大爷,爆米花大爷,拉着车收废品的大爷玩不但存算一体,还能解决 incast,他们拉着车子和工具到处跑,一边走一边叫卖“换锅底,换壶底,换搪瓷盆底,修锅的来啦,修锅的来啦”,要补锅的话不光要等大爷来了把锅带过去,融化成补锅材料的易拉罐都要自己提供。爆米花大爷也一样,大米玉米要自己提供,糖都要自己带。
这就完全取消了资源同步需求,也避免了小街小巷店铺前的人流拥塞,如果大爷开店,以 10 个分布在不同地方的顾客为例,所有顾客行走的距离,扛着锅,大米耗费的体力将远小于大爷一个人扛着工具的消耗,他只需要走一个 rtt 即可服务所有顾客,而顾客原地不动。把只读代码推给数据,而不是反向来料加工,就是这个意思。
拉着车子收废品则避免了 incast,道理一样,大爷自己走一圈,而不是卖废品的人涌到大爷这边来。
计算机和网络协议都是现实世界的映射,所有的问题和方案早就存在于我们身边很久了,要多观察。学外语日常交流的过程肯定是收敛的过程,常用单词和短语一定不会太长太复杂,如果太长太复杂,总有人来简化它,这不就是哈夫曼编码么。
不能因为每家都有个一样的小灶炉子就把所有小灶炉子集中成一个大灶炉子让大家共享做饭,但这却恰恰是计算机科学推荐的方式,这和数字暴政有关,值得反思。
以下内容发于朋友圈,贴在这里只为记录,与本文无关。新数字暴政:如今人们被数字绑架,所有事都被数字量化考核,为了追平或超越某数字不得不时刻紧张兮兮,包括不限于:体检报告,体重,吃了多少卡路里的饭,为消耗这些饭跑了多少公里,实际消耗多少卡路里,心率多少次,跑一公里多长时间,深度睡眠多久,晚上醒了几次,通勤时间占比,vx 读书时长,英语学习时长,kpi 考核,去了多少个城市,考了多少证,一天拉几次屎,多久拉一次,各种先污染后治理的数字激活了很多周边商业,卖药,办健身卡,卖表,卖鞋,卖眼镜,卖课,卖 app…其实都在卖焦虑,人们被数字压迫,却甘愿被数字统治。
浙江温州皮鞋湿,下雨进水不会胖。