电力、芯片、软件、数据和模型,各自怎么一路长过来,又在哪里交汇。

1882 年到今天,往下读。直接看最近:2024 – 2026 ↓

1882 – 1955

电、计算和晶体管

电站把电送进楼里,交流电又把电送到远处;图灵问什么能算,冯·诺伊曼把程序放进存储器,贝尔实验室造出了晶体管。这些当时互不相干的事,后来成了计算机的地基。

1956 – 1985

机器连成网,知识写成规则

集成电路把整块电路做进一块半导体,编程语言、磁盘和网络让计算机越来越好用。AI 在 1956 年起步,主流做法是把专家知识写成一条条规则。

  1. Dartmouth一份 1955 年的提案,把学习、语言、推理列成了研究问题。
  2. Logic Theory Machine靠经验法则决定往哪搜,把找证明写成机器能执行的规则。
  3. RAMAC 磁盘不用先给卡片排序,交易来一笔就能记一笔。
  4. FORTRAN照着数学公式写计算,机器指令交给翻译程序去生成。
  5. 感知机连线是随机的,靠强化,网络学会对同一刺激给出同样的反应。
  6. 集成电路不再一个个焊元件,整块电路做在同一块半导体上。
  7. Dijkstra每次先定下离出发点最近的点,不用把所有路径都列一遍。
  8. LISP用递归函数处理符号表达式,成了 AI 研究常用的语言。
  9. MOSFET硅上长一层二氧化硅,上面放电极,用电场开关电流。
  10. 卡尔曼滤波每来一个新测量,就按各自的误差修正一次状态估计。
  11. Atlas 虚拟内存程序员不用再自己在磁芯和磁鼓之间搬数据。
  12. 分组交换标准大小的消息块逐站存储转发,坏掉几个节点也能绕过去。
  13. System/360六个型号性能差约 50 倍,指令集却完全一样。
  14. Moore 1965每块电路最省钱的元件数,大约每年翻一倍。
  15. FFT拆成小变换,计算量从 N² 降到 N log N 量级。
  16. 低损耗光纤高锟算出:玻璃只要够纯,光信号就能传上百公里。
  17. 单晶体管 DRAM电容里的电荷代表一位,一个晶体管负责充放电。
  18. Model 85 缓存一块小而快的缓存放着正在用的数据,程序不用操心。
  19. Heuristic DENDRAL先按谱峰排除不可能的结构,再拿预测谱和实测谱比对。
  20. ARPANET第一次远程登录,只传出“lo”两个字母就崩了。
  21. Unix为了留住交互式编程,贝尔实验室做了一套新系统。
  22. 反向模式求导记下每步运算,再从结果倒着扫一遍,就知道每步对结果的影响。
  23. 关系模型存储方式换了,应用程序最好不用跟着重写。
  24. Intel 4004运算、寄存器和执行程序都在一颗芯片上,换个程序就换个用途。
  25. Shakey操作员只说目标,它自己看路、排计划、推箱子。
  26. C给 B 语言加上类型,Unix 内核从此不用汇编写。
  27. Dennard 缩放尺寸和电压一起按比例缩小,单位面积的功耗保持不变。
  28. MYCIN把领域知识写成一条条规则,还能解释自己为什么这样建议。
  29. Ethernet附近的计算机共用一根同轴电缆,撞车了就重发。
  30. EM 算法先估计缺的部分,再更新参数,两步交替直到收敛。
  31. BLAS厂商把这几个基础运算优化一次,上面所有数值库都受益。
  32. RISC少数几条简单指令做了大部分工作,那就把指令集做简单。
  33. Neocognitron提取特征的层和容忍位移的层交替堆叠,不用老师也能学。
  34. Hopfield 网络只给半条线索,网络也能落回整条记忆。
  35. TCP/IPARPANET 定下一天,从 NCP 切换到 TCP/IP。
  36. GNUStallman 宣布:要做一套人人能自由分享的系统。
  37. 闪存不用紫外线,也不用每位两个晶体管,按块一次擦掉。
  38. 贝叶斯网络每个节点只和邻居交换消息,整张图的判断仍然前后一致。
  39. WordNet同义词归成一组,组与组之间按上下位等关系相连。

1986 – 1997

从数据里学

程序开始从样本和奖励里自己调参数,反向传播、SVM、Q-learning 各走一条路。Web、Linux 和 arXiv 也在这时出现。

  1. 反向传播把输出的误差往回传,网络每一层都知道该怎么改。
  2. 台积电设计芯片不必自建晶圆厂,制造交给专门的代工厂。
  3. ALVINN不写看路规则,把图像直接喂给网络,让它说往哪转。
  4. HMM听到一串声音,反推背后最可能的那串隐藏状态。
  5. Web想用链接把 CERN 散落的文档、人和项目连在一起。
  6. GPL谁都能改、能卖,但发出去时得附上源代码。
  7. 混合专家一个门控网络决定每个样本交给哪几个专家网络。
  8. LinuxGNU 只差一个内核,Linux 公开源码,补上了这块。
  9. Python它的语法学 ABC,又能调用系统接口,还能用 C 扩展。
  10. arXiv论文投到一台服务器,订阅者收到通知,想看再取全文。
  11. Q-learning用眼前的奖励加上对后面的估计,一点点修正动作的价值。
  12. IBM 翻译模型不写规则,从约 178 万对英法句子里学出词的对应。
  13. Penn Treebank让程序先标词性和句法,人只管纠错,标得又快又齐。
  14. MPI并行程序有了共同的消息接口,不必再绑死在一家机器上。
  15. GroupLens看和你口味相近的人怎么打分,猜你会不会喜欢这篇帖子。
  16. Okapi BM25词出现越多分越高,但会饱和;文档越长,同样的词越不值钱。
  17. SVM分界线离两类样本都尽量远,留出一段间隔。
  18. LSTM给循环网络加上记忆和门控,前面的信息不容易丢。
  19. Sojourner地面只给目标,路上的障碍由它自己绕开。
  20. Deep Blue480 块象棋芯片一起搜,重赛赢了世界冠军。

1998 – 2011

数据和算力一起变大

互联网带来海量数据,难题变成在成千上万台会坏的机器上算。GPU 学会了通用计算,ImageNet 开始大规模标图。

  1. LeNet-5卷积、权重共享和下采样配在一起,认手写数字。
  2. Google 原型排序不只数关键词,还看谁链接了你、怎么描述你。
  3. Paxos有机器宕机、消息丢失,各份副本也不会给出矛盾的结果。
  4. BLEU数机器译文和人工译文有多少相同的词组,快而便宜。
  5. Xen把客户系统稍改一改,遇到特权操作就请 Xen 代办。
  6. 神经语言模型词向量和下一个词的概率一起学,没见过的句子也能估计。
  7. MapReduce程序员只写映射和归约,分片、调度、重跑都交给系统。
  8. LLVM一种通用的中间表示,让优化不再绑死在某一门语言上。
  9. SIFT照片拍远了、转了,同一个点也能对得上。
  10. NumPy把分成两派的 Python 数组库合成一个。
  11. Stanley无人干预,Stanley 最先跑完 2005 年的沙漠赛道。
  12. CUDA用扩展过的 C 写 GPU 程序,不必把计算伪装成画图。
  13. 差分隐私换掉任何一个人,公布的结果都几乎不变。
  14. Amazon EC2调一个接口,几分钟开出一台虚拟服务器,用多少付多少。
  15. UCT在搜索树里平衡两件事:多走看好的分支,也试试走得少的。
  16. 能耗比例性服务器闲下来,耗电也应该跟着降下来。
  17. PUE机房总耗电除以 IT 设备耗电,越接近 1 越省。
  18. Common Crawl免费公开的网页抓取数据,后来成了大模型训练语料的底子。
  19. RDMAP让机器直接读写对方公布的缓冲区,少复制、少占 CPU。
  20. Roofline把计算上限和内存带宽放在一起,看程序卡在哪一头。
  21. Fat-tree用许多一样的普通交换机,让上万台主机都能全速互通。
  22. 仓库级计算服务器、网络、供电和冷却,要当成一台机器来设计。
  23. ImageNet按 WordNet 的概念层次收集图片,再请人核验候选图。
  24. Netflix Prize给每个用户、每部电影各学一个向量,内积就是预测评分。
  25. Theano用 Python 写表达式,它自动求导,再编译成 C++ 或 CUDA。
  26. HDFS一台机器管目录,许多台机器存数据块,坏一台也不丢。
  27. AMD GCN换掉 VLIW,少靠编译器,图形和通用计算都顾得上。
  28. 22 纳米三栅晶体管电流通道竖成一道薄鳍,栅极从三面包住它。

2012 – 2015

深度网络起飞

AlexNet 在 ImageNet 上大幅领先,深度网络很快用到了语音、翻译和游戏上。训练框架和集群调度也跟着成熟。

  1. AlexNet不再手工设计图像特征,交给卷积网络自己学。
  2. 多列 GPU CNN几个用 GPU 训练的深度 CNN 一起投票,交通标志认得比人还准。
  3. Spark RDD数据留在内存里反复用,丢了就照着来历重算。
  4. 深度声学模型四个团队都发现:把 GMM 换成深度网络,语音识别更准。
  5. DQN神经网络直接看 Atari 游戏画面,估计每个动作值多少。
  6. word2vec把训练任务做简单,好用上大量文本学词向量。
  7. Seq2Seq先把输入编码,再生成输出,长短不一的序列都能学。
  8. 翻译里的 attention译每个词之前,先回头看原句的每个词,按需取用。
  9. 参数服务器参数分片存在服务器上,工作节点推梯度、拉新参数。
  10. Adam给每个参数分别记梯度和梯度平方的平均,各自定步长。
  11. GAN一个网络造样本,另一个网络辨真假,两边一起练。
  12. ResNet每组层只学“改多少”,再把原来的输入加回去。
  13. Borg在线服务和批处理混着跑,用不上的资源回收给批处理。
  14. Kubernetes 1.0调度、扩缩容和健康检查,都收到集群这一层来管。
  15. HBMDRAM 叠起来进了 GPU 封装,带宽靠宽接口和短连线。
  16. Faster R-CNN让网络自己提候选框,提框从约 2 秒降到约 10 毫秒。
  17. U-Net先缩小抓上下文,再放大还原位置,很少的图也能训好。
  18. TensorFlow运算、参数和更新都是图里的节点,由运行时分到各台机器上。

2016 – 2018

几条路同时展开

AlphaGo 赢了李世石,Transformer 和 BERT 改写了语言任务。专用芯片、新框架,还有给数据和模型写说明书的做法,都在这几年出现。

  1. 图卷积网络 GCN把节点特征和连接关系放在一起,标签很少也能分类。
  2. AlphaGo一个网络挑值得考虑的几步,另一个直接估胜率。
  3. 联邦学习训练数据不出手机,只把模型更新传回服务器。
  4. WaveNet直接生成声音波形,用感受野内的历史预测下一个采样点。
  5. GNMT中译英全部换成神经翻译,每天约 1800 万次。
  6. YouTube 深度推荐从几百万个视频里先挑出几百个,再按预计观看时长排序。
  7. SQuAD十万多道人写的阅读题,答案都得是原文里的一段。
  8. NVLinkGPU 之间有了专用通道,不必都挤在 PCIe 上。
  9. HNSW从稀疏的上层图往下层走,很快找到近似最近邻。
  10. GraphSAGE不再给每个节点存一份向量,改学一个从邻居算表示的函数。
  11. GAT用 attention 决定每个邻居占多大分量,再汇总信息。
  12. Transformer不用循环,通过 attention 连接序列中的位置。
  13. PPO用裁剪压住策略大幅更新的动力,实现起来也不难。
  14. VoltaV100 加入 Tensor Core,专门做矩阵乘加。
  15. TPU v1语音识别可能让数据中心翻倍,Google 自己做了推理芯片。
  16. 稀疏混合专家成百上千个专家网络待命,每个位置只挑几个来算。
  17. PyTorch张量运算写一句就执行一句,还能自动求导、用 GPU 加速。
  18. Ring-allreduce每块 GPU 只和相邻的卡收发小块数据,带宽不会挤在一处。
  19. 从人类偏好学习人只要比较两段行为哪段更好,模型就从中学出奖励。
  20. ELMo同一个词放进不同句子,得到的向量也不一样。
  21. BERT遮住句子里的词让模型猜,学到的表示再拿去做别的任务。
  22. SAC把最大熵和旧数据重用合在一起,学取值连续的动作。
  23. Datasheets数据为什么收集、怎么标注、能用在哪,都要写下来。
  24. Model Cards模型说明别只给一个总分,用途、表现和限制都要写清。
  25. Gender Shades深肤色女性错误率达 34.7%,浅肤色男性至多 0.8%。
  26. Horovod每张卡跑同一份程序,梯度在卡之间直接求平均。
  27. TVM把模型当程序来编译,自动给每种硬件生成算子代码。
  28. GLUE把九个语言理解任务放在一起考,取平均当总分。
  29. TPU v3 液冷每颗芯片 450 W,Google 为这代 TPU 改用液冷。

2019 – 2021

模型越做越大

数据、模型和算力一起往上加,GPT-3 看几个例子就能做新任务。AlphaFold 2 在蛋白质结构预测上往前迈了一大步。

  1. ZeRO不再让每张 GPU 都存一整份训练状态。
  2. Megatron-LM把每层的矩阵乘法切开,分到同一台机器的几张卡上。
  3. EUV 光刻改用 13.5 纳米的极紫外光,细线条一次就能印出来。
  4. RDNA它为游戏图形的效率,重新组织了计算单元。
  5. Hugging Face Transformers各家预训练模型收进一个库,一个调用就能加载。
  6. Triton程序员按“块”写计算,线程和内存的细节交给编译器。
  7. GPT-3在提示里放几个示例,模型就照着做,不用重新微调。
  8. 缩放定律损失随模型、数据和算力按幂律下降,可以提前算出来。
  9. RAG生成模型配一个文档索引,答案有出处,知识也能更新。
  10. ViT图像切成小方块排成序列,交给 Transformer 读。
  11. Diffusion从一团噪声出发,一步步去噪,最后生成样本。
  12. AlphaFold 2在 CASP14 上,它让蛋白质结构预测往前跨了一大步。
  13. Ampere A100矩阵单元能算更多精度,一颗 A100 最多能切成七份。
  14. CDNAAMD 把面向计算的架构从图形线里分出来,单独走。
  15. MMLU用 57 个学科的选择题,考模型预训练时学到了多少知识。
  16. Waymo在凤凰城,普通乘客可以叫到驾驶座上没人的车。
  17. Codex 与 Copilot拿 GitHub 代码训的模型,在编辑器里补整行、整个函数。
  18. CLIP要识别什么,用一句话描述就能定下来。
  19. LoRA在每层加低秩矩阵来训练,可训练参数少一万倍。

2022 – 2023

生成模型走向大众

Stable Diffusion 公开权重,ChatGPT 开放对话界面,让更多人直接用上生成模型。随着使用规模扩大,回答是否有用、服务能否又快又便宜,变得更受关注。

2024 – 2026还在发生

想得更久,也开始动手

从 2024 年起,模型被教着在回答前多想一会儿:2025 年在数学奥赛上写出金牌线的证明,2026 年开始解决没人解开的问题。它们也开始读仓库、调工具,替人做完整件事,有的还能自己找出软件漏洞。算力和电力跟着成了要算的账,数据中心用电预计到 2030 年翻倍。

  1. o1用强化学习教模型先写一长串思路,再给答案。
  2. GRPO同一道题答几遍,拿它们互相比,省掉价值模型。
  3. Gemini 1.5上下文从 3.2 万词元拉到 100 万,研究里试到了 1000 万。
  4. DeepSeek-V3每个词只用到一小部分参数,整套训练用 FP8 跑完。
  5. MCP数据源做成 MCP 服务器,AI 应用当客户端,接一次就能通用。
  6. GB200 NVL7272 块 Blackwell GPU 用 NVLink 连成一体,装进一个液冷机柜。
  7. AlphaFold 3把蛋白质、DNA、RNA 和小分子放在一起,预测它们怎么结合。
  8. 诺贝尔奖物理奖颁给神经网络的奠基工作,化学奖颁给蛋白质设计与结构预测。
  9. Llama 3.1最大的 405B 版本也能下载权重,自己部署、自己微调。
  10. 欧盟 AI 法案分阶段生效;通用模型的提供者要留存训练和测试文档。
  11. DeepSeek-R1一份报告对照两种做法:直接上 RL,和先备数据再分阶段训。
  12. IMO4.5 小时内读题、写证明,6 道题做对 5 道。
  13. 编程 agent模型自己读仓库、改文件、跑测试,再交给人审。
  14. IEA《能源与 AI》2024 年数据中心用了全球约 1.5% 的电,到 2030 年预计翻倍。
  15. Genie 3输入一段文字,生成一个能实时走动的 720p 世界。
  16. 后训练配方SFT、DPO、PPO、GRPO 各有取舍,配方还在摸索。
  17. DeepSeek-V4改了注意力,长上下文的 KV cache 只剩一成;权重按 MIT 许可开放。
  18. TPU 8t 与 8i同一代 TPU 拆成两颗:一颗管训练,一颗管推理。
  19. AI 做数学研究通用推理模型推翻了 Erdős 问题上的一个猜想,Lean 替机器证明把关。
  20. 网络安全能力过线模型能自己找出并利用未知漏洞后,几家公司改了发布方式。

电力与机房 · 供电系统

珍珠街电站一座电站供一片街区

1882 年,纽约珍珠街电站开始给曼哈顿下城的一个街区供电。电从一座中心电站出发,经地下线路送进好几栋楼。这些楼用的是同一套直流电。

细节

留下的问题

它只供一个街区的直流电,离今天跨区域的交流电网还很远。

来源 2
  1. Con Edison corporate history (2023), September 4, 1882 entry
  2. Thomas A. Edison Papers: Pearl Street archival headnote

电力与机房 · 供电系统

尼亚加拉把交流电送到远处

珍珠街的直流电只能送到附近几栋楼。1895 年,尼亚加拉瀑布的 Adams 水电站投入运行,用高压交流电把电送到远处,电站从此不必挨着用户。IEEE 把它记作交流电胜过直流电的关键一役。

细节

留下的问题

它解决了把电送远;电从哪里来、电网怎么调度,留给了后来一代代电站和电网。

  • 互补 · 珍珠街电站

    IEEE 把 Adams 电站记作交流电胜过直流电的关键一役;珍珠街供的是直流电。

来源 2
  1. IEEE Milestone · Adams Hydroelectric Generating Plant, 1895
  2. Tesla · US patent 382,280, electrical transmission of power, 1888-05-01

数学与算法 · 计算理论研究

图灵机给“计算”下了定义

1936 年,图灵给“计算”下了一个精确的定义:读写符号,再加上有限条规则。按这个定义,一台通用机器能模拟其他机器。计算也有边界:有些数学问题,没有任何算法能解。

细节

留下的问题

它回答能不能算,没回答算得多快。

来源 2
  1. Turing · On Computable Numbers (received/read 1936)
  2. London Mathematical Society · publication record (1937)

数学与算法 · 计算理论研究

图灵 1950用模仿游戏问机器能否思考

“机器能思考吗”这个问题太含糊,没法研究。1950 年,图灵把它换成模仿游戏:只靠文字交流,提问的人能不能分辨对面是人还是机器。文章还指出数字计算机是通用机器,并设想让机器像孩子一样学习。

细节

留下的问题

模仿游戏测的是像不像人,不等于测出了理解或智能本身。

  • 借用 · 图灵机

    文章第 5 节说,数字计算机能模仿任何离散状态机,所以是通用机器。

来源 1
  1. Turing · Computing Machinery and Intelligence, Mind 59, 1950, §§1, 5, 7

芯片与计算 · 处理器研究

EDVAC 报告把程序存进存储器

一台通用机器要做很长的计算,指令放在哪里?1945 年 6 月,冯·诺伊曼在 EDVAC 报告的草稿里把机器分成运算、控制、存储、输入和输出几部分,并把指令当作存储器要装的内容。这份草稿流传很广,影响了此后许多计算机的设计。

细节

留下的问题

它是一份没写完的草稿,许多工程细节要等真正造机器时才解决。

来源 1
  1. von Neumann · First Draft of a Report on the EDVAC, 1945-06-30 (Godfrey's edited text, IEEE Annals 1993)

芯片与计算 · 器件与制程研究

晶体管用半导体放大信号

电话系统需要可靠的器件。1947 年,贝尔实验室做出点接触晶体管,用半导体器件放大电信号。它是为电话网造的,后来却成了计算机的基础。

细节

留下的问题

点接触晶体管和今天芯片里的 MOS 晶体管,结构差得很远。

来源 2
  1. Bell Labs · transistor history
  2. Bardeen & Brattain · Physical Review 74, 230 (1948), publication record

数学与算法 · 信息与概率研究

信息论给信息找到一把尺子

1940 年代,没人说得清一条有噪声的线路能传多少信息。直觉上,想少出错只能多重复,越传越慢。Shannon 把信息量定义为做选择时的不确定性,叫熵,用比特计。他还证明,每条有噪声的信道都有容量 C:低于 C,编码得当,错误能任意少;高于 C,怎么编都不行。

细节

Shannon 自己举过例子。每秒发 1000 个符号,两种符号各占一半,噪声让每 100 个错 1 个。直觉答案是每秒 990 比特,可接收方不知道错在哪里。按他的算法,实际只有 919 比特每秒。

容量定理只证明好编码存在,没给造法。后来的编码一点点逼近这个界限。1993 年的 Turbo 码论文,标题就叫“接近 Shannon 极限”;1996 年,冷落多年的 LDPC 码被重新发现,在模拟里几乎和 Turbo 码一样接近极限。

留下的问题

熵只管有多少种可能,不管内容真不真、有没有用;噪声变了,容量还得重算。

来源 3
  1. Shannon · A Mathematical Theory of Communication, Bell System Technical Journal, July and October 1948 (reprint with corrections), Introduction, §§6–7, 9, 12–14
  2. Shannon · Prediction and Entropy of Printed English, Bell System Technical Journal, January 1951, §1
  3. MacKay and Neal · Near Shannon Limit Performance of Low Density Parity Check Codes, 1996 preprint for Electronics Letters, abstract and results

数学与算法 · 优化研究

随机逼近带着噪声一步步找答案

有些实验只能一次次试。比如找让一半受试对象起反应的剂量,每次结果都带随机性,反应曲线长什么样也不知道。Robbins 和 Monro 的办法是:看上次的结果,把下次剂量往目标挪一点,步子逐次变小,比如 1/n。他们证明,在一定条件下,这样试下去,剂量会在概率意义下收敛到目标。

细节

拿半数反应剂量来说。第 n 次给剂量 x_n,有反应,下次就降 a_n/2;没反应,就升 a_n/2。步长要满足两条:a_n 的平方加起来有限,a_n 本身加起来是无穷大。1/n 两条都满足。

后来的随机梯度下降(SGD)面对同一类问题:每步只用一个随机样本估梯度,方向带噪声,步长条件也一样。Bottou 2010 年在文本分类上做过对比:达到同样的测试错误率,SGD 用 1.4 秒,SVMLight 用了 23,642 秒。

留下的问题

它保证最终会收敛,却不告诉你要试多少次才够。

来源 2
  1. Robbins and Monro · A Stochastic Approximation Method, Annals of Mathematical Statistics 22(3), September 1951, §§1–5
  2. Bottou · Large-Scale Machine Learning with Stochastic Gradient Descent, 2010, author's PDF, §§2.2, 5 and Figure 1

数学与算法 · 信息与概率研究

Metropolis 方法按概率决定走不走

从分子间作用力算压强,得对所有分子的位置积分。平面上几百个粒子,就是几百维的积分,网格法和随机撒点都不行。Metropolis 等五人改成每次随机挪一个粒子:能量降了就接受,升了按概率接受,否则退回原位。这样走下去,各构型的频率趋向正确的分布,直接平均即可。

细节

接受规则可以拿数感受一下。能量升高 1 个 kT,接受的概率约 37%。升高 3 个 kT,只有约 5%。所以系统多半往低处走,偶尔也爬坡。被拒绝的移动也要计数,把原构型再记一次,否则有些状态会被算少。

1983 年,Kirkpatrick、Gelatt 和 Vecchi 把这套规则搬到优化上:用成本代替能量,先在高温下“熔化”,再慢慢降温,叫模拟退火。只接受改进的搜索容易困在局部最优,Metropolis 规则允许有控制地往上走几步。

留下的问题

它能证明最终会趋向正确的分布,却说不出要走多久。

来源 2
  1. Metropolis, Rosenbluth, Rosenbluth, Teller and Teller · Equation of State Calculations by Fast Computing Machines, Journal of Chemical Physics 21(6), June 1953, §§I–IV, VI
  2. Kirkpatrick, Gelatt and Vecchi · Optimization by Simulated Annealing, Science 220, 13 May 1983, introduction and statistical-mechanics section

数学与算法 · 搜索与规划研究

动态规划把多步决策拆开算

排产、进货、换设备,都要连着做很多步决策,每一步都会改变后面的局面。老办法是列出所有决策序列逐个算,阶段和选择稍多,有时连当时的计算机都吃不消。Bellman 只要一条规则,说清每个状态下该怎么做。他用最优性原理写出递推方程,把大问题拆成一步步的小问题。

细节

差别能数出来。10 个阶段、每步 10 种选择,完整的决策序列有 10¹⁰ 种。Bellman 只问:从眼下的状态出发、还剩 N 步,最好能拿多少?第一步走到新状态后,剩下的最好结果就是还剩 N−1 步的答案,所以只需比较第一步的几种选择。

后来的强化学习直接借了这套框架。Watkins 和 Dayan 1992 年的论文说,Q-learning 可以看作异步的动态规划:它不用事先知道奖励和状态转移概率,靠一次次尝试,逐步改进每个状态下每个动作的估值。

留下的问题

每个可能的状态都要算出一个值;描述状态的变量一多,要算要存的东西也跟着变多。

来源 2
  1. Bellman · The Theory of Dynamic Programming, Bulletin of the AMS 60(6), November 1954, §§1–5, 7–8, 12 and bibliography
  2. Watkins and Dayan · Q-learning, Machine Learning 8, 1992, abstract and §1

内存与存储 · 内存与缓存系统

磁芯存储用磁化方向存一位

1950 年代初,MIT 的 Whirlwind I 用静电存储管当内存,管子很难伺候,毛病反复出现。磁芯存储用小磁芯的磁化方向存一位,横竖导线按坐标选中它。1953 年 8 月和 9 月先后换上两组磁芯,存取时间从约 25 微秒降到 9 微秒,维护时间也少了。

细节

按坐标选中靠的是“半电流”。Forrester 的专利里,每根导线只通翻转所需电流的一半。只在一根通电导线上的磁芯,电流不够,不会翻转;横竖两根导线交叉处的那一个收到两份,才会翻转。

代价是读出会毁掉内容:读一个磁芯要把它翻转,原来的信息不另存就丢了。Whirlwind 的办法是读完马上写回去。写回产生的瞬态电流会干扰读出放大器,于是又设计了恢复更快的放大器。

留下的问题

读出后必须重写的麻烦还在,读写电路的干扰也得靠改进放大器来对付。

来源 6
  1. Project Whirlwind Summary Report No. 35, third quarter 1953, §§1, 3.1, 3.3 (bitsavers scan)
  2. Project Whirlwind Summary Report No. 37, first quarter 1954, introduction and §3.1 (bitsavers scan)
  3. Forrester · US Patent 2,736,880, filed 1951-05-11, granted 1956-02-28
  4. An Wang · US Patent 2,708,722, filed 1949-10-21, granted 1955-05-17
  5. Amdahl, Blaauw & Brooks · Architecture of the IBM System/360, April 1964, p. 96 and Figure 1
  6. Liptay · System/360 Model 85 cache, IBM Systems Journal 7(1), 1968, pp. 15–16

人、协作与责任 · 研究社区研究

Dartmouth一群人聚到 AI 名下

1955 年,一份提案为第二年的 Dartmouth 项目列出了要研究的问题:学习、语言、推理。从这时起,一群研究者开始围绕 AI 这个名字组织工作。机器会不会有智能,这个问题早有人想过;新的是这个名字,和聚在它下面的这群人。

细节

留下的问题

当时好几条路线同时在走,没有哪条注定通向今天的大模型。

  • 互补 · 信息论

    香农在提案里写的那部分,是把信息论用到计算机和大脑模型上。

  • 互补 · Logic Theory Machine

    1956 年的 Dartmouth 会上,Newell、Shaw 和 Simon 介绍了他们写 Logic Theorist 用的表处理语言 IPL 2。

  • 互补 · LISP

    McCarthy 回忆,他想要一门做 AI 用的代数式表处理语言,这个念头起于 1956 年夏天的 Dartmouth 会议。

来源 2
  1. Dartmouth proposal · 1955
  2. McCarthy · History of Lisp, 1979, "LISP prehistory"

模型与学习 · 符号推理研究

Logic Theory Machine用经验法则找证明

1956 年,Newell 和 Simon 在一份报告里写下一个系统的规格,用来寻找符号逻辑的证明。往哪个方向搜,由启发式决定,也就是一些经验法则。整个推理过程,被写成了计算机能实现的规则。

细节

留下的问题

报告主要写的是系统规格,还没讲它在计算机上怎么实现。

来源 1
  1. Newell & Simon · RAND P-868 (1956), original report and abstract

应用与产品 · 科学与医疗系统

Heuristic DENDRAL把看谱经验写进程序

化学家要从质谱图倒推出分子结构。原来的 DENDRAL 算法能列全所有无环结构,但只按原子价拼图,不看实测数据。Heuristic DENDRAL 把看谱的经验写进程序:先按特征峰定下该有、不该有的片段,只生成合格结构;再预测每个候选的谱图,和实测谱比对排序。

细节

论文的例子是 3-辛酮。光按原子价能连出 790 种图,化学上稳定的无环结构有 698 种。程序看谱峰判断它是乙基酮,把醇、醚、醛和其他几种酮放进“不能有”的清单。最后只生成 3 个结构,正确的那个就在其中。

1984 年回顾时,Buchanan 和 Shortliffe 写道,MYCIN 借用了 DENDRAL 的经验,头一条就是产生式规则好用,也就是“如果……那么……”式的规则。

留下的问题

它只在少数几类分子上接近化学家,碰到环状结构就吃力,常给出好几个候选。

  • 互补 · MYCIN

    Buchanan 和 Shortliffe 说 MYCIN 脱胎于 DENDRAL,沿用了它编码知识的经验。

来源 3
  1. Buchanan, Sutherland & Feigenbaum · Heuristic DENDRAL, Machine Intelligence 4 (Edinburgh University Press, 1969), pp. 209–254 · scan in the NLM Joshua Lederberg Papers, introduction and §§1, 3.5, 6
  2. NLM catalog record for the same paper
  3. Buchanan & Shortliffe (eds.) · Rule-Based Expert Systems, 1984, chapter 1 (author-hosted)

应用与产品 · 科学与医疗系统

MYCIN把专家知识写成规则

1975 年的系统报告里,MYCIN 把领域知识写成一条条规则。它能解释自己给出的建议,也能接收新加的规则。这种做法叫知识工程:把专家知道的东西,整理成机器能用的规则。它当时是一个研究系统。

细节

留下的问题

知识怎么持续维护,规则没覆盖到的情况怎么办,它都没解决。

来源 1
  1. Shortliffe et al. · 1975

模型与学习 · 统计学习研究

贝叶斯网络在依赖图上传递信念

证据不确定时,推理容易前后矛盾。1985 年,Pearl 用一张依赖图表示变量之间的关系,让每个节点只和邻居传递消息,最后收敛到全局一致的信念。这成了概率图模型的基础。

细节

留下的问题

图里有环时,局部传消息不一定收敛,精确推理也可能很难算。

  • 互补 · MYCIN

    MYCIN 的主要作者 Shortliffe 和 Heckerman 后来写道,贝叶斯网络克服了 MYCIN 确定性因子的许多局限,他们的实验室也早已不再用确定性因子。

  • 互补 · HMM

    Smyth、Heckerman 和 Jordan 把 HMM 画成一张贝叶斯网络,Rabiner 讲的前向-后向和 Viterbi 算法,都是图上通用推理的特例。

来源 4
  1. Pearl · Bayesian Networks: A Model of Self-Activated Memory for Evidential Reasoning, UCLA CSD-850017, April 1985
  2. Same paper · Cognitive Science Society proceedings, 1985
  3. Heckerman & Shortliffe · From Certainty Factors to Belief Networks, Artificial Intelligence in Medicine, 1992
  4. Smyth, Heckerman & Jordan · Probabilistic Independence Networks for Hidden Markov Probability Models, Neural Computation 9, 1997

网络与互连 · 互联网与 Web研究

分组交换把消息切成小块各自寻路

集中式或分层的网络,关键节点一坏就会断。1964 年,兰德公司的 Baran 提出分布式网络:消息切成标准大小的块,每个节点先存下再转发,按自适应路由绕开坏掉的节点和线路。十几年后的 Ethernet 论文,题目里就写着“分组交换”。

细节

留下的问题

每一跳都要存储再转发,延迟和拥塞留给了后来的协议去处理。

来源 1
  1. Baran · On Distributed Communications, RAND RM-3420, 1964

网络与互连 · 局域网与集群互连研究

低损耗光纤用纯净玻璃把光送远

1960 年代的光纤只能把光信号传 20 米左右。1966 年,在英国 STL 工作的高锟算出:用最纯的玻璃,光信号能传 100 公里。四年后的 1970 年,第一根超纯光纤做了出来,2009 年他因此获得诺贝尔物理学奖。

细节

留下的问题

光纤解决了传输,路由和交换仍在电子设备里完成。

来源 1
  1. Nobel Prize in Physics 2009 · press release, 2009-10-06

网络与互连 · 互联网与 Web系统

ARPANET远程登录另一台主机

1969 年 10 月,UCLA 的团队试着通过 ARPANET 登录斯坦福研究所的主机。第一次只传出“lo”就崩溃了,完整的登录后来才成功。远程登录让相隔很远的计算机能真正交互,跨机构共用计算资源也就有了试验的条件。

细节

留下的问题

第一次尝试只传出 “lo” 就崩了;那时它还只是研究网络,离大众用的互联网还很远。

  • 用到 · Dijkstra

    从 1979 年 5 月起,ARPANET 每个节点都用基于 Dijkstra 算法的最短路径优先来算路由。

来源 2
  1. Leonard Kleinrock: UCLA IMP log and participant account of October 29, 1969
  2. McQuillan, Richer & Rosen · The New Routing Algorithm for the ARPANET, IEEE Trans. Communications, 1980

网络与互连 · 局域网与集群互连研究

Ethernet一根电缆大家共用

1976 年,Metcalfe 和 Boggs 发表论文,讲附近的计算机怎样共用一根同轴电缆收发数据包。什么时候发,由各台机器自己决定;两台撞上了,就各自重发。这样,局域网不需要一个中央控制器来安排每次发送。

细节

留下的问题

论文写的还是一个实验性的共享电缆网络。

  • 互补 · ARPANET

    Metcalfe 和 Boggs 把以太网放在 ARPA 网络的分组交换与资源共享工作之后。

  • 互补 · 分组交换

    Ethernet 论文的题目就是“局域网的分布式分组交换”,开头还说 ARPA 网络推动了把计算机当分组交换机来用。

  • 互补 · 低损耗光纤

    Ethernet 论文说,作为传输介质的 Ether 可以用同轴电缆、双绞线或光纤来做。

来源 2
  1. Metcalfe and Boggs: original CACM paper, July 1976 (Cambridge scan)
  2. Computer History Museum: May 22, 1973 Ethernet memo archival account

网络与互连 · 互联网与 Web系统

TCP/IP让不同网络说同一种话

为了把用不同通信技术的网络连起来,ARPANET 把 1983 年 1 月 1 日定为从 NCP 切换到 TCP/IP 的目标日期。有了共同的协议,远程登录、文件传输和邮件都能跨过原来的网络边界。1983 年的主机调查,记下了这些服务实际跑起来的情况。

细节

留下的问题

切换日到了,还有主机没准备好;2 月的调查里,仍有服务没有响应。

  • 借用 · ARPANET

    RFC 801 规划把正在运行的 ARPANET 从原来的主机协议迁到 TCP/IP。

来源 2
  1. Jon Postel: RFC 801 transition plan, November 1981
  2. David Smallberg: RFC 842 operational survey, February 1983

系统软件 · 语言与编译器系统

FORTRAN让程序照着公式写

1950 年代给 IBM 704 编程,得一条条手写机器指令。FORTRAN 团队说,解一道科学计算题,约三分之二的成本花在准备程序上。多数程序员也不信机器写的代码能和手写的一样快。FORTRAN 让人照着公式写,翻译程序生成机器码,代码效率是核心目标。

细节

论文里有个例子,作者自己也说说明不了太多。一位程序员上了一天 FORTRAN 课,用四小时写出 47 条语句。704 花六分钟,把它编译成约 1000 条机器指令。他估计手写要三天,调试还不算。

留下的问题

它只为 IBM 704 而写;在它之前已有别的公式翻译系统在运行,只是大多不追求优化。

  • 借用 · EDVAC 报告

    Backus 后来把 FORTRAN 这类语言叫作“冯·诺伊曼语言”:变量模仿存储单元,赋值模仿一次次取数和存数。

来源 5
  1. Backus et al. · The FORTRAN Automatic Coding System, 1957 Western Computer Proceedings, pp. 188–198
  2. Backus · FORTRAN session transcript, ACM History of Programming Languages conference, 1978
  3. MPI Forum: early standard scope, language bindings
  4. Harris et al. · Array programming with NumPy, arXiv v1, 2020-06-18, section on NumPy arrays
  5. Backus · Can Programming Be Liberated from the von Neumann Style?, 1977 Turing Award lecture, CACM 21(8), August 1978, §§3–4

系统软件 · 语言与编译器研究

LISP给符号推理一门语言

要让程序推理,就得处理符号,而不只是数字。1960 年 4 月,McCarthy 发表 LISP 的论文:用递归函数处理符号表达式,最早在 IBM 704 上为“建议接受者”实验而写。十年后,造 Shakey 机器人的团队仍把它当作主要编程工具。

细节

留下的问题

它方便写符号推理,数值计算还是交给 FORTRAN 这样的语言。

来源 1
  1. McCarthy · Recursive Functions of Symbolic Expressions and Their Computation by Machine, CACM, April 1960

系统软件 · 操作系统与开源系统

Unix一套能开发自己的系统

1969 年,贝尔实验室的一个团队想保住交互式的编程环境,就在 PDP-7 上做了一套系统,后来叫 Unix。文件系统、进程和命令解释器一点点长成一个能开发自身的环境。写程序和日常用工具,都在这同一套环境里。

细节

留下的问题

1969 年它才刚动工,连名字都还没有。

来源 1
  1. Dennis Ritchie: Unix evolution, participant history presented 1979, published 1980, reprinted 1984

系统软件 · 语言与编译器系统

C用高级语言重写 Unix 内核

Unix 起初用汇编写。Thompson 做的高级语言 B 没有类型,数据全是机器字,在按字节寻址的 PDP-11 上处理字符和指针很别扭。Ritchie 从 1971 年起给 B 加字符类型、数组、指针和结构,改名叫 C。1973 年夏天,内核用 C 重写。

细节

看一个字符串就明白差别。B 只有“字”,几个字符打包塞进一个字里;想逐个处理,得调库函数拆开,处理完再装回去。C 有了 char 类型,第 i 个字符就是一个字节,可以直接读。

留下的问题

Ritchie 说 C 古怪、有缺陷:声明要由内向外读,数组和指针的关系常让初学者卡住。

  • 互补 · Unix

    C 与早期 Unix 同时发展;1973 年夏,PDP-11 上的 Unix 内核用 C 重写。

来源 4
  1. Dennis Ritchie · The Development of the C Language, HOPL-II, April 1993 (author's page)
  2. Same paper · CS:APP mirror used for reading
  3. MPI Forum: early standard scope, language bindings
  4. Harris et al. · Array programming with NumPy, arXiv v1, 2020-06-18, history and array layout

系统软件 · GPU 编程与框架系统

BLAS一套人人调用的基础运算

数值程序里反复出现同样的向量运算,每个库各写一遍,又慢又难移植。1979 年,Lawson 等人把它们定成一套标准子程序 BLAS,后来又扩展到矩阵与向量、矩阵与矩阵的运算。各家厂商针对自己的硬件优化同一套接口,LAPACK 这样的库就建在它上面。

细节

留下的问题

它只管基础运算,解方程、求特征值要靠上面的 LAPACK 等库。

来源 2
  1. Netlib · BLAS (Basic Linear Algebra Subprograms)
  2. Netlib · BLAS FAQ (Lawson et al., ACM TOMS 5, 1979)

系统软件 · 操作系统与开源系统

GNU让软件可以自由分享

1983 年 9 月,Richard Stallman 宣布 GNU 计划,要做一套可以自由分享、和 Unix 兼容的系统。内核、编译器、编辑器和命令行工具都在计划里。目的是让大家协作时,不必再依赖禁止分享的软件。

细节

留下的问题

发公告时只有计划,没有现成的系统或编译器,真正动手要到 1984 年 1 月。

来源 1
  1. GNU: original September 27, 1983 announcement with project historical notes

内存与存储 · 存储产品

RAMAC 磁盘直接找到任意一条记录

穿孔卡片记账,要先人工分拣,再成批过机器,一个库存例子要过七台机器。难的是在大文件里直接改动单独一条记录。IBM 350 磁盘把 50 张金属盘叠在一根竖轴上,存取臂能移到任意一张盘的任意一道磁道。500 万个字符分成 5 万条记录,哪一条都能直接取出。

细节

手册按每次读盘约 600 毫秒估时。平均每张发票三项商品,一小时能处理约 450 张,相关记录同时更新。操作员还能在控制台用键盘查任一账户,几乎马上拿到当前余额。

留下的问题

找记录变成了机械寻道,还是得等:手册估约 600 毫秒,工程师回忆实际约 800 毫秒。

  • 互补 · 关系模型

    IBM 的历史页面说,RAMAC 的随机存取磁盘为关系数据库铺了路;这是 IBM 自己的说法。

  • 用到 · 磁芯存储

    RAMAC 的每一次数据传送,都经过一个 100 字符的磁芯存储单元。

来源 3
  1. IBM 305 RAMAC Manual of Operation, Form 22-6264-1, April 1957, pp. 5–13 and 59 (bitsavers scan), p. 18
  2. IEEE Milestone · RAMAC, 1956 (ETHW record: dates and capacity)
  3. IBM History · RAMAC (IBM's account, access-time recollection)

内存与存储 · 内存与缓存系统

Atlas 虚拟内存两层存储看起来像一层

快的磁芯存储小,慢的磁鼓大,程序员得自己决定什么时候把代码和数据搬进搬出。1962 年,曼彻斯特的 Atlas 让硬件和监控程序自动完成这件事,在用户看来只有一层存储,这就是虚拟内存。六十年后,vLLM 用同样的分页思路管理 KV cache。

细节

留下的问题

要用的内容不在快存储里时,程序还是得停下来等慢存储。

来源 1
  1. Kilburn, Edwards, Lanigan & Sumner · One-Level Storage System, IRE Trans. EC-11(2), April 1962 (CHM reprint)

内存与存储 · 内存与缓存研究

单晶体管 DRAM晶体管加电容存一位

1967 年,Dennard 提交了一项专利,描述一种存储单元:一个晶体管控制一个电容的充放电,电容里的电荷就代表一位信息。每个单元用的器件少了,同一颗芯片上就能排下更密的存储阵列。

细节

留下的问题

电荷会慢慢漏掉,所以每个单元都得定期刷新。

  • 互补 · 磁芯存储

    专利拿要刷新的电容存储,和磁芯这类断电也能保持的存储对比。

  • 用到 · MOSFET

    Dennard 的单管 DRAM 专利题为“场效应晶体管存储器”,每一位用一个场效应管加一个电容存储。

来源 1
  1. Dennard, US3387286A: filing, abstract and claims

内存与存储 · 内存与缓存系统

Model 85 缓存硬件自己管快慢存储

处理器常要等慢速的主存。IBM System/360 Model 85 加了一块小而快的缓存,存放主存里正在用的内容。数据什么时候装入、什么时候替换,都由硬件自动完成,程序不用管这一层。

细节

留下的问题

缓存没命中时,还是得回主存去取。

  • 用到 · System/360

    Model 85 是 System/360 的一个型号。Liptay 写道,缓存的装入和替换必须不靠程序参与,因为 Model 85 要与 System/360 的其他型号兼容。

来源 1
  1. Liptay, IBM Systems Journal 7(1), 1968, pp. 15–21; original paper scan

芯片与计算 · 器件与制程研究

集成电路把整个电路做进一块半导体

以前的电路由一个个分立元件和导线组装而成。1959 年,Kilby 申请的专利把电路的全部元件做进同一块半导体;同年 Noyce 的专利在氧化层上沉积金属引线,把元件连起来。Moore 1965 年的预测,讲的就是这种集成电路。

细节

留下的问题

元件越挤越密,怎么散热、怎么把线做得更细,留给了后来几十年。

  • 用到 · 晶体管

    Kilby 的专利把晶体管、二极管、电阻和电容都做进同一块半导体。

来源 2
  1. Kilby · US patent 3,138,743, filed 1959-02-06
  2. Noyce · US patent 2,981,877, filed 1959-07-30

芯片与计算 · 器件与制程研究

MOSFET隔着氧化层用电场控制电流

1960 年 5 月,Kahng 申请专利:在硅上热生长一层二氧化硅,再在上面放电极,用电场控制下面的电流。这就是 MOSFET。后来的单管 DRAM 和 Dennard 的缩放规则,都建立在这种器件上。

细节

留下的问题

器件越做越小,漏电和发热越来越难控制。

来源 1
  1. Kahng · US patent 3,102,230, electric field controlled semiconductor device, filed 1960-05-31

芯片与计算 · 处理器系统

System/360大小机器跑同一套程序

IBM 原有五条产品线,字长和十进制运算方式各不相同。1964 年的 System/360 把程序员看到的机器和具体实现分开:六个型号性能差约 50 倍,指令集却严格一致。内存和外设够用时,按手册写的程序大小型号都能跑。一个家族取代了原来五条产品线。

细节

型号之间差多少?最小的 Model 30 每次从主存取 8 位,周期 2.0 微秒。最大的 Model 70 每次取 64 位,周期 1.0 微秒。16 个通用寄存器在 Model 30 上就放在主存里,程序员看到的却始终是同一组。

字符为什么用 8 位,不用 6 位?商业记录里数字出现的次数,是带字母数据的两倍多。一个十进制数字只占 4 位,存储、磁带和磁盘都更省。

留下的问题

它只保证合乎手册、不依赖执行时间的程序;IBM 旧机器上的程序不在保证之内。

来源 4
  1. Amdahl, Blaauw & Brooks · Architecture of the IBM System/360, IBM J. Res. Dev. 8(2), April 1964, pp. 87–96 and Figure 1 (course-hosted scan)
  2. Same paper · IEEE Xplore record, pp. 87–101
  3. IBM History · System/360 (launch date, product lines, IBM's account)
  4. Liptay · System/360 Model 85 cache, IBM Systems Journal 7(1), 1968, p. 15

芯片与计算 · 器件与制程研究

Moore 1965最省钱的元件数年年翻倍

1965 年,集成电路刚用进商用计算机。一块电路里元件放得越多,每个越便宜;放太多,成品率下降,成本又回升,所以总有一个最省钱的数。Moore 指出,这个数大约每年翻一倍:当时约 50 个,到 1975 年会达到 65,000 个。他还预言了家用计算机。

细节

65,000 个元件放得下吗?Moore 算了笔账:按当时的公差,晶体管可以每隔千分之二英寸放一个,一英寸 500 个,一平方英寸 25 万个。65,000 个只占约四分之一平方英寸,用现有的光学工艺就够。这里的“元件”也包括电阻和二极管。

留下的问题

这是拿几年数据做的外推,Moore 自己也说,长期走势有点不确定。

  • 用到 · 集成电路

    Moore 1965 年的文章预测的就是集成电路:一块电路上最省钱的元件数会怎样增长。

来源 2
  1. Moore · Cramming more components onto integrated circuits, Electronics, 1965-04-19; Proc. IEEE 86(1) reprint, 1998
  2. Same reprint · full text, course-hosted copy, pp. 82–85

芯片与计算 · 处理器产品

Intel 4004把 CPU 做进一颗芯片

1971 年,Intel 4004 把四位运算器、寄存器和执行程序的功能做进了一颗 CPU 芯片。程序放在外面的存储器里。同一颗处理器,换一套程序,就能用在不同的控制设备上。

细节

留下的问题

程序还得放在外部 ROM 里,它还算不上一台完整的单芯片计算机。

  • 互补 · Moore 1965

    Moore 在 2003 年的回顾报告里,把 4004 放在他集成度和处理器性能曲线上微处理器那一段的起点。

  • 用到 · 集成电路

    MCS-4 的发布广告把这套芯片组介绍为四颗新的集成电路。

来源 2
  1. Intel MCS-4 announcement, 1971-11-15; original advertisement archive
  2. Moore · No Exponential Is Forever, ISSCC plenary, 2003-02-10 (ETHW archive)

芯片与计算 · 器件与制程研究

Dennard 缩放越做越小,功率密度不变

MOSFET 要缩小,怎样缩才还能正常工作?1974 年,IBM 的 Dennard 等人给出一套比例规则:尺寸和电压一起按同一个比例缩小,器件更快,单位面积的功耗却不变。同样大小的芯片能放下更多电路,发热却不跟着变多。

细节

留下的问题

它要求电压跟着降;电压降不动时,功率密度就会上升。

  • 用到 · MOSFET

    这篇论文给出 MOSFET 按比例缩小的规则:尺寸、电压一起缩,功率密度不变。

来源 2
  1. Dennard et al. · Design of Ion-Implanted MOSFETs with Very Small Physical Dimensions, IEEE JSSC SC-9(5), 1974
  2. IBM Research · publication record

芯片与计算 · 处理器研究

RISC用精简指令集造处理器

指令集越加越复杂,实际跑的却大多是几条简单指令:一个 IBM 360 编译器里,10 条指令就占了 80% 的执行。1980 年,Patterson 和 Ditzel 主张,单芯片的 VLSI 处理器应该围绕精简的指令集来设计。

细节

留下的问题

指令简单了,程序会变长,更多负担转给了编译器。

  • 互补 · System/360

    RISC 论文引用一个 IBM 360 编译器的统计:10 条指令占了 80% 的执行。

来源 1
  1. Patterson & Ditzel · The Case for the Reduced Instruction Set Computer, SIGARCH CAN, 1980

数学与算法 · 搜索与规划研究

Dijkstra由近到远定下最短路

1959 年,Dijkstra 给出一种算最短路的顺序。每一步,从还没处理的点里挑出距离最短的那个定下来,再更新它邻居的距离。这样一点点往外推,不用把所有可能的路径都列一遍。

细节

留下的问题

边的长度不能是负数,否则这个做法就不成立。

来源 1
  1. Dijkstra · A Note on Two Problems in Connexion with Graphs (1959)

数学与算法 · 信息与概率研究

卡尔曼滤波边测量边修正估计

维纳滤波要求统计特性不变,算起来也麻烦。1960 年,卡尔曼换成状态空间的写法:每来一个新测量,就递推地更新一次状态估计和它的误差协方差,不用保存全部历史。它后来成了导航和机器人里的标准工具。

细节

留下的问题

原始形式假设系统是线性的、噪声是高斯的,非线性问题要另作近似。

来源 1
  1. Kalman · A New Approach to Linear Filtering and Prediction Problems, J. Basic Engineering 82, 1960

数学与算法 · 数值计算研究

FFT把大变换拆成小变换

直接算 N 点傅里叶级数要 N² 次运算,4096 个点就是 1600 多万次。Cooley 和 Tukey 沿用前人的思路:N 能分解成很多因子时,大变换能拆成一串小变换,运算量降到与 N log N 成正比。N 取 2 的幂时,还能在原数组里就地算完。

细节

拿 N = 1024 算:直接计算约 105 万次,新方法不到 20,480 次。差了约五十倍,N 越大差得越多。代价是结果的顺序被打乱:第 j 个结果,落在把 j 的二进制位倒过来的位置上。

FFTW 的作者在 2005 年写道,这个常用的自由软件库主要用的仍是 Cooley–Tukey 算法,但难点换了地方:拆分带来跳跃的内存访问,会妨碍缓存。所以 FFTW 实际测量多种拆法的运行时间,挑最快的那个。

留下的问题

N 是质数时这招帮不上忙;在今天的机器上,内存访问方式同样决定快慢。

来源 2
  1. Cooley and Tukey · An Algorithm for the Machine Calculation of Complex Fourier Series, Mathematics of Computation 19 (1965), pp. 297–301
  2. Frigo and Johnson · The Design and Implementation of FFTW3, Proceedings of the IEEE 93(2), 2005, §§I–II

数学与算法 · 数值计算研究

反向模式求导倒着扫一遍得到每步的影响

一个算法要算成千上万步,每步都有一点舍入误差,结果会偏多少?1970 年,芬兰的 Linnainmaa 在硕士论文里给出办法:先记下每一步运算,再从结果倒着扫一遍,算出每一步对结果的影响。这就是今天的反向模式求导,神经网络的反向传播是它的一个特例。

细节

留下的问题

每一步的中间值都得存下来,算得越长,占的内存越多。

  • 互补 · 反向传播

    Griewank 认为 Linnainmaa 1970 年的论文提出了今天所说的反向模式,并把神经网络的反向传播看作它的一个特例。

来源 2
  1. Linnainmaa · Taylor expansion of the accumulated rounding error, BIT 16, 1976 (cites the 1970 Helsinki thesis)
  2. Griewank · Who Invented the Reverse Mode of Differentiation?, Documenta Mathematica Extra Volume ISMP, 2012

数学与算法 · 信息与概率研究

EM 算法数据缺一块也能做最大似然

数据有一部分看不到时,最大似然估计很难直接算。1977 年,Dempster、Laird 和 Rubin 给出通用做法:E 步按当前参数估计缺失部分,M 步据此更新参数,两步交替。HMM 的 Baum-Welch 训练是它的特例,IBM 的翻译模型也用它训练。

细节

留下的问题

每一步都不会变差,但可能停在局部最优,起点不好就会卡住。

来源 1
  1. Dempster, Laird & Rubin · Maximum Likelihood from Incomplete Data via the EM Algorithm, JRSS-B 39(1), 1977

分布式与服务 · 数据处理与存储研究

关系模型把数据含义和存放方式分开

1970 年,Codd 在论文里用“关系”来描述共享的数据。他主张,应用程序不该依赖记录的物理顺序、索引或访问路径。这叫数据独立性:存储的组织方式变了,应用尽量不用跟着改。

细节

后来有数据库直接跑起了机器学习。2012 年的 MADlib 在 PostgreSQL 和 Greenplum 里实现了回归和聚类,计算就在库里的数据旁边进行。

留下的问题

关系模型没有规定分布式事务、物理执行计划,也不管数据质量。

来源 3
  1. Codd · CACM, June 1970, original paper (university-hosted copy)
  2. IBM Research · publication record, June 1970
  3. Hellerstein et al. · MADlib, PVLDB 2012, sections 3–4

模型与学习 · 神经网络基础研究

感知机让随机连线的网络学会分类

当时不少大脑模型借用开关电路,把回忆写成预先接好的线路。Rosenblatt 认为,这不适合连线随机、元件不完美的网络。1958 年他提出感知机:感光点连到随机连线的联想单元,再连到几个响应单元。被强化的联想单元“价值”升高,同一刺激再来,原来的响应更易胜出。

细节

设想一个只有两个响应的感知机,一个代表“方”,一个代表“圆”。图照到感光点上,点亮一部分联想单元;两个响应各自汇总,强的一方胜出,并压住对方。同类图形彼此相似时,没见过的新图也能以高于随机的概率归对类。

Rosenblatt 也写明了边界:具体的刺激它能学,可一旦要判断刺激之间的关系,比如“说出方块左边那个东西”,问题就变得极难。

留下的问题

它处理不了刺激之间的关系判断,Rosenblatt 自己也承认。

来源 3
  1. Rosenblatt · The Perceptron, Psychological Review 65(6), 1958, pp. 386–408 · DOI record
  2. Same article · scan of the journal pages hosted at UIC; organization, learning rules, IBM 704 note, conclusions
  3. Hopfield · PNAS 1982, p. 2555 comparison with perceptrons · CaltechAUTHORS PDF

模型与学习 · 视觉研究

Neocognitron图形挪了位置也认得出

图形挪个位置,此前的识别网络就认不出了。1980 年,NHK 的福岛邦彦提出 Neocognitron:提取特征的层和容忍位移的层交替堆叠,不用老师标注,自己组织起来,图形换了位置、稍有变形也能认出。LeNet 论文提到,卷积加下采样的组合,Neocognitron 早已实现。

细节

留下的问题

它不用反向传播这样的监督训练,每层靠专门设计的自组织规则来学。

来源 1
  1. Fukushima · Neocognitron, Biological Cybernetics 36, 1980

模型与学习 · 神经网络基础研究

Hopfield 网络凭残缺线索找回记忆

除了按地址取数据,能不能凭残缺内容找回完整记忆?1982 年,Hopfield 提出由二值单元组成的网络,用连接强度存储模式。在对称连接、无自连接等条件下,按规则逐个更新单元,能量不会增加。它可以从受损输入恢复记忆,也可能停在错误的稳定状态,并不保证每次都找对。

细节

模拟里,30 个单元存 5 条记忆。从离某条记忆不超过 5 位的状态出发,九成以上能回到它。给它两条记忆按六比四混合的输入,它多半直接给出占六成的那条,不像线性网络那样输出混合。

2024 年,Hopfield 和 Hinton 获得诺贝尔物理学奖。公告说,Hopfield 网络借用描述原子自旋的物理,让存好的图像处在能量低处;Hinton 以它为基础,发展出玻尔兹曼机。

留下的问题

它只会联想,学不出隐藏特征;存的记忆一多,就取不准了。

  • 互补 · 感知机

    Hopfield 拿自己的模型和感知机对照:强反向连接,单元异步更新。

来源 4
  1. Hopfield · Neural networks and physical systems with emergent collective computational abilities, PNAS 79(8), April 1982
  2. Same paper · CaltechAUTHORS PDF; model, storage rule, energy function, simulations, Discussion
  3. Same paper · PubMed Central record
  4. Royal Swedish Academy of Sciences · Nobel Prize in Physics 2024 press release, 2024-10-08

应用与产品 · 机器人与自主系统系统

Shakey给它目标,它自己排步骤

1966 年 SRI 立项时,自动机大多靠几块简单的板载电路控制。SRI 想用大型计算机通过无线电指挥机器人,只给目标,不给步骤。Shakey 分层干活:STRIPS 排出动作顺序,PLANEX 执行并盯着进度,最底下是“推箱子”这类自带感知和纠错的动作。

细节

一次实验的任务,是用 2 号箱子把一扇门堵上。走到半路,实验者在它要经过的门前放了一只陌生箱子。摄像机看到路被挡,把箱子记进模型。PLANEX 没有从头重排,换了一组房间绕过去,照样把门堵上。

能这样绕,是因为 STRIPS 存下的计划带参数:不记“经过这几个房间”,记的是“从某个房间穿过一个中间房间,进到第三个房间堵门”。下一个任务是把那只箱子推开,它直接借用了这个计划的前四步。报告把这看作一种学习。

留下的问题

它只在几间专门布置的房间里活动,门和墙的位置都事先写进了模型。

  • 用到 · FORTRAN

    Shakey 的软件主要用 LISP,但能在 LISP 下调用 FORTRAN 子程序,摄像画面也存成 FORTRAN 二进制文件。

  • 用到 · LISP

    Shakey 的技术报告说,LISP 是团队的主要编程工具。

来源 2
  1. Nilsson (ed.) · Shakey the Robot, SRI Technical Note 323, April 1984 · chapters 1, 3, 5, 8 and 9
  2. SRI International · publication record for Technical Note 323

数据与评估 · 数据集研究

WordNet把英语词按意思连成网

词典按字母排,意思相近的词散落各处。1985 年起,Princeton 的 Miller 等人编 WordNet:把英语名词、动词和形容词按意思归成同义词集,每个集合代表一个概念,再用上下位、部分与整体等关系把集合连起来。ImageNet 的类别树,用的就是 WordNet 的名词层级。

细节

留下的问题

它是人工编的,收哪些词、怎么连,取决于编者的判断。

来源 1
  1. Miller et al. · Introduction to WordNet: An On-line Lexical Database (Five Papers on WordNet, revised 1993)

模型与学习 · 神经网络基础研究

反向传播让误差一层层往回传

网络输出错了,深处哪些权重该改?反向传播把输出端的误差一层层往回传,据此调整每一层的权重。1986 年这篇代表作展示了:这样训练,网络中间层能自己学出内部特征,也就是隐藏表示。反向求导的办法更早就有,这篇论文让人看到它能学出什么。

细节

留下的问题

有了梯度,深网络照样难训,训好了也未必能用在新数据上。

来源 1
  1. Rumelhart, Hinton & Williams · 1986

模型与学习 · 神经网络基础研究

混合专家让门控网络分派任务

用反向传播训练一个网络去做几种子任务,它们会互相干扰。1991 年,Jacobs、Jordan、Nowlan 和 Hinton 让几个专家网络分工:一个门控网络看输入,决定交给哪一个或哪几个专家,每个专家只学一部分样本。2017 年的稀疏 MoE 把这个想法放大到上千个专家。

细节

留下的问题

论文只在一个小的元音识别任务上做了试验。

  • 互补 · 反向传播

    论文开头说,用反向传播训练一个网络去做几种子任务,会有很强的相互干扰;混合专家把任务分给不同的网络。

来源 1
  1. Jacobs, Jordan, Nowlan & Hinton · Adaptive Mixtures of Local Experts, Neural Computation 3, 1991

模型与学习 · 神经网络基础研究

LSTM让循环网络记得更久

循环网络一步步读序列,读到后面,前面的信息很难留住。1997 年提出的 LSTM 加了一块专门的记忆状态,再配上门控,也就是控制信息进出的阀门。这样,相隔很远的信息也更容易学到。

细节

留下的问题

门控只是缓解,距离拉得足够长,照样可能忘。

来源 1
  1. Hochreiter & Schmidhuber · 1997

模型与学习 · 语音研究

HMM从声音反推看不见的状态

语音有长有短,变化也多,没法把每一帧声音拆开单独分类。Rabiner 1989 年的教程系统地介绍了 HMM:隐藏状态按概率相互转移,每个状态产生声音特征这样的观测。有了一整段观测,就能反推背后可能的过程。

细节

用它要分清三个问题:这段观测有多大可能,哪条状态路径最可能,参数怎么从数据里学。第一个要把所有路径加起来,第二个要找出最好的一条,第三个是估计参数,三种算法各不相同。

留下的问题

它假设下一个状态只看当前状态,算起来简单,能表达的依赖关系也就有限。

  • 互补 · EM 算法

    Rabiner 指出,HMM 的 Baum-Welch 重估计和 EM 算法是等价的。

来源 2
  1. Rabiner · HMM tutorial, IEEE 1989, sections II–III
  2. CMU AI Repository · HMM speech implementation, 1994 release

模型与学习 · 语言研究

IBM 翻译模型从双语句对里学词的对应

按直觉,翻译是先读懂原文,再换种语言说出来。IBM 的四位作者反过来问:看到一句法语,哪句英语最可能是它的“原文”?这拆成两件事:英语通不通顺,词和词怎么对应。后者不靠人写规则,从加拿大议会记录的约 178 万对英法句子里学出来。

细节

论文举过一个例子:英语 nodding 对应法语短语 faire signe que oui。Model 1 到 3 只把 nodding 连到 signe 和 oui 两个词,到了 Model 5,才连上整个短语。

后来的统计翻译常把词对齐当作中间一步。2003 年 Koehn 等人的短语翻译模型,先用训练 IBM 模型的工具 Giza++ 给语料做词对齐,再从结果里抽出成对的短语。

留下的问题

它不管词形变化,法语动词的几十种形式各学各的,也只试了英法一对语言。

  • 用到 · EM 算法

    IBM 的五个翻译模型用 EM 算法反复迭代来估计参数。

来源 2
  1. Brown et al. · The Mathematics of Statistical Machine Translation: Parameter Estimation, Computational Linguistics 19(2), 1993, §§1–2, 5–7 and Figure 5
  2. Koehn, Och & Marcu · Statistical Phrase-Based Translation, HLT-NAACL 2003, §§3.1, 4.6

模型与学习 · 统计学习研究

SVM把分界线画得离两边都远

SVM 分类时,找一条离两边样本都尽量远的分界线,这段距离叫间隔。1995 年这篇代表作,让它也能处理两类数据分不干净的情况。间隔、正则化和核方法合在一起,是统计学习自己的一套建模选择,算不上通往神经网络的过渡。

细节

留下的问题

核方法早于这篇论文,它补上的是数据分不干净时怎么办。

  • 借用 · 感知机

    Cortes 和 Vapnik 从 Rosenblatt 的感知机出发:先做固定的非线性映射,再分一个线性面。

来源 1
  1. Cortes & Vapnik · 1995

模型与学习 · 强化学习研究

Q-learning从奖励里学每个动作值多少

做了一个动作、拿到奖励,这个动作到底值多少?Q-learning 用眼前的奖励加上对后续价值的估计,来更新它的估值。1992 年的论文给出了收敛分析,针对的是表格情形:每个状态下的每个动作各记一个数。这个方法更早见于 Watkins 1989 年的博士论文。

细节

留下的问题

表格情形下的收敛条件,搬到深度网络上就不一定成立了。

  • 借用 · 动态规划

    论文把 Q-learning 称为增量式、异步的动态规划:不预先知道奖励和转移概率,而是从经验里逐步逼近动态规划要算的最优动作价值。它引用的是 Bellman 与 Dreyfus 1962 年的书,不是这篇 1954 年的文章。

来源 1
  1. Watkins & Dayan · 1992

网络与互连 · 互联网与 Web研究

Web用链接把分散的资料连起来

CERN 人来人往,资料又散在各处,信息常常就这么丢了。1989 年 3 月,Tim Berners-Lee 提出一个分布式超文本系统,也就是能顺着链接跳转的文档网络。文档和相关的人、项目、系统互相链接,跨团队找资料时,不用再挤进同一套目录层级。

细节

留下的问题

这还只是一份提案:没有网站上线,连万维网这个名字都还没有。

来源 1
  1. Tim Berners-Lee: original 1989 proposal, W3C transcription and author provenance note

系统软件 · 操作系统与开源系统

Linux补上自由系统缺的内核

1990 年代初,GNU 计划已写好大部分系统软件,唯独缺内核。1991 年,Linus Torvalds 公开了 Linux 源码,一个给 386 电脑用的免费内核,谁都能改。后来它改用 GNU 的许可,和 GNU 工具拼在一起,成了完整的自由操作系统。

细节

要分清三样东西:内核管进程、内存和设备;shell、编译器和 C 库跑在它上面;把这些配好、能直接安装的叫发行版。1991 年那版只有内核,发布说明自己写着,shell、编译器和库都得另找。

后来改许可时,还得等一起写代码的人同意,可见那时已经有别人参与。后面的故事里也常见到它:2004 年的 MapReduce 论文写道,Google 集群里的机器通常跑 Linux。

留下的问题

1991 年那版只有内核,要变得能用,得靠 GNU 的工具和许多贡献者。

来源 5
  1. Linus Torvalds: original Linux 0.01 release notes, 1991, kernel.org archive
  2. Linus Torvalds: Linux 0.12 release notes, license change, kernel.org archive
  3. GNU Project · Linux and the GNU System (the GNU project's account)
  4. Dean and Ghemawat · MapReduce, OSDI 2004, §3 execution environment
  5. NVIDIA GeForce 8800 technical brief, 2006-11-08, p. 14 on the CUDA SDK

系统软件 · 语言与编译器系统

Python让脚本语言能用 C 扩展

1980 年代末,Guido van Rossum 在 CWI 做分布式操作系统 Amoeba。管理它只能写 C 程序或 shell 脚本,都不顺手。他喜欢自己参与实现的 ABC 语言,可 ABC 没法扩展。他 1989 年底动手,1991 年 2 月公开。

细节

不少特点能找到出处:用缩进分组、内置高层数据类型,来自 ABC;异常来自 Modula-3,他说 Amoeba 里处理错误的经验让他格外看重异常。官方 FAQ 至今把“能用 C 或 C++ 扩展”列为它的基本特点。

后来的科学计算和机器学习正借了这种可扩展性。2019 年的 PyTorch 论文说,从 2014 年起,大多数深度学习框架都把 Python 接口当作必备。

留下的问题

它起初没打算做数值计算,快的数组运算得靠 C 写的扩展。

来源 5
  1. Python FAQ · Why was Python created in the first place?
  2. Python documentation · History of the software
  3. Guido van Rossum · A Brief Timeline of Python, 2009-01-20
  4. Harris et al. · Array programming with NumPy, arXiv v1, 2020-06-18, scientific Python ecosystem
  5. Paszke et al. · PyTorch, NeurIPS 2019, arXiv v1, §§2 and 5

分布式与服务 · 并行计算与训练系统

MPI让并行程序说同一种话

并行程序靠消息在处理器之间传数据,以前常得绑在某一家机器的通信接口上。1994 年,MPI Forum 定下了一套共同的消息传递接口。它规定了点对点通信、一组进程一起参与的集体操作,以及 C 和 Fortran 怎么调用。

细节

留下的问题

MPI 只规定接口,实现各家自己做;早期标准也不管任务管理和 I/O。

  • 用到 · FORTRAN

    MPI-1 给 Fortran 77 和 C 定了标准接口。

来源 3
  1. MPI Forum: MPI 1.1 (1995), foreword identifying MPI 1.0 (1994)
  2. MPI Forum: early standard scope, included interfaces
  3. MPI Forum: early standard scope, excluded facilities

应用与产品 · 机器人与自主系统研究

ALVINN让神经网络看路开车

当时的自动导航靠人写的图像处理程序,换了条件就容易出问题。CMU 的 Pomerleau 把摄像机和测距仪的低分辨率图像直接送进一个三层神经网络,让它输出往哪转。网络用 1200 张模拟道路图训练,装上试验车后,在校园林间小路上开过 400 米。

细节

输入很小,视频图只有 30×32 个点。输出是一排 45 个单元:中间代表直走,越往两边转得越急。有了逼真的模拟道路,反向传播半小时就训出一个还不错的跟路系统,传统方法调了好几个月才到相近水平。

1990 年的后续论文改成边看人开车边学。只看人开,网络学不会车偏了怎么拉回来,所以每张图像都在软件里平移、旋转出 14 张。网络每秒处理 25 张图,车速能开到试验车的上限,每小时 20 英里。

留下的问题

1988 年那版只在晴天的一条校园小路上实测过,遇到岔路方向会来回摆。

  • 用到 · 反向传播

    ALVINN 是一个三层的反向传播网络,用 1200 张模拟道路图,在 Warp 上的反向传播模拟器里训练。

来源 5
  1. Pomerleau · ALVINN: An Autonomous Land Vehicle in a Neural Network, NIPS 1988 proceedings record
  2. Same paper · PDF, architecture, training and performance, network representation, discussion
  3. CMU Robotics Institute · publication record (proceedings dated December 1989)
  4. Pomerleau · Rapidly Adapting Artificial Neural Networks for Autonomous Navigation, NIPS 1990, §§2–4
  5. Thrun et al. · Stanley, Journal of Field Robotics 2006, §5.2 on labels from human driving

应用与产品 · 机器人与自主系统系统

Sojourner在火星上自己绕开障碍

1997 年 7 月 4 日,Sojourner 随 Pathfinder 在火星着陆。地面给它目标,它结合对地形和自身位置的感知,自己绕开障碍。传感器、移动和通信,全靠有限的机载算力撑着。

细节

留下的问题

它靠导航行为和地面配合,没有用强化学习训练。

  • 用到 · C

    Sojourner 的飞行软件全部用 C 写成,跑在一颗 Intel 8085 上。

来源 3
  1. JPL Robotics · Sojourner software and electronics
  2. NASA · mission history, July 4, 1997 landing
  3. JPL mission archive · rover description and navigation subsystem

应用与产品 · 博弈与游戏系统

Deep Blue用专用芯片把棋算得更深

下棋程序靠往后推几步、给局面打分来选着,可评估越细,搜得越慢。1996 年,Deep Blue 以 2:4 输给世界冠军卡斯帕罗夫。IBM 重新设计芯片,新机器用了 480 块象棋专用芯片,在关键变化上搜得更深。1997 年重赛,它以 3.5:2.5 获胜。

细节

棋的知识大多是人放进去的。开局库约 4000 个局面,主要由特级大师 Joel Benjamin 手工整理;8000 多个评估特征的权重,也大多靠手调。

2016 年 AlphaGo 的论文拿它作对照:AlphaGo 评估的局面比它少几千倍,靠策略网络挑得更准、价值网络评得更准来弥补;Deep Blue 靠的是手写的评估函数。

留下的问题

它只会下国际象棋,评估固化在芯片里,新特征加不进去。

来源 4
  1. Campbell, Hoane & Hsu · Deep Blue, Artificial Intelligence 134 (2002) 57–83 · DOI record
  2. Same paper · course-hosted copy (SUNY Oswego), §§1–3, 7.3, 8.1–8.2, 9
  3. IBM Heritage · Deep Blue, 1996 and 1997 matches
  4. Silver et al. · AlphaGo, Nature 2016 · DeepMind-hosted PDF, Discussion

人、协作与责任 · 开源与许可产品

GPL让改过的程序也得能分享

许可太宽松时,别人可以把自由软件改一改、只发编译好的程序,再禁止分享。1989 年的 GPL 规定:谁都能复制、修改、分发,甚至收费。但分发时要附上源代码,并按同样的条款授权给所有人。

细节

条款写得很具体。只发编译好的程序时,要么附上完整源代码,要么附一份至少三年有效的书面承诺,只收分发成本就提供源码。所谓源代码,指的是改这个作品时首选的那种形式。

它也划了边界。和别的独立作品放在同一个存储介质上,只算“单纯聚合”,不会把对方拉进这份许可。程序写明适用“任何更新版本”的,使用者可以按新版办。

留下的问题

交源码的义务只在分发时才有,许可也不担保代码质量。

  • 互补 · GNU

    按 GNU 一方的说法,要让 GNU 软件不被改成专有软件,就需要相应的分发条款;GPL 是他们为大多数 GNU 软件采用的 copyleft。

来源 5
  1. GNU General Public License, version 1, February 1989 (gnu.org), preamble and §§0–7
  2. Stallman · The GNU Project, sections on the X Window System and copyleft (the GNU project's account)
  3. GNU General Public License, version 2, June 1991 (header)
  4. GNU General Public License, version 3, 29 June 2007 (header)
  5. Linus Torvalds: Linux 0.12 release notes, license change, kernel.org archive

人、协作与责任 · 研究社区系统

arXiv预印本不用再寄复印件

1980 年代末,高能物理学者写完论文,只把复印件寄给一小批同行,非名校的年轻人常常看不到。1991 年,Los Alamos 的物理学家 Ginsparg 用一组脚本搭了个自动邮件服务器:作者把论文投给它,它存好并通知订阅者,想看全文再去取。

细节

原本预计一年约 100 篇,头半年就收到 400 篇。旧稿本来要三个月后自动删除,可大家发现查它比在办公室翻复印件方便,删除程序一直没装,稿件从没删过。

Ginsparg 写到,欠发达国家的物理学者很快觉得自己终于“在圈里”了:新想法能及时读到,自己的论文也能被平等地读到。

留下的问题

审核只看切题和学术价值,放上去的论文没经过同行评审。

  • 用到 · Web

    最初是电子邮件服务器,几个月后加了 FTP;1993 年 Mosaic 浏览器出现后不久,也成了 Web 服务器。

来源 6
  1. Ginsparg · It was twenty years ago today..., arXiv v2, 2011-09-13
  2. arXiv · first submission, hep-th/9108001, 1991-08-14
  3. arXiv · About arXiv (founding, moderation, 2026 independence)
  4. arXiv · Content moderation is not peer review
  5. arXiv · Computer Science archive (CoRR), established 1998
  6. arXiv · Bahdanau et al. version history, v1 2014-09-01

数据与评估 · 数据集研究

Penn Treebank程序先标,人再改

统计方法要从真实文本里学语言规律,得先有标好词性和句法的语料,可纯人工标又慢又难统一。Penn Treebank 让程序先标,标注员只负责纠错和拼接。到 1992 年 11 月,词性标注已达约 489 万词次。其中约 288 万词次,还标了简化的句法树。

细节

论文做过对照实验:同样四位标注员,校对机器预标的文本,平均每千词 20 分钟;从头手标要 44 分钟。标注员之间的分歧率,校对是 4.1%,手标是 7.2%。

后来的句法分析研究常拿它当标准的训练和测试集。Collins 1997 年的分析器用树库的《华尔街日报》部分训练和测试。它的成分精确率是 88.1%,召回率 87.5%。

留下的问题

它的句法只有骨架,名词短语内部基本不分析;材料也以美式英语为主。

来源 3
  1. Marcus, Santorini and Marcinkiewicz · Building a Large Annotated Corpus of English: The Penn Treebank, Computational Linguistics 19(2), 1993, §§1–5 and Table 4
  2. Collins · Three Generative, Lexicalised Models for Statistical Parsing, ACL 1997, abstract and §4
  3. Zaremba, Sutskever and Vinyals · Recurrent Neural Network Regularization, arXiv v1, 2014-09-08, §4.1

应用与产品 · 搜索与推荐系统

GroupLens让口味相近的人互相推荐

1994 年前后,Usenet 已有 8000 多个新闻组,读者只能按内容和作者筛,或者靠版主把关。GroupLens 改看别人的评价:读者读完给帖子打 1 到 5 分。服务器先算谁和谁过去打分相近,再用口味相近的人的评分,预测你会给新帖打几分。

细节

论文举了个小例子。过去的打分里,Ken 和 Meg 完全同步,Ken 和 Lee 大体相反。一篇新帖,Meg 打了 5 分,Lee 打了 2 分。喜欢它的人和 Ken 口味一致,不喜欢的人和他相反,所以给 Ken 的预测是 4.56 分。

作者还设想过怎样比较算法:删掉评分矩阵里的一些分数,看谁猜得回来。2006 年起的 Netflix Prize 也是这样比的,藏起一部分已知评分,比谁猜得准。

留下的问题

没人评过的帖子它猜不了,新用户也得先攒一阵评分才有用。

来源 3
  1. Resnick, Iacovou, Suchak, Bergstrom & Riedl · GroupLens: An Open Architecture for Collaborative Filtering of Netnews, CSCW '94, pp. 175–186 · author-hosted copy, including Figure 5 and the prediction example
  2. Same paper · ACM DOI record
  3. Koren, Bell & Volinsky · Matrix Factorization Techniques for Recommender Systems, IEEE Computer 42(8), 2009 · section on recommender system strategies and Figure 1

应用与产品 · 搜索与推荐研究

Okapi BM25把词频和文档长度算进排序

检索系统要按相关程度给文档排序。Okapi 系统起初不管词出现几次、文档多长,作者后来发现这样会偏爱长文档。他们把词频和长度加进公式,1994 年又把两个变体合成带参数的 BM25:词出现越多分越高,但会饱和;文档越长,同样的词频得分越低。

细节

按论文常用的参数算一下。在平均长度的文档里,一个词出现 1 次得 1 分;出现 10 次,也只得 2.5 分。同样 10 次,放在两倍平均长度的文档里,只得约 2.22 分。

这个公式后来进了常用的开源搜索库:2016 年,Apache Lucene 把默认打分换成了 BM25。

留下的问题

它只数查询词出现几次、文档多长,不懂同义词,也不管词序。

来源 6
  1. Robertson, Walker, Jones, Hancock-Beaulieu & Gatford · Okapi at TREC-3, §§1, 3.2, 8–9 and Table 10 (PDF hosted by Microsoft Research)
  2. NIST · TREC proceedings index: TREC-3, Gaithersburg, November 2–4, 1994, NIST SP 500-225
  3. NIST TREC browser · TREC-3 proceedings, City runs citya1 and citya2
  4. Apache Lucene 6.0.0 changes · LUCENE-6789, default Similarity changed to BM25Similarity
  5. Apache archive · Lucene 6.0.0 release files, dated April 2016
  6. Brin & Page · The Anatomy of a Large-Scale Hypertextual Web Search Engine, 1998, on TREC and the Web

芯片与计算 · 器件与制程产品

台积电只替别人造芯片

以前要做芯片,基本得自己有晶圆厂。1987 年,张忠谋创立台积电,只按客户的设计制造,自己不卖芯片,开创了纯代工模式。2022 年的 H100 就造在台积电的 4N 工艺上。

细节

留下的问题

设计和制造分开以后,最先进的工艺集中在少数代工厂手里。

来源 1
  1. TSMC · company profile

模型与学习 · 视觉研究

LeNet-5让识别器自己学特征

手写数字的写法和位置都不固定。1998 年那篇文档识别论文用 LeNet-5 展示了卷积、权重共享和下采样怎样配合,下采样就是把特征图缩小。参数靠梯度自己学出来,不用把识别规则全部手写。

细节

权重共享的意思是:同一组局部检测器在图像每个位置都用一遍,不用每个位置各学一套。后面的层再把这些局部特征组合起来。

留下的问题

它的下采样和输出层,和今天常用的 max pooling、softmax 做法不同。

  • 用到 · 反向传播

    论文把用反向传播训练的多层网络当作基于梯度学习的代表。

  • 互补 · Neocognitron

    LeNet 论文说,卷积加下采样的组合在 Neocognitron 里已经实现,只是那时还没有反向传播这样的监督训练。

来源 2
  1. LeCun et al. · Gradient-Based Learning Applied to Document Recognition, 1998
  2. Bottou · author publication record

应用与产品 · 搜索与推荐系统

Google 原型把链接也用来排序

1998 年的 Google 原型论文,把抓取、存储、索引和排序放在一个系统里讲。排序不只看关键词出现几次:PageRank 利用网页之间的链接关系,anchor text 借用别的页面对目标的描述,也就是指向它的链接上写的字。

细节

链接数量相同,分数也未必一样:链接来自哪些页面、这些页面又有多少出链,都会影响传过来的权重。PageRank 也只是排序的一部分,替代不了文本匹配和索引。

留下的问题

链接多只说明受关注,内容对不对、和查询相不相关,是另一回事。

  • 用到 · Web

    原型抓取并索引整个 Web,排序时用上了网页之间的超链接。

来源 2
  1. Brin & Page · The Anatomy of a Large-Scale Hypertextual Web Search Engine, 1998
  2. Google Research · original publication record

分布式与服务 · 集群与云研究

Paxos有机器坏了也能达成一致

几台机器各存一份状态,有的会宕机、消息会丢,怎样让它们对同一个值达成一致?Lamport 把答案写成一个希腊小岛议会的故事:议员常常离开议事厅,信使也会忘事,各人手里的议事记录却始终一致。这篇论文 1990 年投稿,审稿人觉得不太重要,1998 年才发表。

细节

留下的问题

原文太难读,2001 年 Lamport 又写了《Paxos Made Simple》重讲一遍。

来源 2
  1. Lamport · The Part-Time Parliament, ACM TOCS 16(2), 1998
  2. Lamport · notes on his publications (The Part-Time Parliament; Paxos Made Simple, 2001)

分布式与服务 · 数据处理与存储研究

MapReduce把分布式琐事交给系统

在集群上处理大规模数据,数据划分、调度、通信和失败重跑这些协调代码,以前常要重复写。2004 年,Dean 和 Ghemawat 发表 MapReduce,把处理过程写成映射和归约两类操作。协调的活交给运行系统,应用作者只管写这两类操作。

细节

用词频统计最好懂:map 为每个词发出一次计数,系统把相同词的记录汇到一起,reduce 再相加。代价是计算得能写成这种批处理流程。

留下的问题

它是批处理模型,装不下任意的交互式计算。

  • 用到 · Linux

    论文描述的集群由运行 Linux 的双处理器 x86 机器组成,配本地 IDE 硬盘和普通网络。

来源 1
  1. Dean and Ghemawat: original OSDI 2004 paper, especially sections 1, 3 and 6

电力与机房 · 机房与散热研究

能耗比例性活少时电也该少用

服务器没干多少活,也可能照样耗不少电。2007 年,Barroso 和 Hölzle 提出:负载降下来时,整台服务器的功耗也应该跟着降。光提高满载时的能效,还不够。

细节

满载时每瓦算得多,和闲下来时省不省电,是两回事。2017 年的 TPU 研究专门测了不同负载下的功耗。

留下的问题

这是一个设计目标,提出时行业里还没做到。

来源 4
  1. Barroso & Hölzle · IEEE Computer, December 2007, original article
  2. Google Research · 2007 publication record
  3. Meisner, Gold & Wenisch · PowerNap, ASPLOS 2009, independent follow-up
  4. Jouppi et al. · TPU study, April 2017 v1, sections 5–6

电力与机房 · 机房与散热研究

PUE看电有多少到了 IT 设备

机房的电不全给服务器、存储和网络设备,配电损耗和冷却也在耗电。2007 年,行业联盟 The Green Grid 发布 PUE:机房总能耗除以 IT 设备能耗。它最小是 1.0,越接近 1.0,设施本身多耗的电越少。

细节

举个算例:一座机房一年从电网取电 1,500 万千瓦时,其中 1,000 万送到了 IT 设备。它的 PUE 就是 1.5。伯克利国家实验室测过 22 座机房。它们的 PUE 在 1.3 到 3.0 之间。

数字要看口径。Google 报告整个机队 2025 年的平均 PUE 是 1.09,并说把变电站、变压器这些开销都算了进去;这是 Google 自己的测量。

留下的问题

PUE 只管设施,不管计算:服务器空转耗的电,照样算进 IT 能耗。

来源 2
  1. The Green Grid · White Paper #49, PUE: A Comprehensive Examination of the Metric, 2012, executive summary, §§I–II, 4, 4.10, 6.6 (LBNL-hosted copy)
  2. Google Data Centers · Efficiency: fleet PUE and measurement notes (Google's own reporting)

电力与机房 · 机房与散热研究

仓库级计算把整座机房当成一台计算机

机房不只是把一堆服务器放在一起。2009 年,Barroso 和 Hölzle 在一本专著里,把整个数据中心看成一台计算机。服务器、网络、供电和冷却,都得放在一起设计。

细节

留下的问题

书里那种一体化的服务模式,套不到所有托管机房上。

  • 用到 · PUE

    书里拆解能效的第一项就是 PUE,引自 The Green Grid。

  • 互补 · 闪存

    书里说,闪存和 DRAM 每 GB 太贵,放不下大量或很少访问的数据,所以机房里仍以磁盘为主。

来源 2
  1. Google Research: first-edition publication record, 2009
  2. Barroso and Hölzle: original 2009 monograph, chapters 1, 4–6 (PDF mirror)

系统软件 · 语言与编译器研究

LLVM让各种语言共用一套优化

2004 年的 LLVM 论文提出一种低层的中间表示,也就是源代码和机器指令之间的一层通用写法。它带类型,每个变量只赋值一次。围绕它搭起的编译框架,能在编译、链接、运行时分析和改写程序,优化也不必绑在某一种源语言上。

细节

2018 年的 TVM 论文里,就有一条经由 LLVM 中间表示生成代码的路径。AI 编译器能复用这类通用工具,但张量布局、算子融合和硬件调度,还是得专门处理。

留下的问题

它只是低层的中间表示,离完整的模型编译器还远,性能也得靠后面的优化。

来源 4
  1. Lattner & Adve · LLVM, CGO 2004, original paper
  2. LLVM · CGO publication record, March 2004
  3. LLVM · project archive, November 18, 2003 release entry
  4. Chen et al. · TVM, OSDI 2018, figure 2 and sections 3–4

系统软件 · GPU 编程与框架系统

NumPy把两派数组合成一个

1990 年代中期,Python 有了用 C 写的数组库 Numeric。为了处理哈勃望远镜的图像,有人重写出 Numarray,社区就此分成两派。2005 年的 NumPy 把两边合起来,兼顾 Numarray 的功能和 Numeric 在小数组上的速度。

细节

NumPy 数组就是一块内存,加上元素类型、形状和步长几项说明。在这之上是向量化:对整个数组做加减、求和,在 C 里可能要写几十行循环,在 Python 里常常一句就够。

到 2020 年,SciPy、Matplotlib、pandas、scikit-learn 都建在 NumPy 上,探测引力波、拍出第一张黑洞照片的软件里也有它。

留下的问题

它只管一台机器内存里、用 CPU 算的数组,GPU 和超大数据得靠别的库。

  • 用到 · Python

    NumPy 是 Python 的数组库,但不在标准库里;论文提到 Python 语言多年来为它加过新特性和专门语法,让数组写法更简洁。

  • 用到 · FFT

    NumPy 提供一整套 FFT 与逆 FFT 函数。

  • 用到 · BLAS

    NumPy 的线性代数交给 OpenBLAS 或 Intel MKL 这样的后端来加速。

来源 3
  1. Harris et al. · Array programming with NumPy, arXiv v1, 2020-06-18
  2. NumPy · About us, project history and governance
  3. Paszke et al. · PyTorch, NeurIPS 2019, arXiv v1, §4.2 on NumPy interoperability

系统软件 · GPU 编程与框架系统

CUDA让 GPU 不必假装画图

GPU 本来是画图用的。2000 年代初,有人拿它做线性代数和物理模拟,但得把数据打包成纹理、计算写成着色程序,再靠“画”图形来触发。2006 年 11 月,NVIDIA 公布 CUDA:用扩展的 C 写 GPU 程序,大量线程分组运行,显存也能任意读写。

细节

拿向量相加 c = a + b 来比。走图形接口,要把 a、b 装进两张纹理,写着色程序,设好渲染目标,画一个铺满它的矩形,再从“画面”里读回结果。用 CUDA,每个线程按自己的编号 i 算一次 c[i] = a[i] + b[i] 就行。

后来的深度学习也走上这条路。2012 年 AlexNet 的作者自己写了 GPU 卷积代码;2014 年 NVIDIA 发表 cuDNN,接入 Caffe 后,一个标准模型快了 36%,内存也用得更少。

留下的问题

CUDA 当时只支持 NVIDIA 自家的 GPU,写好的程序搬不到别家去。

  • 用到 · FFT

    CUDA 1.0 自带两套数学库,其中之一是 FFT 库 CUFFT。

来源 6
  1. NVIDIA CUDA announcement, 2006-11-08; press-release reprint
  2. NVIDIA GeForce 8800 technical brief, 2006-11-08, pp. 12–14
  3. NVIDIA public-beta release, 2007-02-16; WebWire archive
  4. Buck et al. · Brook for GPUs, SIGGRAPH 2004, §§1–2 on programming through graphics APIs
  5. NVIDIA CUDA Programming Guide 1.0, 2007-06-23, §§1.1–1.2 and Appendix A
  6. cuDNN · arXiv v1, 2014-10-03, abstract

系统软件 · GPU 编程与框架系统

Theano把数学表达式编译到 GPU

用 Python 写数值代码方便,跑起来却慢,要用 GPU 还得手写 CUDA。2010 年,蒙特利尔大学的 Theano 让人像写 NumPy 一样写数学表达式,由它做符号求导、优化计算图,再编译成 C++ 或 CUDA 代码。论文里的多层感知机,在 GPU 上比 CPU 上的 NumPy 快 11 倍。

细节

留下的问题

要先建好整张计算图再编译,调试和写动态结构都不方便。

来源 1
  1. Bergstra et al. · Theano: A CPU and GPU Math Expression Compiler, SciPy 2010

芯片与计算 · 处理器研究

Roofline看清程序卡在哪

同一颗 CPU 跑不同的程序,有的卡在计算,有的卡在等数据。2008 年 Berkeley 的一份技术报告用 Roofline 模型把两头放在一起看。关键是运算强度:每从内存读写一个字节能做几次运算。性能上限取计算峰值和“带宽 × 运算强度”中较小的那个。

细节

2017 年的 TPU 论文改造了这个模型,用来比较神经网络在 CPU、GPU 和 TPU 上的瓶颈,还按量化计算重新数了运算和字节。

留下的问题

它只给上限,实际能跑多快,还要看延迟、依赖和并行度。

来源 4
  1. Williams, Waterman & Patterson · UCB/EECS-2008-134, original report
  2. UC Berkeley · report record, October 17, 2008
  3. Berkeley Lab · publication list, April 2009 journal article
  4. Jouppi et al. · TPU study, April 2017 v1, section 4

芯片与计算 · GPU 与加速器系统

AMD GCN一套架构兼顾图形和计算

AMD 之前的 GPU 用 VLIW 结构,要靠编译器找出能同时执行的指令。GCN 改用一个个计算单元,每个里面有标量单元和向量 SIMD 单元。这样少依赖编译器,图形和通用计算都能兼顾。2011 年 12 月公布的 HD 7970 用的就是它。

细节

留下的问题

HD 7970 在 2011 年底公布,要到 2012 年 1 月才开始零售。

来源 2
  1. AMD HD 7970 announcement, 2011-12-22
  2. AMD GCN whitepaper, June 2012, pp. 3–6; CMU mirror

芯片与计算 · 器件与制程产品

22 纳米三栅晶体管把晶体管立起来

几十年来,晶体管都是平的,栅极只从上面控制电流。Intel 说,到 22 纳米再往小做越来越难。2011 年,它宣布要用三栅晶体管量产芯片:电流通道竖成一道薄鳍,栅极从两侧和顶上包住它。按 Intel 的数字,和自家 32 纳米相比,性能相同时功耗不到一半。

细节

可以把平面晶体管想成平铺在地上的水渠,闸门只从上面压下来;三栅晶体管把水渠竖成一道薄墙,闸门从左、右、上三面卡住。三面一起控制,导通时能过尽量多的电流,关断时尽量接近零,开关也更快。

低电压下,Intel 报告性能最多比自家 32 纳米提高 37%。宣布当天,它演示了代号 Ivy Bridge 的 22 纳米处理器;这批芯片 2012 年 4 月作为第三代酷睿上市。

留下的问题

三栅改进的是栅极对电流的控制,芯片快不快,还取决于很多别的设计。

  • 借用 · 晶体管

    Intel 称 Tri-Gate 重新发明了晶体管:用立起来的薄鳍取代平面栅。

来源 3
  1. Intel · Intel Reinvents Transistors Using New 3-D Structure, press release, 2011-05-04
  2. Intel · 3rd Generation Intel Core processors, launch press release, 2012-04-23
  3. Samsung · EUV-based 7nm LPP production release, 2018-10-18, naming its earlier 10nm FinFET process

数据与评估 · 评测基准研究

BLEU机器给翻译自动打分

评价机器翻译要请人来看,又贵又慢,一轮可能要好几个月。2002 年,IBM 的 Papineni 等人提出 BLEU:数机器译文和几份人工参考译文有多少相同的词组,再惩罚过短的译文。它和人的判断高度相关,每多跑一次几乎不花成本。Transformer 报告成绩,用的就是 BLEU。

细节

留下的问题

它要靠参考译文来比,参考译文越少,合理的不同译法越容易被扣分。

来源 1
  1. Papineni, Roukos, Ward & Zhu · BLEU, ACL 2002

数据与评估 · 数据集开放问题

Common Crawl人人可以下载的网页存档

很多研究者没有能力自己抓取网页。2007 年成立的非营利组织 Common Crawl,从 2008 年起定期抓取网页,把数据免费公开,累计超过 10 PB。GPT-3 训练时 60% 的数据来自过滤后的 Common Crawl,LAION-5B 的图文对也从这里提取。

细节

留下的问题

抓来的网页什么都有,要经过大量过滤和去重才能拿来训练。

来源 1
  1. Common Crawl · About

数据与评估 · 数据集研究

ImageNet按概念层次收集图片

要做一个大规模图像数据集,难处不只在多下载些文件。ImageNet 按 WordNet 的概念层次收集图片,候选图片再交给人工核验。规模背后,是类别设计、检索、标注和质量检查一整套功夫。

细节

留下的问题

后来 ILSVRC 比赛用的只是其中的子集,和完整的 ImageNet 是两回事。

  • 用到 · WordNet

    ImageNet 沿用 WordNet 的层级结构,目标是给约 8 万个名词同义词集配上图片。

来源 1
  1. Deng et al. · ImageNet (CVPR 2009)

网络与互连 · 局域网与集群互连系统

RDMAP给远程读写内存定规矩

机器之间通信,数据要复制,CPU 也得陪着忙。2007 年 10 月的 RFC 5040 定义了 RDMAP:一台机器可以直接读写对方公布出来的缓冲区,内存保护照样保留。它建在直接数据放置协议 DDP 之上,为的是少复制、少占 CPU。

细节

2016 年的 TensorFlow 论文说,任务之间除了 TCP 上的 gRPC,还可以用 RoCE 通信,可见 RDMA 确实进了机器学习系统。但 RoCE 走的是另一条协议路线,不能据此说 TensorFlow 用了 RDMAP。

留下的问题

复制少了,通信、同步和管理缓冲区的成本还在。

  • 用到 · TCP/IP

    RDMAP 跑在 TCP 之上的 DDP/MPA 层,省掉 TCP/IP 通常要做的拷贝。

来源 3
  1. Recio et al. · RFC 5040, October 2007, sections 1–3
  2. IETF Datatracker · RFC 5040 publication history
  3. Abadi et al. · TensorFlow, OSDI 2016, section 5

网络与互连 · 局域网与集群互连研究

Fat-tree用普通交换机搭满速网络

2008 年前后,机房网络多是交换机树,越往上越贵,带宽卡在树根。为了省钱,上层带宽常不够分,最坏时千兆网卡只能跑 125 Mbps。Al-Fares 等人改用许多同样的普通交换机连成 fat-tree,48 口交换机就能让 27,648 台主机全速互通。

细节

所有交换机都一样,所以都能用便宜的通用产品。论文估算,这套网络的交换设备约 864 万美元;用高端交换机给 2 万台主机做到满带宽,约需 3,700 万美元。

难处在于用上这么多条路。普通路由只挑一条,流量会挤到少数核心交换机上。论文让交换机按目的地址分散流量,同一台主机的包始终走同一条路。16 台主机的模拟里,随机通信能达到理想带宽的 75%,超额订阅 3.6:1 的传统树只有 53.4%。

留下的问题

实验只模拟了 16 台主机,大规模的成本是估算的,还没算上多得多的线缆。

  • 互补 · MapReduce

    论文以 MapReduce 为例说明集群的瓶颈常在节点间带宽:map 阶段的输出要先大量重新分发,reduce 才能开始。fat-tree 针对的正是这类跨机器流量。

来源 3
  1. Al-Fares, Loukissas & Vahdat · A Scalable, Commodity Data Center Network Architecture, SIGCOMM 2008, §§1–3, 5–6 (author copy)
  2. Same paper · ACM Digital Library record
  3. Singh et al. · Jupiter Rising, SIGCOMM 2015, abstract, §§1–3.2 and Table 2

内存与存储 · 存储研究

HDFS把大文件分散到多台机器上

大文件分散存到很多机器上,就得应付机器故障。2010 年的 HDFS 论文给出了分工:NameNode 管目录和数据块的位置,DataNode 保存数据块,每块存多份副本。存储和计算放在同一批服务器上,任务就能在数据旁边运行。

细节

留下的问题

它只允许一个写者、多个读者,为大文件吞吐而设计,给不了数据库那样的事务。

来源 3
  1. Shvachko et al. · HDFS, MSST 2010, original paper, sections II–III
  2. Shvachko · author publication list, May 2010 entry
  3. Zaharia et al. · RDDs, NSDI 2012, section 6.1

模型与学习 · 视觉研究

SIFT换个角度也认得出

同一个东西拍两次,远近、角度一变,像素就全不一样。当时常用的 Harris 角点,换个远近就对不上。SIFT 在不同尺度上找稳定的关键点,按周围梯度的方向把它摆正,再把附近的梯度统计成一串数字。一张 500×500 的图,通常能取出约 2000 个这样的特征。

细节

这串数字有 128 个:关键点周围取 16×16 的采样,分成 4×4 个小格,每格统计 8 个方向的梯度。比对时有条实用的规矩:最近的匹配距离超过第二近的 0.8 倍,就扔掉。在 4 万个关键点的数据库上,这条规矩去掉了 90% 的错配。

到 2012 年的 ImageNet 比赛,SIFT 还在前列:用 SIFT 加 Fisher 向量的方法拿了第二名,top-5 错误率 26.2%,AlexNet 是 15.3%。

留下的问题

SIFT 只看灰度,不看颜色;它认的是登记过的具体物体,分不出“这是一只猫”这样的类别。

来源 4
  1. Lowe · Distinctive Image Features from Scale-Invariant Keypoints, author's copy dated 2004-01-05, §§1–2, 6–7, 9 and Figure 11
  2. Same paper · IJCV 60(2), November 2004, DOI record
  3. AlexNet · NeurIPS 2012 paper, Tables 1–2 with SIFT + FV entries
  4. OpenCV 4.x · features2d.hpp, SIFT class documentation citing Lowe 2004

人、协作与责任 · 责任与透明研究

差分隐私按一个人的影响加噪声

统计机构想公布汇总数字,又不想暴露某个人。只公布汇总也不保险:允许无限次提问、回答只带一点噪声,攻击者几乎能还原整个数据库。2006 年,Dwork 等人把隐私写成一个条件:换掉任何一行,回答的分布只能变一点点。按一行数据最多能改变结果多少来加噪声,就能做到。

细节

最简单的例子是计数:每人一行,取值 0 或 1,问一共有几个 1。换掉一个人,答案最多变 1,所以敏感度是 1;在真实答案上加一个尺度为 1/ε 的拉普拉斯噪声就够了。ε 越小,单个人越难被看出来,要加的噪声也越大。

论文把这个定义叫 ε-indistinguishability,后来通行的名字是差分隐私。美国人口普查局说,2020 年普查改用了基于差分隐私的保护框架。

留下的问题

它管的是单个人的影响,挡不住统计结果揭示群体规律;问得越多,噪声也得越大。

来源 2
  1. Dwork, McSherry, Nissim & Smith · Calibrating Noise to Sensitivity in Private Data Analysis, TCC 2006, author copy, §§1–3
  2. U.S. Census Bureau · Differential privacy and the 2020 Census, overview page with references

分布式与服务 · 集群与云研究

Xen一台服务器分给几个系统

很多人共用一台服务器,装在同一个系统里会互相拖累。虚拟机隔得更干净,可 x86 有些特权指令权限不够时会悄悄失败,VMware 只好边跑边改写机器码。2003 年的 Xen 换了条路:把客户系统稍改一改,遇到特权操作就请 Xen 代办,应用一行不用改。

细节

代价是得改操作系统。论文统计,移植 Linux 改动和新增了约 3000 行代码,占 x86 相关代码的 1.36%。管理功能放在叫 Domain0 的特权域里,由它创建和销毁其他虚拟机。设计目标是一台服务器跑约 100 个虚拟机。

后来的云服务用上了它。2006 年亚马逊发布 EC2 测试版时,发布博客写明 EC2 建在 Xen 上。

留下的问题

客户系统得改源码才能跑;论文写成时,Windows XP 只能跑些简单程序。

  • 用到 · Linux

    论文把 Linux 2.4 改成能跑在 Xen 上的 XenoLinux,负责管理的 Domain0 也运行在它上面。

来源 2
  1. Barham et al. · Xen and the Art of Virtualization, SOSP 2003, §§1–3 and Table 2, Cambridge author copy
  2. Jeff Barr · Amazon EC2 Beta, AWS News Blog, 2006-08-25 (EC2 built on Xen)

分布式与服务 · 集群与云产品

Amazon EC2服务器按小时租

以前要上线网站,得先买服务器或签按月按年的租约,还要提前猜流量。猜多了机器闲着,猜少了用户看到“网站太忙”。2006 年 8 月,亚马逊推出 EC2 测试版:调一下接口,几分钟就开出一台虚拟服务器,不用了就关。当时只有一种规格,每小时 10 美分。

细节

Barr 的发布博客举过一个例子:一个只在早 7 点到晚 7 点用的内部库存系统,晚上把实例关掉,服务器费用就能省下一半左右。

系统盘打包成 AMI 镜像存在 S3 里,调用接口就能用它启动实例;底层虚拟化用的是 Xen。测试期每个账户最多同时开 20 台。

留下的问题

刚推出时,实例一关本地数据就没了,负载均衡和自动扩缩也还没有。

  • 用到 · Xen

    发布博客写明 EC2 用 Xen 虚拟机监控程序搭建;Xen 提供隔离,按小时租用是 EC2 自己的服务设计。

来源 3
  1. AWS What's New · Announcing Amazon EC2 (beta), 2006-08-24
  2. Jeff Barr · Amazon EC2 Beta, AWS News Blog, 2006-08-25
  3. Jeff Barr · Happy 15th Birthday Amazon EC2, AWS News Blog, 2021-08-23

应用与产品 · 机器人与自主系统系统

Stanley赢下沙漠无人车赛

2004 年第一届 DARPA 大挑战,没一辆车跑完全程的 5%。2005 年的第二届,同样不准人工干预。激光只能可靠地看清前方约 22 米,斯坦福的 Stanley 让摄像机学会激光认出的路面颜色,往更远处找路。它用 6 小时 53 分 58 秒最先跑完。

细节

定位的小误差会被放大。激光打在前方最远约 30 米处,车身俯仰或侧倾估计差不到 0.5 度,平地上就会冒出“幻影障碍”。团队让人只在没障碍的路上开,用这些粗糙标签自动调参数,可行驶区域被误判成障碍的比例从 12.6% 降到 0.002%。

视觉也起了作用。论文估计,如果没有摄像机、全程限速每小时 25 英里,用时约 7 小时 5 分,可能落到 CMU 的 Sandstorm 之后。

留下的问题

比赛环境是静态的;作者说,Stanley 不能在车流里开,也分不清高草和石头。

  • 借用 · ALVINN

    Stanley 调激光测绘参数时,用人开过的无障碍地面当“可行驶”标签,论文说这一做法与 Pomerleau 的工作思路相近;视觉找路部分也引用了 ALVINN 1991 年出版的后续论文。不同的是,Stanley 的转向来自路径规划和控制器,视觉结果只用来调速度。

  • 用到 · 卡尔曼滤波

    Stanley 用一个无迹卡尔曼滤波器估计车的位置、朝向和速度。

来源 2
  1. Thrun et al. · Stanley: The Robot that Won the DARPA Grand Challenge, Journal of Field Robotics 23(9), 2006 · author PDF, §§1, 5–6, 10–11
  2. Same article · Wiley DOI record

应用与产品 · 搜索与推荐研究

Netflix Prize用矩阵分解预测评分

2006 年,Netflix 悬赏 100 万美元,求把自家算法的评分误差降低 10%。经典做法是找口味相近的用户来推。Koren 等人总结比赛经验,主张矩阵分解:给每个用户、每部电影各学一个向量,内积就是预测评分。大奖在 2009 年 9 月颁出。

细节

文章里有个小例子:所有电影平均 3.7 星,《泰坦尼克号》比一般电影高 0.5 星,Joe 打分偏严,平均低 0.3 星。只看偏差,Joe 给它的估计就是 3.9 星,剩下的才交给两个向量的内积去解释。

大奖颁给了 BellKor's Pragmatic Chaos 队,获胜提交的误差比 Netflix 好 10.06%。The Ensemble 队的成绩一模一样,只是晚交了约 20 分钟。

留下的问题

获胜提交混合了 100 多组预测器;评分太少的新用户、新电影,照样难推。

  • 互补 · GroupLens

    文章把矩阵分解当作邻居法之外的另一条路;GroupLens 用的正是找口味相近用户的邻居法。

来源 4
  1. Koren, Bell & Volinsky · Matrix Factorization Techniques for Recommender Systems, IEEE Computer 42(8), August 2009 · DOI record
  2. Same article · IEEE Xplore record
  3. Netflix Prize · official home page, archived January 2010: grand prize awarded September 21, 2009
  4. Netflix Prize · official leaderboard, archived January 2011

模型与学习 · 语言研究

神经语言模型给每个词学一个向量

n-gram 模型只认得见过的词组,换个说法就不会了。2003 年,Bengio 等人用神经网络同时学两样东西:每个词的向量,以及根据前几个词的向量预测下一个词的概率。意思相近的词向量相近,没见过的句子也能估计。word2vec 就从这个模型出发。

细节

留下的问题

要对整个词表算概率,词表一大,训练就很慢。

来源 1
  1. Bengio, Ducharme, Vincent & Jauvin · A Neural Probabilistic Language Model, JMLR 3, 2003

数学与算法 · 搜索与规划研究

UCT用老虎机的办法挑分支

状态太多时,没法把搜索树全展开,只能随机模拟一部分。模拟时该多走哪条分支?2006 年,匈牙利科学院的 Kocsis 和 Szepesvári 把多臂老虎机的 UCB 规则用到树的每个节点:常赢的分支多走,试得少的也给机会。AlphaGo 的蒙特卡洛树搜索引用了这项工作。

细节

留下的问题

模拟足够多时,它保证选到最好的动作;模拟少时就没有这个保证。

来源 1
  1. Kocsis & Szepesvári · Bandit Based Monte-Carlo Planning, ECML 2006, LNCS 4212

模型与学习 · 视觉研究

AlexNet让网络自己学看图

当时,大规模图像识别中常见的做法是先设计特征,再交给分类器;能学习特征的卷积网络也早已存在。AlexNet 把后者做大:八层、六千万参数,在两块 GPU 上训了五六天。团队在 ILSVRC 2012 中提交的集成系统,top-5 错误率是 15.3%,第二名是 26.2%。这次结果让更多人看到,数据、算力和深层网络放在一起能做到什么。

细节

能训起来靠几处改动:激活函数换成 ReLU,训练快了好几倍;用 dropout 和随机裁剪对抗过拟合;一块显卡放不下,就把网络拆到两块卡上。

留下的问题

它只会从一千个类别里挑一个答案,图里有什么、在哪、彼此什么关系,还管不了。

  • 用到 · ImageNet

    训练与评估使用 ImageNet 的 ILSVRC 子集;数据集与竞赛设置都是结果的一部分。

  • 用到 · CUDA

    论文提供 GPU 卷积实现,并链接到 cuda-convnet。训练还受当时两块 GPU 的显存与通信限制。

  • 互补 · SIFT

    AlexNet 的结果表拿 SIFT 加 Fisher Vector 的流水线作对照,那是此前最好的方法。

  • 互补 · 多列 GPU CNN

    AlexNet 说它的双 GPU 结构有点像 Cireşan 等人的“分列”CNN,引的是这组人 2011 年的 GPU CNN 论文。

来源 4
  1. AlexNet · NeurIPS 2012 proceedings
  2. AlexNet · original paper, §§1, 3.1–3.2, 4, 6–7
  3. ResNet · arXiv v1, 2015-12-10, abstract
  4. cuDNN · arXiv v1, 2014-10-03, abstract

模型与学习 · 视觉研究

多列 GPU CNN在 AlexNet 之前刷新纪录

传统视觉方法认手写数字和交通标志,比不过人。2012 年初,瑞士 IDSIA 的 Cireşan、Meier 和 Schmidhuber 用 GPU 训练好几列深度 CNN,每列看经过不同预处理的输入,最后把预测平均。MNIST 手写数字上,它第一次接近人的水平;交通标志识别上,错误率只有人的一半。

细节

留下的问题

它的成绩都在小图数据集上,ImageNet 这样的大规模图片还没有碰。

来源 1
  1. Cireşan, Meier & Schmidhuber · Multi-column Deep Neural Networks for Image Classification, arXiv v1, 2012-02-13

模型与学习 · 视觉研究

ResNet让很深的网络也训得动

网络越深,表达能力越强,可层数一多,连训练误差都可能变大。ResNet 加了残差连接:一组层学一个 F(x),输出时再把原来的输入 x 加回去。如果某几层用不着改什么,只要把 F(x) 学到接近零,输入就差不多原样传下去。优化也就更容易了。

细节

留下的问题

能训得动之后,再往深加,也未必更好。

  • 用到 · Faster R-CNN

    ResNet 的检测实验以 Faster R-CNN 为框架,只把 VGG-16 换成 ResNet-101,COCO 标准指标提高 6.0 个点。

来源 1
  1. ResNet · 2015 / CVPR 2016

模型与学习 · 强化学习研究

DQN看游戏画面学会决策

强化学习要让智能体在试错中学会选动作。DQN 用神经网络估计每个动作的价值,直接从 Atari 的游戏画面学起。它还把过去的交互存下来,训练时反复拿出来用,这叫经验回放。

细节

留下的问题

游戏输了能重来,真机器人试错要付出另一种代价。

  • 借用 · Q-learning

    DQN 是一个用 Q-learning 变体训练的卷积网络。

来源 1
  1. Playing Atari with Deep RL · 2013

模型与学习 · 语言研究

word2vec从上下文里学词向量

想从大量文本里学词向量,训练就得高效。word2vec 把预测任务做得很简单:CBOW 用周围的词猜中间的词,Skip-gram 反过来,用当前词猜附近的词。一个词每在新的上下文里出现一次,训练就把它的向量调一调。

细节

留下的问题

每个词只有一个固定的向量,换个句子也不会跟着变。

  • 借用 · 神经语言模型

    word2vec 从 Bengio 等人的前馈神经网络语言模型讲起,去掉其中最费时的非线性隐藏层,专门学词向量。

来源 2
  1. Mikolov et al. · Efficient Estimation of Word Representations, January 2013 v1
  2. arXiv · submission and revision history

模型与学习 · 语言研究

Seq2Seq一个序列换成另一个序列

有些任务的输入和输出都是序列,长度还各不相同,机器翻译就是一例。Seq2Seq 分两步走:先把输入编码,再从编码生成输出。这样,长短不一的序列都能用同一套流程来学。

细节

留下的问题

整句话被压成一个固定长度的向量;后来的 attention,让解码时能回头看输入的每个词。

来源 1
  1. Sequence to Sequence Learning · 2014

模型与学习 · 语言研究

翻译里的 attention不再把整句压成一个向量

2014 年的神经翻译,多把原句压成一个定长向量,再生成译文。句子一长就装不下,质量迅速下降。Bahdanau 等人给原句每个词都留一个向量,每译一个词,先给各位置打分,再加权求和。英法翻译上它得到 26.75 BLEU,同样设置的老办法只有 17.82。

细节

论文的对齐图很直观。英文 European Economic Area 译成法文 zone économique européenne,词序是反的:模型生成 zone 时直接跳过前两个词去看 Area,再一个词一个词往回看。

句子越长,老办法掉得越厉害,新模型到 50 词以上也没下滑。后来的系统沿用了这个想法:2017 年的 Transformer 把它叫作加性 attention,自己改用缩放点积,还去掉了循环网络。

留下的问题

每译一个词都要把原句每个词算一遍;词表只有 3 万个常用词,生僻词留待解决。

  • 借用 · Seq2Seq

    在 Cho 等人和 Sutskever 等人的 RNN 编码器—解码器上扩展:编码器为每个词保留向量,解码器每步重新计算权重,而不是只靠一个定长向量。

来源 4
  1. Bahdanau, Cho & Bengio · Neural Machine Translation by Jointly Learning to Align and Translate, arXiv v1, 2014-09-01, §§1–3, 5–7, Table 1, Figs. 2–3
  2. arXiv · version history and ICLR 2015 note
  3. GNMT · arXiv v1, 2016-09-26, §3 on the attention module
  4. Attention Is All You Need · arXiv v1, 2017-06-12, §§1, 3.2.1 on additive attention

分布式与服务 · 数据处理与存储研究

Spark RDD把中间结果留在内存里

在 MapReduce 上,两个作业要复用数据,只能先写进分布式文件系统再读出来。逻辑回归这类反复迭代的算法,就被拖慢了。RDD 把数据留在内存里,只记下每份数据是怎么算出来的,丢了就照着重算。第一轮之后,逻辑回归每轮比 Hadoop 快 25.3 倍。

细节

论文的日志排查例子只有三行:从 HDFS 读入日志,筛出以 ERROR 开头的行,把结果留在内存里。之后再查含 MySQL 的错误,就直接在内存里算。存着部分错误行的机器坏了,只把对应的那段原始日志重筛一遍。

在一次 75 台机器的 k-means 实验里,作者在第 6 轮开始时杀掉一台机器。那一轮从约 58 秒变成 80 秒;丢失的部分重算完,下一轮又回到 58 秒。

留下的问题

它适合对整批数据做同一种操作,不适合细粒度地改共享状态,比如 Web 应用的存储。

  • 用到 · HDFS

    日志例子从 HDFS 文件建立 RDD,迭代实验的第一轮也从 HDFS 读文本;需要复用的数据再留在内存里,可靠存储和内存复用是两层。

  • 借用 · MapReduce

    论文说明 MapReduce 可以用 flatMap 和 groupByKey 表达,并沿用它为慢节点启动备份任务的做法;不同在于中间结果可以留在内存里复用。

来源 3
  1. Zaharia et al. · Resilient Distributed Datasets, NSDI 2012, §§1–3, 6–7
  2. Li et al. · Parameter Server, OSDI 2014, §1.3
  3. Abadi et al. · TensorFlow, OSDI 2016, §2.3

分布式与服务 · 并行计算与训练研究

参数服务器让上千台机器共用一份模型

每台机器只管部分数据,却要不停读写共享参数:网络吃紧,一台慢了全都得等。2014 年 Li 等人的参数服务器把机器分成两种:服务器分片存参数,工作节点算梯度,再和服务器交换。同步多严由算法设计者定,在 1000 台机器上,工作节点空等时间从一半降到 1.7%。

细节

以梯度下降为例:工作节点算出梯度 push 给服务器,服务器加总后更新权重,工作节点再 pull 回新权重。每个工作节点只拉自己数据里出现过的参数,100 个工作节点时,每个只要总参数的 7.8%。

同步程度用最大延迟 τ 来调:τ=0 每轮都等齐,τ 越大等得越少。作者在稀疏逻辑回归上发现 τ=8 最划算。同样的算法,他们的系统只用 300 行代码,对照的专用系统都超过一万行。

留下的问题

放宽同步不白来:等得少了,收敛要跑的轮数就多了。

来源 3
  1. Li et al. · Scaling Distributed Machine Learning with the Parameter Server, OSDI 2014, §§1–5
  2. Abadi et al. · TensorFlow, OSDI 2016, §§2.2–2.3
  3. Sergeev and Del Balso · Horovod, arXiv v1, 2018-02-15, §3

分布式与服务 · 集群与云系统

Borg把闲着的资源让给批处理

在线服务要为少见的流量高峰预留资源,平时大多用不上。Google 的 Borg 让在线服务和批处理混在同一批机器上跑,估计每个任务实际要用多少,把多出来的拿去跑批处理。论文说,要是两类作业分开,中位数大小的集群单元得多用 20–30% 的机器。

细节

具体做法是:作业先报一个资源上限,Borg 每隔几秒按实际用量估一个“预留”,上限和预留之间的差额,拿去跑能接受资源差一点的批处理。中位数大小的单元里,约 20% 的工作负载跑在回收来的资源上。

Borg 的任务大多跑在 Linux 容器里,没用虚拟机。论文最后讲了这些经验怎样用到 Kubernetes 上,比如 Borg 的 alloc 对应 Kubernetes 的 pod。

留下的问题

这些数字来自 Google 自己的集群和工作负载,换一家公司未必一样。

  • 用到 · Linux

    每个 Borg 任务是一组 Linux 进程,跑在基于 cgroup 的容器里,由 Borglet 调整资源限制。

  • 用到 · Paxos

    Borgmaster 的状态存在一个基于 Paxos 的高可用分布式存储里,主节点也用 Paxos 选出。

来源 2
  1. Verma et al. · Large-scale cluster management at Google with Borg, EuroSys 2015, §§2, 5–6 and 8
  2. Joe Beda · 4 Years of K8s, Kubernetes blog, 2018-06-06

分布式与服务 · 集群与云系统

Kubernetes 1.0把容器交给集群来管

容器应用跑在很多台主机上,运维工作散在各处,得一台台地管。2015 年 7 月,Kubernetes 发布 1.0 版,给跨主机的容器应用提供了一套共同的管理系统。调度、扩缩容、服务发现和健康检查,都集中到了集群这一层。

细节

留下的问题

编排只是容器工具链的一环,底下的计算资源是另一回事。

  • 借用 · Borg

    Joe Beda 回忆,Kubernetes 建立在 Google 用 Borg 验证了十年的想法上,但代码是另外写的。

来源 2
  1. Google: original Kubernetes v1 announcement, July 21, 2015
  2. Joe Beda: dated project history distinguishing June 6 commit and June 10, 2014 announcement

内存与存储 · 内存与缓存产品

HBM把堆叠内存放进 GPU 封装

2015 年,AMD 的 Fury X 用上 HBM,把堆叠的 DRAM 带进了 GPU 产品。这些存储层之间用穿透硅片的通孔相连,再通过一块中介层接到处理器上。带宽靠的是很宽的接口和很短的连线,不只是把引脚速率往上提。

细节

留下的问题

HBM 本身更早就有,2015 年只是它进入 GPU 产品的一年。

来源 2
  1. AMD HBM/Fury announcement, 2015-06-16
  2. SK hynix, Hot Chips 26, August 2014, slides 4–10

模型与学习 · 语音研究

深度声学模型用深度网络换掉 GMM

多年来,语音识别靠 GMM-HMM:HMM 管语音在时间上的伸缩,GMM 判断每一帧像哪个状态。GMM 调得很成熟,新方法很难超过。这篇综述汇总了四个团队的结果:把 GMM 换成深度网络,同样的训练数据下,电话对话的词错误率从 27.4% 降到 18.5%。

细节

作者回头看也说得直白:大部分收益来自让网络利用相邻的几帧,以及直接预测上下文相关的状态。逐层预训练能减少过拟合,但训练时间上的好处,仔细设置初始权重的尺度也能做到。

代价在计算上。深度网络每一帧几乎要用上全部参数,识别 1 秒语音原本要 1.6 秒。把权重量化、改用 CPU 的定点指令后,降到 210 毫秒;用 GPU 是 66 毫秒。

留下的问题

深度网络只换掉了 GMM,HMM、语言模型和解码器都还在,离端到端还远。

  • 用到 · HMM

    深度网络替换的是 GMM:它输出 HMM 状态的后验概率,换算成似然后,仍交给 HMM 做对齐和解码。

来源 3
  1. Hinton et al. · Deep Neural Networks for Acoustic Modeling in Speech Recognition, IEEE Signal Processing Magazine 29(6), November 2012, DOI record
  2. Same article · author-hosted magazine proof, Switchboard, Voice Input and summary tables
  3. Same article · Google-archived draft dated 2012-04-27, §§I, II.E, IV and VI

模型与学习 · 视觉研究

Faster R-CNN候选框也交给网络

物体检测要说出是什么,还要框出在哪。主流做法先用 Selective Search 提出约两千个候选框,再由卷积网络逐个判断。网络已接近实时,提框反倒成了瓶颈,每张图约 2 秒。Faster R-CNN 用网络提框,和检测共用特征,每张图只多花约 10 毫秒。

细节

提框网络的关键是锚框:在特征图的每个位置预先放 9 个参考框,3 种大小乘 3 种长宽比。网络对每个锚框回答两件事:里面有没有物体,框该怎么挪、怎么缩放。

论文的计时表里,原来每张图共 1830 毫秒,提框占 1510 毫秒;换成提框网络后共 196 毫秒。准确率也没掉:在 PASCAL VOC 2007 测试集上,mAP 是 73.2%,Selective Search 方案是 70.0%。

留下的问题

它仍是先提框、再分类的两阶段做法,框也只能是矩形,描不出物体轮廓。

  • 用到 · ImageNet

    RPN 和检测网络共享的卷积层,用在 ImageNet 分类上预训练的模型初始化。

来源 4
  1. Faster R-CNN · arXiv v1, 2015-06-04, §§1, 3–5 and Tables 2–4
  2. Faster R-CNN · NIPS 2015 proceedings
  3. ResNet · arXiv v1, 2015-12-10, §4.3 on detection with Faster R-CNN
  4. Mask R-CNN · arXiv v1, 2017-03-20, abstract

模型与学习 · 视觉研究

U-Net给每个像素标上类别

生物医学图像要标出每个像素属于什么,可标好的训练图往往很少。2015 年,Freiburg 大学的 Ronneberger 等人提出 U-Net:一路缩小抓上下文,一路放大还原位置,两边对应的层直接接上,再配合大量数据增强。它在 2015 年 ISBI 细胞追踪比赛的透射光类别里大比分胜出。

细节

留下的问题

挨在一起的同类细胞容易连成一片,要靠给边界加权的损失才能分开。

来源 1
  1. Ronneberger, Fischer & Brox · U-Net, arXiv v1, 2015-05-18

系统软件 · GPU 编程与框架系统

TensorFlow把计算和状态画进同一张图

Google 原来用 DistBelief 训练神经网络:试新的层得换语言,换优化方法得改参数服务器,循环网络和强化学习也塞不进固定流程。TensorFlow 把运算、参数和参数更新都画进一张数据流图,由运行时分到多台机器上。2015 年 11 月,它开源了。

细节

论文用一个手写数字分类程序说明写法:先搭图,声明输入、权重、矩阵乘法、ReLU、损失和优化器,这时什么都还没算;再开一个会话,一批批喂数据,执行训练节点。整个程序写完才执行,运行时就能统筹安排。

参数服务器不再单独存在,一部分任务担任这个角色,但能运行任意计算图。2019 年的 PyTorch 论文把 TensorFlow 归为先建静态图的框架,用来对照自己边写边算的设计。

留下的问题

图得先建好再运行,结构在运行中才展开的算法,比如深度强化学习,用起来束手束脚。

  • 借用 · 参数服务器

    论文把 Li 等人的系统列为参数服务器路线中加入一致性模型、容错和弹性扩缩的一步;TensorFlow 不单设参数服务器,而让部分任务担任 PS 角色,并能运行任意计算图。

  • 互补 · Theano

    TensorFlow 论文的相关工作一节说,Theano 的编程模型和 TensorFlow 最接近。

来源 4
  1. Dean and Monga · Google Research blog, open-source release of TensorFlow, 2015-11-09
  2. Abadi et al. · TensorFlow: A system for large-scale machine learning, OSDI 2016, §§2–3, 5–6 and Figure 1
  3. Sergeev and Del Balso · Horovod, arXiv v1, 2018-02-15, §§1–3
  4. Paszke et al. · PyTorch, NeurIPS 2019, arXiv v1, §1

数学与算法 · 优化研究

Adam每个参数各自调步长

普通 SGD 的参数共用一个学习率,但不同参数的梯度尺度和噪声可能差很多。Adam 分别记录梯度与梯度平方的指数滑动平均,做偏差修正后,用前者除以后者的平方根加上 ε,调整每个参数的更新尺度。它减轻了对梯度尺度的敏感性,但更新量并不总被学习率硬性限制。

细节

设想两个参数,一个的梯度总在 1000 上下,另一个只有 0.001。学习率 0.001 的 SGD,前者每步挪 1,后者只挪百万分之一。用 Adam,梯度方向稳定时,两个参数每步都挪大约一个学习率。

后来的模型直接拿来用:2017 年的 Transformer 和 2018 年的 BERT 预训练,用的都是 Adam。

留下的问题

收敛证明只管凸问题,管不到神经网络;后来还有人找到让 Adam 收敛不到最优的凸问题。

来源 5
  1. Adam · arXiv v1, 2014-12-22, Algorithm 1, §§2–4, 6
  2. Adam · arXiv v9, 2017-01-30, ICLR 2015 conference version, Algorithm 1 defaults
  3. Attention Is All You Need · arXiv v1, 2017-06-12, §5.3
  4. BERT · arXiv v1, 2018-10-11, §3.4
  5. Reddi, Kale and Kumar · On the Convergence of Adam and Beyond, ICLR 2018 (arXiv posting 2019), abstract and §1

模型与学习 · 生成模型研究

GAN让生成器和判别器对抗

怎么让神经网络学会生成像真的一样的样本?2014 年,Goodfellow 等人让两个网络对抗:生成器造样本,判别器判断样本来自真实数据还是生成器,生成器的目标是让判别器出错。整个系统用反向传播就能训练。后来的扩散模型拿 GAN 作对照来比生成质量。

细节

留下的问题

两个网络一起练不稳定,有时生成器只会造几种样本。

来源 1
  1. Goodfellow et al. · Generative Adversarial Networks, arXiv, 2014-06-10

模型与学习 · 图学习研究

图卷积网络 GCN从邻居那里学

要给图里的节点分类,有时只有很少几个节点带标签。GCN 把节点自己的特征和图的连接关系放在一起,让每个节点从邻居那里学信息。它给图卷积找了一条简洁的传播规则,可以直接写成代码。

细节

留下的问题

图神经网络的研究早就有了,GCN 只是其中一项代表工作。

来源 1
  1. Kipf & Welling · GCN

模型与学习 · 图学习研究

GraphSAGE给没见过的节点算表示

如果给图上每个节点单独存一份 embedding,也就是一串代表它的数字,没见过的新节点就没有现成的表示。GraphSAGE 改学一个函数:采样一些邻居,把它们的特征聚合起来。新节点来了,用同一个函数也能算出表示。

细节

留下的问题

能不能泛化,还要看节点特征、邻居信息和数据分布,新图不一定都能直接套用。

  • 借用 · 图卷积网络 GCN

    GraphSAGE 的卷积式聚合,是 Kipf 和 Welling 的 GCN 的归纳版。

来源 1
  1. Hamilton et al. · 2017

模型与学习 · 图学习研究

GAT给每个邻居不同的分量

图上一个节点要从邻居那里汇总信息,可邻居不必同样重要。GAT 先用 attention 学出每个邻居该占多大分量,再按这个权重把信息合到一起。当时做图表示学习的还有 GCN 和 GraphSAGE,GAT 是并列的另一种做法。

细节

留下的问题

它和 GraphSAGE 几乎同时出现,是两条并行的路。

  • 借用 · Transformer

    GAT 把 Transformer 式的自注意力用到图的邻居上,明说受 Vaswani 等人启发。

来源 1
  1. Veličković et al. · GAT

模型与学习 · 语言研究

Transformer翻译只靠注意力

当时常见的循环翻译模型要沿序列逐步计算,也有卷积模型在尝试并行化。Transformer 不用循环和卷积,改用 attention 交换位置信息,训练时可以并行处理多个位置。论文在英德翻译上比此前最好成绩高出 2 BLEU 以上;英法实验在八块 GPU 上训练了三天半。后来的 BERT 和 GPT 分别发展了 encoder-only 和 decoder-only 路线。

细节

拿 50 个 token 来算:循环网络要串行走 50 步,双向 self-attention 一层就能连接任意两个位置。decoder 的 causal mask 则会挡住后面的 token,不能偷看。标准 dense attention 的分数矩阵是 50×50;固定隐藏维度时,这部分计算随序列长度按平方增长。训练能并行,不代表自回归生成也能一次吐出所有 token。

留下的问题

生成时还是得一个词一个词往外吐;长文本的平方开销也留给了后人。

  • 借用 · 翻译里的 attention

    论文把 Bahdanau 等人的加性 attention 列为两种常用 attention 之一;Transformer 改用缩放点积,并且不再搭配循环网络。

  • 用到 · GNMT

    英法实验沿用 GNMT 的 32000 词片词表;GNMT 加强化学习的结果也是表 2 里的对照基线。

  • 用到 · Adam

    训练用 Adam(β1 = 0.9,β2 = 0.98,ε = 10⁻⁹),学习率先在 4000 步内线性升高,再按步数的平方根倒数下降。

  • 互补 · 图灵机

    后来的理论工作证明,带位置编码和硬注意力的 Transformer 能模拟任意图灵机。

  • 用到 · BLEU

    Transformer 用 BLEU 报告成绩:英德翻译 28.4,英法翻译 41.0。

来源 5
  1. Attention Is All You Need · arXiv v1, 2017-06-12, §§1–2, 4–5, 7 and Figures 3–5
  2. Attention Is All You Need · NIPS 2017 proceedings
  3. BERT · arXiv v1, 2018-10-11, §3 on encoder and left-to-right Transformers
  4. ViT · 2020
  5. Pérez, Barceló & Marinković · Attention is Turing-Complete, JMLR 22(75), 2021

模型与学习 · 语言研究

ELMo让词义跟着句子变

word2vec 这类词向量给每个词一个固定向量。play 在体育报道和戏剧评论里意思不同,向量却一样。ELMo 先在约 3000 万个句子上训练语言模型,从左往右、从右往左各读一遍。用的时候,词的表示由整句话算出来。接进现有模型后,六个任务都刷新了最好成绩。

细节

论文拿 play 对比过。用 GloVe 查,离它最近的是 playing、game、football,几乎全是体育。用 ELMo,棒球报道里的 play 找到的句子在夸球员打得好;百老汇 play 找到的句子,讲演员在一部成功的戏里演出。

各层学到的东西也不同。做词义消歧,第二层比第一层好;做词性标注,第一层更好。所以 ELMo 让每个任务自己学怎么混合各层。接进 SQuAD 问答的基线模型,F1 从 81.1 提到 85.8。

留下的问题

每个任务仍要自己设计模型;所谓双向,也只是两个单向模型拼在一起。

  • 用到 · LSTM

    ELMo 的语言模型是两层双向 LSTM,词的表示取自这些层的加权组合。

  • 用到 · Penn Treebank

    ELMo 用 Penn Treebank 里《华尔街日报》部分的词性标注来检验表示。

来源 3
  1. Peters et al. · Deep contextualized word representations, arXiv v1, 2018-02-15, §§1–5 and Tables 1, 4–6
  2. Same paper · NAACL-HLT 2018 proceedings, pp. 2227–2237
  3. BERT · arXiv, §§1–2 and Figure 3 on ELMo as a feature-based approach

模型与学习 · 语言研究

BERT一次预训练,适配多种任务

BERT 先做掩码语言建模:把句子里的一些词遮住,让模型根据上下文去猜。这样学到的表示,再拿去适配各种下游任务。预训练出来的模型,不再只为原来的一个任务服务。

细节

留下的问题

它同时看左右两边,擅长理解;要一个词一个词往下写,还得靠只看前文的模型。

  • 用到 · GLUE

    论文用 GLUE 报告微调结果,最终版摘要给出的总分是 80.5%(2018 年初版为 80.4%)。

  • 用到 · SQuAD

    论文在 SQuAD 上评估问答,摘要报告 SQuAD v1.1 测试 F1 为 93.2,SQuAD v2.0 为 83.1。

  • 用到 · Okapi BM25

    Nogueira 和 Cho 让 BERT 对 BM25 检索出的前 1000 段重新排序,超过了 BM25 和此前的神经排序。

来源 2
  1. BERT · 2018
  2. Nogueira & Cho · Passage Re-ranking with BERT, arXiv v1, 2019-01-13

应用与产品 · 博弈与游戏系统

AlphaGo用神经网络给搜索减负

围棋每步约有 250 种走法,一盘约 150 步,没法穷举。之前最强的程序靠大量随机模拟估胜率,停在业余强手的水平。AlphaGo 加了两个神经网络:策略网络挑出值得考虑的几步,价值网络直接估计局面胜率。2016 年 3 月,它在首尔以 4:1 赢了李世石。

细节

训练分三步。先用 3000 万个局面训练策略网络,模仿人类高手;再让它和自己的旧版本对弈,用强化学习继续改进;最后用自我对弈的局面训练价值网络。价值网络算一次,准确度接近用策略网络一路模拟到终局,计算量却少 15,000 倍。

后来的 AlphaGo Zero 去掉了人类棋谱,只靠规则和自我对弈学习。训练三天后,它以 100:0 赢了战胜李世石的那个版本。

留下的问题

围棋规则全知、局面全可见、能无限模拟,现实里的大多数决策没有这样的模拟器。

  • 互补 · Deep Blue

    AlphaGo 评估的局面比深蓝少几千倍,靠网络挑出值得看的那些。

  • 用到 · UCT

    AlphaGo 介绍蒙特卡洛树搜索时,引了 Kocsis 和 Szepesvári 的 UCT。

来源 4
  1. Silver et al. · Mastering the game of Go with deep neural networks and tree search, Nature, 2016
  2. Same paper · DeepMind-hosted PDF, introduction, value-network section and Methods
  3. DeepMind · AlphaGo overview, Lee Sedol match in Seoul, March 2016
  4. DeepMind · AlphaGo Zero: Starting from scratch, 2017-10-18

模型与学习 · 强化学习研究

PPO压住策略的大幅更新

在强化学习里,策略决定模型每一步怎么行动。PPO 用裁剪等设计,压住策略一次大幅更新的动力。它同时照顾两头:实现起来不难,训练效率也顾到了。后来,用人类反馈训练模型时也用上了它。

细节

留下的问题

裁剪只是收着更新的劲,新旧策略之间的实际差距(KL)还是可能跑大。

来源 2
  1. PPO · 2017
  2. InstructGPT · 2022

模型与学习 · 强化学习研究

SAC用旧经验学连续控制

机器人和模拟控制都很在乎样本效率,也就是用尽量少的尝试学会。SAC 学的是取值连续的动作,靠两样东西:一是最大熵目标,让策略保留一些随机性;二是离策略的数据重用,以前收集的经验能反复拿来学。

细节

留下的问题

在模拟器里学会了,放到真实硬件上未必安全可靠。

  • 互补 · PPO

    SAC 是同策略 PPO 之外的异策略选择,实验里也拿 PPO 作对照。

来源 1
  1. Soft Actor-Critic · 2018

芯片与计算 · GPU 与加速器系统

Volta给矩阵乘法配专用单元

Volta V100 在通用计算单元旁边,加了一组叫 Tensor Core 的硬件,只做矩阵乘加。输入用 FP16,累加用 FP32,两种精度混着用。深度学习里的密集矩阵运算,有了一条专门的硬件通道。

细节

合适的神经网络运算能用上它,可数据照样要搬进搬出,其他算子也照样要跑。所以拿矩阵峰值,推算不出整个程序有多快。

留下的问题

这一代 Tensor Core 不做 FP64 矩阵乘法,双精度它帮不上忙。

  • 借用 · NVLink

    V100 白皮书写明 NVLink 于 2016 年随 P100 推出;V100 的第二代把每对线速从 20 提到 25 Gb/s,链路从 4 条增到 6 条。

来源 2
  1. NVIDIA Volta announcement, 2017-05-10
  2. NVIDIA V100 whitepaper v1.1, August 2017, pp. 14–16

芯片与计算 · GPU 与加速器系统

TPU v1为推理专门造一颗芯片

2013 年,Google 估算:如果每人每天用三分钟语音搜索,数据中心就得翻倍,用普通 CPU 太贵。团队用 15 个月做出一颗专做推理的芯片,2015 年起投入使用。在 Google 六个生产应用上,它平均比同期 CPU 和 GPU 快 15–30 倍。

细节

关键约束是响应时间:一个应用要求 99% 的请求在 7 毫秒内返回。在这条线内,TPU 能跑到自身最高吞吐的 80%。CPU 和 K80 只能开小批量,分别只有 42% 和 37%。

瓶颈常在内存,不在算力。六个应用里,两个 MLP 和两个 LSTM 受内存带宽限制,只有两个 CNN 受算力限制。作者估计,换上 K80 那样的 GDDR5 显存,TPU 还能再快两到三倍。

留下的问题

比的是 2015 年的同代芯片,倍数不能推到后来;训练也还得用现成的 GPU。

  • 借用 · Roofline

    论文用 Roofline 分析六个应用在 CPU、GPU 和 TPU 上的瓶颈,把浮点运算换成整数运算,并把运算强度改为每读一字节权重的运算次数。

  • 用到 · 能耗比例性

    第 6 节引用 Barroso 与 Hölzle 2007 年的能耗比例性主张,测量负载从 0% 到 100% 时三种芯片的功耗;TPU 在 10% 负载时仍用满载功耗的 88%。

  • 互补 · RISC

    TPU 论文说它的指令沿用 CISC 传统,一条指令平均要跑 10 到 20 个时钟周期。

来源 3
  1. Jouppi et al. · In-Datacenter Performance Analysis of a Tensor Processing Unit, arXiv v1, 2017-04-16, §§1–8 and 10
  2. Jouppi et al. · Ten Lessons From Three Generations Shaped Google's TPUv4i, ISCA 2021, Table 1
  3. Jouppi et al. · Google's Training Supercomputers from TPU v2 to Ironwood, arXiv v1, 2026-06-14, introduction

数据与评估 · 数据说明与治理研究

Datasheets给数据集配说明书

如果一份数据只有文件名和一行下载说明,用的人只能猜它能用在哪、不能用在哪。Datasheets 主张把这些写清楚:数据为什么收集、怎么标注、适合哪些用途、之后由谁维护。

细节

留下的问题

说明书让人有据可查,却证明不了数据就公平、准确、合用。

  • 用到 · Gender Shades

    Datasheets 开头举 Gender Shades 为例:商用性别分类系统在深肤色女性上错误率更高。

来源 1
  1. Gebru et al. · Datasheets for Datasets

人、协作与责任 · 责任与透明研究

联邦学习数据留在手机上,只传更新

手机上的数据能改进输入法和语音识别,可里面有你打过的字、拍过的照片,很私密,量也大,不适合全部上传。2016 年,Google 的 McMahan 等人提出联邦学习:数据留在设备上,每轮挑一批设备各自训练,只传回模型更新,服务器再加权平均。

细节

论文拿《莎士比亚全集》做实验:每个说话的角色算一个客户端,共 1146 个,台词多少、内容都不一样。让客户端在本地多跑几轮再上传,和每轮只算一次梯度相比,达到同样准确率的通信轮数少了 95 倍。

上传的更新仍可能泄露东西。比如特征是稀疏词袋时,非零的梯度会直接暴露用户打过哪些词。要更强的保证,可以再叠加差分隐私或安全多方计算。

留下的问题

原始数据不出设备,更新仍可能泄露信息;设备掉线这类部署问题,论文也没处理。

  • 互补 · 差分隐私

    论文把差分隐私列为可以叠加的更强保证,也说明它要靠加噪声换取,会损失一些效用。

来源 4
  1. McMahan et al. · Federated Learning of Deep Networks using Model Averaging, arXiv v1, 2016-02-17
  2. McMahan et al. · Communication-Efficient Learning of Deep Networks from Decentralized Data, AISTATS 2017, PMLR 54
  3. McMahan & Ramage · Federated Learning: Collaborative Machine Learning without Centralized Training Data, Google Research blog, 2017-04-06
  4. Bonawitz et al. · Towards Federated Learning at Scale: System Design, arXiv v1, 2019-02-04, abstract

人、协作与责任 · 责任与透明研究

Model Cards发布模型时交代边界

只看一个总分,判断不了模型适不适合眼前的场景。Model Cards 要求把这些写清楚:模型做什么用、在什么条件下评估、在不同群体上表现如何、有哪些已知限制。这样开发者、使用者和受影响的人,才有依据做判断。

细节

留下的问题

填好卡片只是第一步,安全审计和独立评估还得另做。

  • 互补 · Datasheets

    前者交代模型的用途与表现,后者交代数据的来历与边界。原论文明确把两者作为互补文档。

  • 用到 · Gender Shades

    Model Cards 的引言引用 Gender Shades,说明人脸属性检测在不同人群上表现不一。

来源 1
  1. Mitchell et al. · Model Cards for Model Reporting

人、协作与责任 · 责任与透明研究

Gender Shades按人群分开看准确率

商用人脸分类器通常只报一个总体准确率。2018 年,Buolamwini 和 Gebru 按肤色和性别交叉分组,审查了三家商用系统:深肤色女性的错误率高达 34.7%,浅肤色男性最高只有 0.8%。

细节

留下的问题

它审查的是性别分类这一个任务,别的任务要各自分组再测。

来源 1
  1. Buolamwini & Gebru · Gender Shades, PMLR 81 (FAT* 2018)

模型与学习 · 语音研究

WaveNet一个点一个点地生成声音

当时常见的语音合成方法会拼接录音片段,或先预测参数,再交给声码器合成。WaveNet 直接生成原始波形:先根据历史预测下一个采样点,再把它接回输入。概率分解写的是全部历史,实际网络只能看到感受野内的部分。在论文的英语和普通话测试中,听众给它的自然度打分高于所比较的参数式与拼接式系统。

细节

为了看得够远,它用“空洞因果卷积”:每层只看前面的点,间隔逐层翻倍,从 1 一直到 512。这样一组层能看到 1024 个采样点。训练时可以并行算;生成时只能算完一个点,喂回网络,再算下一个。

自然度按 5 分制打分。美式英语里 WaveNet 得 4.21,真人录音是 4.55。逐点生成难以用上并行硬件,很难做到实时。后来的 Parallel WaveNet 从 WaveNet 教出一个能并行生成的网络,比实时快 20 倍以上。

留下的问题

它只管把语言学特征变成波形,从文字得到这些特征,还得靠别的模型。

  • 借用 · ResNet

    WaveNet 通篇用了 He 等人的残差连接,再加跳连。

来源 2
  1. WaveNet · arXiv v1, 2016-09-12, §§1–2.2, 3.1–3.2, Table 1 and Appendix A
  2. Parallel WaveNet · arXiv v1, 2017-11-28, abstract

模型与学习 · 语言研究

稀疏混合专家参数很多,每次只用几个

普通网络里,每个样本都要过一遍全部参数,模型和数据一起变大,代价约按平方涨。只激活一部分网络的想法,一直没做出大效果。这篇论文的 MoE 层有成百上千个小网络,叫“专家”,由门控网络给每个位置挑几个。它用更少的计算,在语言建模和翻译上超过了当时最好的结果。

细节

门控先给每个专家打分,加一点噪声,只留最高的几个,没选中的专家完全不用算。麻烦在于门控会偏向少数专家:被选得多的训练得快,就更容易被选中。作者加了额外的损失,让各专家的负担尽量均衡。

在 1000 亿词的语料上,专家加到 65536 个,参数达 680 亿。同等计算量下,它的困惑度比基线低 39%,困惑度越低越好。再加到 131072 个反而变差,作者猜是太稀疏了。

留下的问题

计算省了,参数却照样要放进显存、在机器之间传,带宽和批量都成了难题。

  • 用到 · LSTM

    MoE 层放在堆叠的 LSTM 层之间,每个位置调用一次,每次可能选出不同的专家组合。

  • 借用 · 混合专家

    稀疏 MoE 把专家数放大到上千个,论文把这条思路追溯到 Jacobs 等人 1991 年的工作。

来源 2
  1. Shazeer et al. · Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer, arXiv v1, 2017-01-23, §§1–5
  2. Switch Transformer · arXiv v1, 2021-01-11, abstract

系统软件 · GPU 编程与框架系统

PyTorch写一句,算一句

2010 年代中期的主流框架,要先搭一张静态的计算图,再拿数据反复去跑。这样便于优化,却难调试,能写的计算也受限。PyTorch 是一个 Python 库,写一句就算一句,同时能自动求导、用 GPU 加速,速度和当时最快的库相当。

细节

论文里的例子很直白:一个层就是一个 Python 类,构造函数里建好权重,forward 方法里做矩阵乘法、加偏置。因为每句都立刻执行,print、调试器和 matplotlib 都照常能用,中间结果随时能看。

快靠的是底下:核心库 libtorch 用 C++ 写,算子和自动求导都在里面跑;GPU 显存由缓存分配器反复复用。在作者测的 6 个模型上,PyTorch 的训练速度都在最快框架的 17% 以内。

留下的问题

一句一句执行,就丢了看到整个程序才有的优化;作者当时正在做 JIT 来补。

  • 互补 · NumPy

    PyTorch 提供 torch.from_numpy() 和 .numpy(),两边共用同一块内存,转换不复制数据,耗时与数组大小无关。

  • 互补 · Theano

    PyTorch 论文把 Theano 归为先建静态数据流图的框架,说这样做牺牲了易用、易调试和灵活。

来源 3
  1. Paszke et al. · PyTorch: An Imperative Style, High-Performance Deep Learning Library, NeurIPS 2019, arXiv v1, §§1–7
  2. Shoeybi et al. · Megatron-LM, arXiv v1, 2019-09-17, abstract and §3
  3. Rajbhandari et al. · ZeRO, arXiv v3, 2020-05-13, §10.1

分布式与服务 · 并行计算与训练开放问题

Ring-allreduce让梯度沿环传两圈

多卡训练要把每张卡的梯度汇总再平均。2017 年初,百度把高性能计算里的 ring-allreduce 带到深度学习:GPU 连成一个环,每张卡把梯度切成小块,只和相邻的卡收发,传两圈就完成汇总。Uber 的 Horovod 就是从百度的实现改出来的。

细节

留下的问题

百度放出的只是一个演示用的小 C++ 库,给框架作者当模板。

  • 用到 · MPI

    百度的 ring-allreduce 库要靠 CUDA 和 MPI 才能运行。

来源 2
  1. Baidu Research · baidu-allreduce (README)
  2. Sergeev & Del Balso · Horovod, arXiv v1, 2018-02-15, §3

分布式与服务 · 并行计算与训练系统

Horovod改几行代码扩到多机

Uber 的数据越来越多,有的训练要跑一周以上。TensorFlow 自带的方案用参数服务器,得自己起进程、改程序,在 128 张 GPU 上约一半算力耗在通信上。Horovod 改用 ring-allreduce:各卡算完自己那批数据的梯度,直接互相求平均。

细节

ring-allreduce 把 N 个节点连成一圈,每个节点只和两个邻居通信。前一半步骤把收到的值加到自己的缓冲区上,后一半用收到的值覆盖。缓冲区够大时,网络带宽能用满。

单卡程序只要改四处:初始化,给每个进程分一张 GPU,包住原来的优化器,开始时广播初始变量。按 Uber 的测试,Inception V3 和 ResNet-101 的扩展效率达到 88%,约为标准分布式 TensorFlow 的两倍。

留下的问题

当时只支持一台服务器装得下的模型,在集群上装 MPI 也还麻烦。

  • 用到 · TensorFlow

    Horovod 为 Uber 的 TensorFlow 训练而写,用包装过的优化器和广播操作,取代 TensorFlow 自带的参数服务器式分布式训练。

  • 用到 · MPI

    用 Open MPI 这类 MPI 实现启动多份训练程序并建立进程间通信;论文的例子用 mpirun 在 4 台服务器上启动 16 个进程。

  • 借用 · Ring-allreduce

    Horovod 从百度的 ring-allreduce 草稿实现出发,做成独立的 Python 包,换上 NVIDIA 的 NCCL,并支持一台服务器上多块 GPU。

来源 1
  1. Sergeev and Del Balso · Horovod: fast and easy distributed deep learning in TensorFlow, arXiv v1, 2018-02-15

应用与产品 · 翻译与语言服务系统

GNMT神经翻译走进 Google 翻译

到 2016 年,神经翻译在研究基准上已追近短语翻译系统,可上线还卡在三处:慢,生僻词译不好,有时漏译。GNMT 用 8 层 LSTM,把词切成“词片”,推理放到 TPU 上。2016 年 9 月,Google 翻译的中译英全部改用它,每天约 1800 万次。

细节

论文的例句开头 Jet makers feud 被切成 _J et _makers _fe ud。不常见的 Jet 和 feud 各拆成两块,常见词保持完整,下划线标出词的开头。这样不用专门处理词表外的词,序列也不会像逐字符那样拉得很长。

双语评分员按 0 到 6 分给译文打分。英译中上,旧的短语系统平均 4.035 分,人工译文 4.987 分。GNMT 得 4.594 分,补上了两者差距的 58%。

留下的问题

它仍会漏词、译错人名和生僻术语,而且一句一句孤立地翻,不看上下文。

  • 用到 · LSTM

    编码器和解码器都是 8 层 LSTM,编码器最底层为双向。

  • 用到 · 翻译里的 attention

    论文写明 attention 模块与 Bahdanau 等人的类似,用一个单隐层前馈网络给原句各位置打分。

  • 借用 · ResNet

    受 ResNet 启发,在堆叠的 LSTM 层之间加残差连接;作者说不加时 4 层还好,6 层勉强,超过 8 层就很差。

  • 互补 · IBM 翻译模型

    GNMT 把统计机器翻译(引 Brown 等 1993)当作要比的主流方法。

  • 用到 · BLEU

    GNMT 用 BLEU 报告成绩,另外还请人做了并排评分。

来源 3
  1. Wu et al. · Google's Neural Machine Translation System, arXiv v1, 2016-09-26, §§1, 3–4, 6, 8 and Table 10
  2. Google Research blog · A Neural Network for Machine Translation, at Production Scale, 2016-09-27
  3. Attention Is All You Need · arXiv v1, 2017-06-12, Table 2 and §5.1

应用与产品 · 搜索与推荐系统

YouTube 深度推荐先召回几百个,再排序

YouTube 要从几百万个视频里,给每个用户挑几十个;用户满不满意几乎无从得知,只能看观看记录。2016 年 Google 的这篇论文把推荐换成两段深度网络:第一段在几十毫秒内找出几百个候选,第二段给它们打分,按预计观看时长排,不按点击率。

细节

候选生成被写成一个超大的分类题:在几百万个视频里,猜用户下一个会看完哪个。最近 50 次观看的视频向量取平均,搜索词也一样,再拼上地区、设备等特征,送进几层网络。上线时不算概率,直接在点积空间里找最近的视频。

论文记下了几个坑。用户刚搜了 taylor swift,模型若知道这次搜索,就会把搜索结果页原样搬到首页,效果很差,所以搜索词被打散成无序的词袋。按点击率排序会抬高点进去却不看完的标题党,所以排序改按观看时长加权。

留下的问题

观看时长只是代理指标,用户到底满不满意,作者几乎拿不到真值。

  • 借用 · word2vec

    视频向量的做法受连续词袋(CBOW)语言模型启发;论文引用的是 Mikolov 等人 2013 年的另一篇 Distributed Representations of Words and Phrases,而不是本树 word2vec 节点所用的 CBOW 原文。

  • 借用 · Netflix Prize

    候选生成一开始模仿矩阵分解推荐,作者把它写成矩阵分解的非线性推广。

来源 3
  1. Covington, Adams & Sargin · Deep Neural Networks for YouTube Recommendations, RecSys 2016 · Google-hosted PDF, §§1–5
  2. Google Research · publication record
  3. ACM · DOI record, RecSys '16, pp. 191–198

系统软件 · 语言与编译器研究

TVM把模型编译到各种硬件上

2018 年前后,框架把干活的算子交给厂商写好的库,比如 cuDNN。这些库主要照顾服务器 GPU,换到手机或 FPGA 上就得大量手工调。TVM 把它当成编译问题:先在计算图上做融合等优化,再为每个算子生成目标硬件的代码,用学出来的代价模型挑更快的写法。

细节

举个例子:卷积后面跟一个逐元素加法。不融合时,卷积先把结果写回显存,加法再读回来;融合成一个内核,中间结果就不用来回搬。论文在 Titan X 上测到,融合后的算子快 1.2–2 倍。

每个算子先写清“算什么”,再决定“怎么算”:怎么分块、循环按什么顺序、数据放哪层缓存。组合太多,TVM 就在目标硬件上实测候选代码,用测到的时间训练代价模型,预测哪种写法更快。

留下的问题

加速只在几种硬件和推理模型上测过,代价模型也得靠在目标硬件上实测来训练。

  • 用到 · LLVM

    论文图 2 中,TVM 生成的低层循环程序可以交给 LLVM IR 后端,也可以输出 CUDA、Metal 或 OpenCL。

  • 用到 · Metropolis 方法

    TVM 用模拟退火搜索调度:降低预测成本的移动总接受,升高的多半拒绝,正是 Metropolis 的接受规则。

来源 3
  1. Chen et al. · TVM, OSDI 2018, abstract, §§1–5, figure 2 and §6
  2. Chen et al. · TVM: End-to-End Optimization Stack for Deep Learning, arXiv v1, 2018-02-12
  3. Apache Software Foundation · Apache TVM becomes a Top-Level Project, 2020-11-30

数据与评估 · 评测基准研究

SQuAD答案必须从原文里摘

此前的阅读理解数据,要么质量高但只有几千道题,要么有上百万题,却是挖空实体自动生成的。SQuAD 请众包工作者就维基百科文章写了 107,785 个问题,答案必须是原文里的一段。题目由人写,评分却能自动完成。基线模型 F1 是 51.0%,人类是 86.8%。

细节

论文第一个例子讲降水。问“什么让降水落下”,答案是 gravity:要先找到 falls under gravity 那句,再明白 under 在这里表示原因,不表示位置。为了不让题目照抄原文,网页禁用了复制粘贴,提醒工作者用自己的话问。

两年后,BERT 的集成模型超过了排行榜上的人类成绩,但这要打折扣。2017 年,Jia 和 Liang 在段落里自动插入一句话,不改答案,也不会误导人,却能干扰模型。已发表模型的平均 F1 从 75% 跌到 36%。

留下的问题

每道题在原文里都有答案,模型只管挑最像的一段,从不用判断“原文没说”。

来源 5
  1. SQuAD · arXiv v1, 2016-06-16, §§1–3
  2. SQuAD · EMNLP 2016 proceedings, §6 and Table 5
  3. BERT · arXiv v1, 2018-10-11, §4.2 and Table 2
  4. Jia and Liang · Adversarial Examples for Evaluating Reading Comprehension Systems, arXiv v1, 2017-07-23, abstract
  5. Rajpurkar, Jia and Liang · Know What You Don't Know: Unanswerable Questions for SQuAD, arXiv v1, 2018-06-11, abstract

数据与评估 · 评测基准研究

GLUE用一个总分考九项任务

到 2018 年,语言理解模型大多只为一个任务设计,换个领域就吃力。GLUE 收集了九个任务,有语法、情感、复述、蕴含等,训练数据从 706 条到 40 万条不等。测试集标签不公开,在网站上统一打分取平均。有的任务数据很少,能在任务间共享知识的方法就占便宜。

细节

初版论文的基线里,最高平均分是 60.3,来自 BiLSTM 加 ELMo。总分也掩盖了差别:CoLA 上不少基线接近 0,SST-2 上却都在 80 以上。

分数涨得比预想快。BERT 初版报告 GLUE 80.4 分,比此前最好成绩高 7.6。到 2019 年 5 月,最高分离作者估计的人类水平只差 3.3,部分相同的作者推出了更难的 SuperGLUE。

留下的问题

有些任务可能靠表面技巧就能解掉;总分只是简单平均,不代表各种能力都一样好。

  • 借用 · SQuAD

    GLUE 的 QNLI 任务由 SQuAD 自动改造:把问题和段落里的每个句子配对,判断这句话是否包含答案。

来源 4
  1. GLUE · arXiv v1, 2018-04-20, §§1, 3, 5 and Tables 1, 5
  2. GLUE · arXiv v3, 2019-02-22 (ICLR 2019), footnote on the updated QNLI
  3. BERT · arXiv v1, 2018-10-11, abstract and §4.1
  4. SuperGLUE · arXiv v1, 2019-05-02, abstract and §1

电力与机房 · 机房与散热系统

TPU v3 液冷更密集的芯片,换一种散热方式

Google 前两代 TPU 都用风冷,v2 每颗的热设计功耗是 280 W。2018 年的 TPU v3 升到每颗 450 W,改用了液冷:铜冷板压在芯片封装上,冷却液流过冷板,把热量带走。按 Google 后来的说法,这让部署的芯片密度翻了一倍。

细节

液冷先改变的是机房布局:TPU 要集中放在几个相邻机柜里,才能分摊冷却设施的成本。训练用的超级计算机本来就这样摆;推理要靠近各地用户,有些机房已经塞满。所以 2020 年的推理芯片 TPUv4i 把热设计功耗压到 175 W,回到风冷。

泵比风扇省电得多:每颗液冷 TPU v3 分摊的泵功率,不到同等热设计功耗下风冷所需风扇功率的 5%。从 TPU v3 起,Google 的训练系统只用液冷。

留下的问题

热照样得排出机房,代价是机柜要成组摆放,还要配水路和备用电源。

来源 5
  1. Google · 100 things we announced at I/O '18, 2018-05-10, item 19
  2. Jouppi et al. · Ten Lessons From Three Generations Shaped Google's TPUv4i, ISCA 2021, Table 1 and lesson 5
  3. Padilla & Iyengar (Google) · Evolution of Google's IT Liquid Cooling, Hot Chips 2025 tutorial, slides 4–10
  4. Iyengar & Huffman · Enabling 1 MW IT racks and liquid cooling at OCP EMEA Summit, Google Cloud blog, 2025-04-29
  5. Jouppi et al. · Google's Training Supercomputers from TPU v2 to Ironwood, arXiv v1, 2026-06-14, Table 1 and conclusion

数学与算法 · 搜索与规划研究

HNSW在分层图上找最近的向量

向量越来越多,逐个比较找最相近的那些太慢。2016 年,Malkov 和 Yashunin 提出 HNSW:把向量连成多层的邻近图,上层稀疏、下层稠密,查询从最上层开始,一层层往下细找,复杂度随数据量按对数增长。RAG 的检索就用了 FAISS 里的 HNSW 近似来加速。

细节

留下的问题

它找的是近似最近邻,偶尔会漏掉真正最近的那个。

来源 1
  1. Malkov & Yashunin · Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs, arXiv v1, 2016-03-30

模型与学习 · 后训练与推理研究

从人类偏好学习让人比较两段行为

很多任务写不出奖励函数。2017 年,OpenAI 和 DeepMind 的 Christiano 等人让人比较两段行为片段、选出更好的一段,用这些选择训练一个奖励模型,再交给强化学习去优化。人只需对不到 1% 的交互给出反馈。InstructGPT 的 RLHF 就沿用了这个做法。

细节

留下的问题

它只在 Atari 游戏和模拟机器人上做了试验。

来源 1
  1. Christiano et al. · Deep reinforcement learning from human preferences, arXiv v1, 2017-06-12

模型与学习 · 语言研究

GPT-3看几个示例就能做新任务

当时,按任务微调是常见做法,不更新权重直接做任务的研究也已出现。GPT-3 把预测下一个 token 的预训练做大,并系统比较 zero-shot、one-shot 和 few-shot 设置:只在提示里说明任务、放入示例,看看模型能做到哪一步,不为每项任务另改权重。

细节

留下的问题

上下文学习不改权重,换个任务,效果可能就不灵了。

  • 用到 · 缩放定律

    GPT-3 依据这篇的分析,训练比常见做法大得多、词元却少得多的模型;大模型的批量和学习率设置也引用了它。

  • 用到 · Common Crawl

    GPT-3 的训练数据有 60% 来自经过质量过滤和去重的 Common Crawl,约 4100 亿词元。

来源 1
  1. Language Models are Few-Shot Learners · 2020

模型与学习 · 语言研究

缩放定律按规模预测语言模型的损失

给定一笔算力,模型该多大、数据该多少?Kaplan 等人训练了一批 Transformer 语言模型,发现测试损失分别随参数量、数据量和算力按幂律下降,有的趋势跨了七个数量级以上。由此能算出最划算的分配:算力主要用来扩大模型,数据适度增加,而且不必训到收敛。

细节

几条结论可以直接用。模型每大 8 倍,数据只要多约 5 倍,就不会因为数据不够吃亏。算力增加时,最优模型大小约按算力的 0.73 次方增长,训练步数只按 0.03 次方。多出来的算力,主要该换成更大的模型。

2022 年的 Chinchilla 论文给出另一种分配。作者训了 400 多个模型,认为模型和数据应同比例增长。据此训练的 Chinchilla 有 700 亿参数,和 2800 亿参数的 Gopher 算力相同,在大量下游任务上胜过它。

留下的问题

这是在一个数据集上拟合出的经验规律,预测的是损失,不直接预测下游能力。

  • 用到 · Transformer

    缩放规律是在 Transformer 语言模型上拟合的;论文另外和 LSTM 做了对比。

  • 用到 · 随机逼近

    Chinchilla 把损失里受数据限制的部分看作随机逼近项,按随机一阶方法的收敛速度下降,引的是 Robbins 和 Monro。

来源 3
  1. Kaplan et al. · Scaling Laws for Neural Language Models, arXiv v1, 2020-01-23, abstract, §1 and Figure 3
  2. GPT-3 · arXiv, §2 and Figures 2.2, 3.1 citing this analysis
  3. Chinchilla · Training Compute-Optimal Large Language Models, arXiv v1, 2022-03-29, abstract, §§1–2 and Table 2, App. D.2

应用与产品 · 搜索与推荐研究

RAG生成之前先去查资料

预训练模型把知识记在参数里,要精确调用、给出出处、更新知识都不方便。2020 年,Lewis 等人把一个 seq2seq 生成器和一个维基百科的稠密向量索引接在一起:先检索相关段落,再据此生成答案。它在三个开放域问答任务上刷新了最好成绩。

细节

留下的问题

检索不到或检索错了,生成的答案也跟着错。

  • 互补 · Okapi BM25

    RAG 的消融实验把可学习的稠密检索器换成固定的 BM25;在 FEVER 上,BM25 反而最好。

  • 用到 · BERT

    RAG 的检索器里,查询和文档各用一个 BERT 编码成向量。

  • 用到 · HNSW

    RAG 用 FAISS 建一个最大内积检索索引,并用 HNSW 近似来加速。

来源 1
  1. Lewis et al. · Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, arXiv v1, 2020-05-22

应用与产品 · 助手与创作工具产品

Codex 与 Copilot在编辑器里续写代码

GPT-3 能照文档字符串写些简单程序,但没专门学代码,在后来的 HumanEval 上一题没对。2021 年,OpenAI 用 GitHub 公开代码微调出 Codex。6 月,GitHub 推出由它驱动的 Copilot 预览,在编辑器里补整行、整个函数。

细节

HumanEval 有 164 道手写的题,每题给出函数签名和文档字符串,用单元测试判对错。之所以手写,是因为现成题目的答案早已在 GitHub 上。120 亿参数的 Codex 每题只生成一次,能做对 28.8%。

论文直接写了它的毛病:文档字符串里串起的操作越多越容易错,每多一步,通过率大约降为原来的二分之一到三分之一。它还会把变量和操作对错位。

留下的问题

生成的代码可能看着对、其实没做到要求,也可能不安全,必须有人审查。

  • 借用 · GPT-3

    Codex 从 GPT-3 系列模型出发,在 GitHub 代码上微调;论文说从预训练模型出发并没有提高最终效果,但收敛更快。

来源 3
  1. Chen et al. · Evaluating Large Language Models Trained on Code, arXiv v1, 2021-07-07, §§1–3, 6–7
  2. GitHub blog · Introducing GitHub Copilot: your AI pair programmer, 2021-06-29
  3. GitHub blog · GitHub Copilot is generally available to all developers, 2022-06-21

模型与学习 · 视觉研究

ViT把图像切块交给 Transformer

Transformer 原本是处理序列的结构。ViT 把图像切成一个个小方块,叫 patch,排成序列,交给 Transformer 编码。这套结构就这样搬到了视觉上。不过训练规模和归纳偏置,也就是结构里预先带的假设,依然要紧。

细节

留下的问题

结构可以一样,图像和文字的数据特点却不一样。

  • 借用 · Transformer

    把图像块作为序列输入 Transformer,不是说图像因此和语言完全一样。

来源 1
  1. An Image is Worth 16x16 Words · 2020

模型与学习 · 生成模型研究

Diffusion从噪声里一步步生成

DDPM 学的是一步步去噪:从一团噪声出发,每次去掉一点,最后得到生成的样本。它成了生成建模的一条重要路线。

细节

留下的问题

扩散的想法早有人提过,DDPM 把它做成了代表作。

  • 互补 · GAN

    DDPM 把 GAN 列为此前的生成模型之一,并拿 ProgressiveGAN 比较样本质量。

  • 用到 · U-Net

    DDPM 的去噪网络用的是 U-Net 骨架。

来源 1
  1. DDPM · 2020

模型与学习 · 视觉研究

CLIP把图像和文字接起来

一套固定的类别标签,很难覆盖所有想识别的东西。CLIP 用成对的图片和文字训练两个编码器,一个看图,一个读文字,让配对的图和文在表示上靠得更近。这样一来,要识别什么,直接用一句自然语言描述就能定下来。

细节

比如分辨自行车和汽车,就把“自行车的照片”“汽车的照片”两句话分别编码,再和图片的表示比一比。不用为这两个类别另训分类器。代价是描述换个说法,结果可能就变了,模型本身也不会给出解释。

留下的问题

图和文对齐了,但光靠对齐,还生成不了有依据的回答。

来源 1
  1. CLIP · 2021

应用与产品 · 科学与医疗系统

AlphaFold 2用 AI 预测蛋白质结构

蛋白质折成什么形状,决定了它能做什么。2020 年的结构预测评测 CASP14 上,AlphaFold 2 交出的结果,被看作这一领域的重大进展。

细节

留下的问题

预测出结构,还解释不了蛋白质的全部功能和动态,实验也省不掉。

来源 2
  1. CASP14 · 2020 announcement
  2. AlphaFold 2 · Nature 2021

分布式与服务 · 并行计算与训练研究

ZeRO把训练状态分给各张卡

普通的数据并行里,每张 GPU 都存一整份训练状态。模型一大,显存就浪费得厉害。ZeRO 分几个阶段,把优化器状态、梯度和参数切成片,各张卡分着存,用到时再互相传。

细节

比如四张卡原本各存一份优化器状态,现在可以改成每张只管其中一部分。重复的副本省掉了,可计算用到的数据得及时交换。训练用的内存,也不会全部缩到原来的四分之一。

留下的问题

省下显存的代价是更多通信,它也只是几种并行方式里的一种。

  • 互补 · Megatron-LM

    ZeRO 论文把 ZeRO 驱动的数据并行与 Megatron-LM 的模型并行组合使用,并拿 2019 年 9 月开源的 Megatron-LM 作对照。

来源 1
  1. ZeRO · 2019

分布式与服务 · 并行计算与训练研究

Megatron-LM把一层网络拆到多张卡上

2019 年,语言模型大到一张 GPU 装不下,现成的并行方案又得重写模型。Megatron-LM 只在 PyTorch 里加几处通信,就把每层的矩阵乘法切到同一台服务器的几张卡上。NVIDIA 用它在 512 张 V100 上训出了 83 亿参数的模型。

细节

拿 MLP 来说:先乘矩阵 A,再过 GeLU。把 A 按列切,每张卡各算一半输出、各自过 GeLU,中间不用通信。第二个矩阵按行切,直接接住这些输出,最后做一次 all-reduce,把各卡的结果加起来。

实际训练时,一台服务器里的 8 张卡组成一个模型并行组,再拿 64 组做数据并行。整套系统的扩展效率是 76%。这个 83 亿参数的模型训了 9.2 天。

留下的问题

层内切分通信太频繁,只在一台机器内部划算,跨机器效率掉得很快。

  • 用到 · PyTorch

    模型并行只靠在原生 PyTorch 里加几处通信操作实现,通信由 Python 调用 NCCL 完成,不需要新的编译器。

  • 用到 · Volta

    实验用 32 台 DGX-2H、共 512 张 V100,并用混合精度训练来利用 V100 的 Tensor Core。

  • 用到 · Transformer

    切分方式依赖 Transformer 层的结构:MLP 的两次矩阵乘法先按列、再按行切,注意力按头切。

来源 2
  1. Shoeybi et al. · Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism, arXiv v1, 2019-09-17, §§1–3, 5–6
  2. Rajbhandari et al. · ZeRO, arXiv v3, 2020-05-13, §§1 and 10

模型与学习 · 后训练与推理研究

LoRA冻住大模型,只训一小块

为每个任务都存一份完整微调过的 1750 亿参数模型,代价太高。2021 年,Hu 等人提出 LoRA:冻住预训练权重,只在每层加入可训练的低秩分解矩阵。对 GPT-3,可训练参数少一万倍,硬件需求降到三分之一,效果与全量微调相当或更好。

细节

留下的问题

低秩更新能改的东西有限,任务离原模型太远时未必够用。

  • 借用 · GPT-3

    LoRA 主要在 GPT-3 175B 上检验:冻住它的权重,只训低秩更新。

来源 1
  1. Hu et al. · LoRA: Low-Rank Adaptation of Large Language Models, arXiv v1, 2021-06-17

芯片与计算 · 器件与制程产品

EUV 光刻用极紫外光印芯片

芯片上的图形用光刻制造。193 纳米 DUV 在一些精细图形上需要多重图形化,工序和成本随之增加。EUV 使用 13.5 纳米光,在合适的层和工艺中能减少这些步骤,不代表所有层都只需一次曝光。相关实验从 1980 年代开始;到 2019 年,采用 EUV 工艺的芯片进入商用产品。

细节

难处在于,这种光几乎会被所有东西吸收。所以它得在高真空里产生和传播,也不能用透镜,只能靠多层膜反射镜把掩模上的图形缩小四倍,投到硅片上。光源是用激光两次打中飞过的小锡滴,把锡打成发出 EUV 的等离子体,每秒最多五万次。

EUV 也没有取代全部光刻。芯片上最复杂的几层用 EUV 印,其余各层仍用 DUV 光刻机。ASML 说,到 2021 年底,客户工厂里在用的新一代 EUV 机器有 127 台。

留下的问题

光有 EUV 还不够,芯片厂还得把掩模、光刻胶和设计工具一起调好。

  • 互补 · Moore 1965

    ASML 把 EUV 说成让摩尔定律继续、晶体管继续变小的手段。

  • 互补 · 台积电

    台积电宣布,N7+ 是第一个大批量为客户交付产品的 EUV 工艺。

来源 4
  1. TSMC · N7+ is first EUV process delivering customer products in high volume, press release, 2019-10-07
  2. Samsung · Starts production of EUV-based 7nm LPP process, press release, 2018-10-18
  3. ASML · Making EUV: from lab to fab, company story, 2022-03-30
  4. ASML · EUV lithography systems, product page (13.5 nm light, NXE, layer use)

芯片与计算 · GPU 与加速器系统

RDNA重新组织图形计算单元

RDNA 随 Radeon RX 5700 系列上市,主攻游戏图形的效率。它以 32 个线程为一组(叫波前)来执行,配上 32 通道的 SIMD 单元。缓存层次也重新设计过,为的是减少执行和访存的开销。

细节

留下的问题

通用计算它也能做,只是设计重心放在了游戏图形上。

  • 借用 · AMD GCN

    RDNA 的双计算单元取代了 GCN 的计算单元,同时保持与 GCN 兼容。

来源 2
  1. AMD RX 5700 availability release, 2019-07-07
  2. AMD RDNA whitepaper, 2019, pp. 4–5 and 12–16; original PDF mirror

芯片与计算 · GPU 与加速器系统

Ampere A100让矩阵加速支持更多精度

Ampere A100 的 Tensor Core 专做矩阵运算。这一代新增了 TF32、BF16 和 FP64 三种格式,AI 和科学计算能用上矩阵加速的地方更广了。MIG 则能把一颗 A100 切成最多七个独立实例,让不同任务共用一块硬件。

细节

留下的问题

TF32 能表示的数值范围和 FP32 一样,精度却低一些。

  • 借用 · Volta

    A100 白皮书把 SM、Tensor Core 和内存的改动都写成相对 V100 的提升。

来源 2
  1. NVIDIA A100 production release, 2020-05-14
  2. NVIDIA A100 architecture whitepaper, Tensor Core formats and MIG

芯片与计算 · GPU 与加速器系统

CDNA把计算架构单独分出来

AMD 用 MI100 推出 CDNA,面向高性能计算和 AI,和侧重图形的 RDNA 分成两条线。CDNA 在源自 GCN 的标量和向量单元旁边,加上了矩阵核心,专做混合精度的矩阵乘加。

细节

留下的问题

MI100 去掉了光栅化和显示硬件,不能当游戏显卡用。

  • 借用 · AMD GCN

    CDNA 的计算单元从 GCN 演变而来,另加了矩阵核心。

来源 2
  1. AMD MI100 launch release, 2020-11-16
  2. AMD CDNA whitepaper, 2020, pp. 2–5

数据与评估 · 评测基准研究

MMLU用 57 个学科考模型

以前评估语言模型,常常只看单一的语言任务。MMLU 用 57 个学科的选择题,考模型在预训练中学到了多少知识。成绩还能按学科拆开看,总分盖住的短板就露出来了。

细节

留下的问题

选择题成绩,代替不了对开放式生成、工具使用和真实部署的评估。

来源 1
  1. Hendrycks et al. · Measuring Massive Multitask Language Understanding

人、协作与责任 · 开源与许可系统

Hugging Face Transformers把预训练模型收进一个库

BERT、GPT-2 之后,NLP 常见的做法是拿预训练好的大模型,在自己的任务上微调。可各家的代码和权重散在不同仓库里。Hugging Face 把它们收进一个库,统一成配置、模型、分词器三个类,都用一个 from_pretrained() 调用加载。

细节

比如要用在法语上预训练的 BERT 模型 FlauBERT,两行代码就够:一行加载分词器,一行加载模型,填同一个名字。库按名字找到对应的类,下载并缓存权重。同一个模型换个“头”,就能做分类或问答。

它从内部工具长出来,改过两次名。2019 年论文写作时,它才存在约十个月,已有 200 多篇论文用到它。到 2020 年,模型中心里有 2,097 个社区上传的模型。

留下的问题

复用变容易了,从头预训练还是一样贵。

  • 用到 · Transformer

    库里的模型都是 Transformer 结构的变体,按原论文的计算图实现,并测试能否复现原作者的结果。

  • 用到 · Model Cards

    2020 年的会议版写道:模型中心的模型页可以附一份模型卡(引用 Mitchell 等人),说明训练、数据和已知偏差。

来源 3
  1. Wolf et al. · Transformers: State-of-the-art Natural Language Processing, arXiv v1, 2019-10-09, §§1–3, 5
  2. Wolf et al. · Transformers: State-of-the-Art Natural Language Processing, EMNLP 2020 System Demonstrations, pp. 38–45, §§1, 4
  3. arXiv · version history

系统软件 · 语言与编译器研究

Triton按“块”写 GPU 内核

常用的深度学习运算有 cuBLAS、cuDNN 这些厂商库撑着。想试库里没有的新运算,就得请专家手写内核,写完还难移植。2019 年,哈佛的研究者提出 Triton:程序员按“块”写计算,线程怎么分工、数据怎么搬,交给编译器,块多大由自动调优来挑。

细节

论文第一个例子是矩阵乘法:循环里每次取 A 的一块和 B 的一块,做一次点积,加到 C 的对应块上。块的长宽只写几个候选值,让自动调优去试;线程分配、显存访问合并、共享内存同步,都由编译器处理。

测试只用了一块 NVIDIA GTX 1070。矩阵乘法和 cuBLAS 打平,在循环网络和 Transformer 的矩阵形状上,比其他编译器方案最多快 3 倍;不过在较浅的 Transformer 形状上,cuBLAS 还是更快。

留下的问题

写内核容易了,块大小、内存访问这些性能问题还在,只是交给了编译器。

  • 借用 · LLVM

    Triton-IR 是在 LLVM IR 上加了块级数据流和控制流扩展的中间表示,编译结果是 LLVM 位码。

  • 互补 · BLAS

    Triton 拿 NVIDIA 的 cuBLAS 作对照:矩阵乘法和它不相上下,浅层 Transformer 上 cuBLAS 仍然更快。

来源 3
  1. Tillet, Kung & Cox · Triton, MAPL 2019, §§1–2 and 5–7, Harvard author copy
  2. triton-lang/triton · repository README (current), citing the MAPL 2019 paper as its foundation
  3. PyTorch · PyTorch 2.0 release blog, 2023-03-15, TorchInductor and Triton

应用与产品 · 机器人与自主系统产品

Waymo驾驶座上没人的公开服务

自动驾驶长期停在演示和带安全员的试点。2020 年 10 月,Waymo 在凤凰城向公众开放完全无人驾驶的叫车服务,驾驶座上没有人。在这之前,早期乘客当年的行程里已有 5% 到 10% 是完全无人的。

细节

留下的问题

服务一开始只覆盖凤凰城的一片区域,不是哪里都能开。

  • 互补 · Stanley

    Waymo 的前身是 Google 的无人车项目。Thrun 说,团队从 DARPA 挑战赛招来工程师,其中就有 Stanley 的软件负责人 Montemerlo。

来源 2
  1. Waymo · Waymo is opening its fully driverless service to the general public in Phoenix, 2020-10-08
  2. Thrun · What we're driving at, Official Google Blog, 2010-10-09

模型与学习 · 后训练与推理研究

InstructGPT用人的反馈调整回答

InstructGPT 把四样东西串成一条流程:人写的示范、人标的偏好、一个奖励模型,再加上 PPO 这种强化学习方法,用来调整语言模型怎么回答。这套做法叫 RLHF(基于人类反馈的强化学习),InstructGPT 把它完整、公开地做了一遍。

细节

留下的问题

标注员的偏好,代表不了所有人的需要。

  • 借用 · GPT-3

    从预训练好的 GPT-3 出发,再用人写的示范和排序微调。

  • 用到 · PPO

    强化学习那一步用 PPO 去提高奖励模型给的分。

  • 借用 · 从人类偏好学习

    InstructGPT 用的 RLHF,引的就是 Christiano 等人 2017 年的工作。

来源 1
  1. InstructGPT · 2022

应用与产品 · 助手与创作工具产品

ChatGPT大模型走进对话框

2022 年 11 月,OpenAI 以研究预览的形式放出 ChatGPT。不用写代码,打开网页就能提问,还能接着追问、让它改。语言模型从论文和 API 里走出来,成了很多人每天在用的东西。

细节

留下的问题

它会一本正经地答错,发布公告里就写了这一条。

  • 借用 · InstructGPT

    用 InstructGPT 的 RLHF 方法训练,只是数据收集的方式不同。

来源 1
  1. Introducing ChatGPT · 2022-11-30

模型与学习 · 后训练与推理研究

DPO直接从偏好对里学

先收集偏好对:同一个问题的两份回答,标出哪份更好。DPO 直接用这些数据更新语言模型。它的损失函数,是从带 KL 约束的奖励优化目标推出来的。常规的离线流程里,既不用另训一个奖励模型,也不用边训练边采样。

细节

比如两份摘要,A 保留了关键事实,B 漏了一个重要条件,标签说 A 更好。训练时比较的是两份回答相对参考模型的概率比,并没有把 A 当成唯一正确的答案。偏好本身靠不靠得住,还得另外检查。

留下的问题

离线 DPO 不算在线强化学习,偏好数据里的偏差也不会自己消失。

  • 借用 · InstructGPT

    保留 InstructGPT 这条 RLHF 路线的目标,但把奖励模型加强化学习换成一个直接的损失。

来源 2
  1. DPO · 2023
  2. Tülu 3 · recipe

应用与产品 · 助手与创作工具产品

Stable Diffusion把图像生成交到用户手里

2022 年,Stable Diffusion 公开模型权重和代码,并提供演示和工具入口,让更多人能自己运行、改造文本生成图像的模型。它不是第一个可下载的图像生成模型,但这次发布推动了围绕模型的工具和应用开发。

细节

留下的问题

权重公开了,许可证、内容安全和训练数据来源的问题都还在。

  • 用到 · LAION-5B

    模型在 LAION-5B 的一个子集上训练。

  • 用到 · CLIP

    文字提示由冻结的 CLIP ViT-L/14 文本编码器读入。

来源 2
  1. Stable Diffusion · public release
  2. CompVis · stable-diffusion README (GitHub), 2022

系统软件 · GPU 编程与框架研究

FlashAttention减少显存来回读写

普通的 attention 实现会把很大的分数矩阵写进显存,再读回来接着算。FlashAttention 把计算分块,减少中间结果在显存和片上 SRAM 之间的来回读写。它算的仍是精确的 attention,前向和反向都支持,训练也能用。

细节

FlashAttention 一块一块地算,同时记下归一化要用的统计量,所以整张中间矩阵不用存下来。省下的是数据搬运和中间存储,没有靠丢掉 token 来省事。

留下的问题

实际能快多少,还要看张量形状、硬件和实现版本。

  • 用到 · Roofline

    按算术强度把操作分成算力受限和内存受限,引的是 Roofline。

来源 1
  1. FlashAttention · 2022

分布式与服务 · 推理服务系统

vLLM按需分配 KV cache

KV cache 存的是注意力的键和值。有的请求几十个 token 就结束,有的要写很长;给每个请求预留一大块连续空间,显存很容易浪费。PagedAttention 借用分页管理内存的思路,把 KV cache 切成块,用多少分多少,服务调度也更有效率。

细节

名字里有 cache,但它和 CPU 的硬件缓存不是一回事。它存的是注意力的键和值张量,放在显存里,按块通过映射表来找。

留下的问题

省下的是显存,单个请求的延迟未必跟着降。

  • 借用 · Atlas 虚拟内存

    PagedAttention 借用操作系统的虚拟内存和分页,论文引了 Kilburn 等人 1962 年的 Atlas 论文。

来源 1
  1. PagedAttention · 2023

模型与学习 · 语言研究

思维链提示让模型先写推理步骤

模型越做越大,数学应用题、符号操作这类多步推理的成绩却几乎不涨。2022 年,Wei 等人在提示的示例里写出一步步的推理过程,让模型照着先写思路再给答案,足够大的模型在这些任务上明显变好。后来的 o1 和 R1,用强化学习来训练这条思维链。

细节

留下的问题

写出来的思路不一定是模型真正的计算过程,也可能一本正经地推错。

来源 1
  1. Wei et al. · Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, arXiv v1, 2022-01-28

应用与产品 · 机器人与自主系统系统

RT-2把视觉语言能力用到控制上

机器人不光要看懂画面和指令,还得做出动作。RT-2 把视觉语言预训练和机器人的动作数据结合起来,想把模型已有的看图读字能力,用到控制任务上。

细节

留下的问题

它把视觉-语言模型直接接到动作上,没用强化学习;机器人怎么训,还没有统一的配方。

  • 用到 · ViT

    RT-2 用的 PaLI-X 靠一个 ViT-22B 视觉编码器读摄像头画面。

来源 1
  1. RT-2 · 2023

芯片与计算 · GPU 与加速器系统

Hopper专门给 Transformer 提速

Hopper H100 加入了 Transformer Engine 和 FP8 计算,把加速 Transformer 模型明确定为架构目标。互连也往外扩了:第四代 NVLink 加上外部交换系统,让高速 GPU 互连跨到多台服务器。

细节

留下的问题

架构公布后,又过了半年才宣布全面量产。

  • 互补 · Transformer

    Hopper 加了一个专门服务 Transformer 模型的 Transformer Engine。

  • 用到 · 台积电

    H100 有 800 亿个晶体管,用台积电的 4N 工艺制造。

来源 2
  1. NVIDIA Hopper announcement, 2022-03-22
  2. NVIDIA H100 production release, 2022-09-20

芯片与计算 · GPU 与加速器产品

CDNA 3 与 MI300把 CPU 和 GPU 装进一个封装

MI300 系列把 CDNA 3 架构、3D 封装和 HBM3 内存结合在一起,面向 AI 和科学计算。MI300A 在一个封装里放进 Zen 4 CPU 和 GPU,两者共享内存,异构编程因此简单了一些。MI300X 则不带 CPU。

细节

留下的问题

开始供货时,部分整机还要等到 2024 年才上市。

  • 用到 · HBM

    MI300X 带 192 GB HBM3,MI300A 带 128 GB。

来源 1
  1. AMD MI300 availability release, 2023-12-06

模型与学习 · 语音研究

Whisper让语音识别不微调也能用

以前的语音识别,常先用大量没标注的语音预训练,但用之前还得在具体数据集上微调。微调要有经验的人来做,模型还容易学到只在那个数据集里成立的规律。Whisper 直接用网上带文字稿的音频训练,共 68 万小时。模型不微调,直接拿去测别的数据集。

细节

一个模型做好几件事,靠的是解码器开头的几个特殊词元。音频切成 30 秒一段,交给编码器—解码器 Transformer。解码器先预测语种,没人说话就输出“无语音”;再用一个词元指定是转写还是译成英语,然后才开始出文字。

论文最想说明的是稳健性。找一个在 LibriSpeech 上和 Whisper 成绩相差不到 0.1% 的有监督模型,换到其他数据集上测,Whisper 的错误平均少 55.2%。作者因此提醒,只在一个数据集上拿模型和人比,容易高估模型。

留下的问题

长音频里它还会陷入重复、漏词,甚至编出和音频无关的话。

  • 用到 · Transformer

    为了不让架构改动干扰结论,Whisper 直接用现成的编码器—解码器 Transformer。

来源 2
  1. Radford et al. · Robust Speech Recognition via Large-Scale Weak Supervision, arXiv v1, 2022-12-06, §§1–2, 3.3, 6 and Tables 1–2
  2. openai/whisper · official code and model release, MIT license, initial commit 2022-09-21

模型与学习 · 视觉研究

Segment Anything点一下,就把东西抠出来

图像分割要逐个像素标出物体的范围,标起来很费工夫。SAM 让模型听提示:给一个点、一个框或一块粗略的掩码,都要返回合理的掩码。每张图只编码一次,之后每个提示在浏览器里约 50 毫秒出结果。训练数据 SA-1B 由模型和标注员一起攒出,有 11 亿个掩码。

细节

提示常有歧义:在衬衫上点一下,指的可能是衬衫,也可能是穿衬衫的人。SAM 的办法是一次给出 3 个掩码,大致对应整体、部分和更小的部分,另有一个分支给每个掩码的质量打分。

数据分三个阶段攒起来。先是标注员在浏览器里点选,SAM 实时出掩码,人再修,标一个掩码的平均时间从 34 秒降到 14 秒。接着模型自动填上有把握的,人只补漏。最后完全自动,SA-1B 里 99.1% 的掩码都是这样生成的。

留下的问题

它能把东西抠出来,却不知道抠出的是什么。

  • 用到 · ViT

    图像编码器是经 MAE 预训练的 ViT-H,稍作改动以处理高分辨率输入,每张图只运行一次。

  • 用到 · CLIP

    文字提示用 CLIP 现成的文本编码器编码;这部分在论文里还是初步尝试。

来源 3
  1. Kirillov et al. · Segment Anything, arXiv v1, 2023-04-05, §§1–5, 8
  2. Same paper · ICCV 2023 open access
  3. SAM 2 · arXiv v1, 2024-08-01, abstract

数据与评估 · 数据集研究

LAION-5B公开 58.5 亿对网络图文

CLIP 用 4 亿对图文训练,数据没公开;在 LAION 自己 2021 年放出 4 亿对的 LAION-400M 之前,公开的英文图文数据集最大约 1 亿对。大规模图文研究于是集中在少数几家公司。LAION-5B 从网页里挑出带 alt 文本的图片,按 CLIP 算的图文相似度筛选,公开了 58.5 亿对,图片要使用者自己下载。

细节

一对图文要过几关:从 Common Crawl 里找带 alt 文本的图片,下载,去掉文字太短或图片太小的,再用 CLIP 算相似度,低于门槛的删掉。最后这关删掉了约 500 亿张图片里的九成左右。因为只给链接,网页一变,图片就可能失效。

论文用其中 4 亿对的子集训练 CLIP,在 ImageNet 零样本分类等测试上,和 OpenAI 的原版持平或接近。论文还写道,Stable Diffusion 就是用它的几个子集训练的。

留下的问题

自动过滤挡不住所有有害图片,后来还被查出含有指向疑似儿童性虐待材料的链接。

  • 用到 · CLIP

    用 OpenAI 的 ViT-B/32 CLIP 计算图文相似度来筛选数据,又用 LAION 子集重新训练 CLIP,与原版比较。

  • 用到 · Common Crawl

    LAION-5B 从 Common Crawl 出发,解析其中带替代文字的图片,构建图文对。

来源 2
  1. LAION-5B · arXiv v1, 2022-10-16, §§1, 3, 5–7 and Appendix A
  2. LAION · Releasing Re-LAION-5B, 2024-08-30

应用与产品 · 科学与医疗研究

GraphCast从历史数据学天气预报

中期天气预报一直靠超级计算机解大气方程,几十年的历史数据很难拿来改进模型。GraphCast 从这些数据里学:输入此刻和 6 小时前的全球大气,预测 6 小时后,一步步推到 10 天。和 ECMWF 最好的确定性预报 HRES 比,它在九成评测目标上明显更准。

细节

一次预测要处理多少数?0.25 度的经纬网格约有 104 万个格点。每个格点上有 227 个变量,整个状态约 2.36 亿个数。模型先把格点信息编码到二十面体网格上,用图神经网络在节点间多轮传递消息,再解码回经纬格点。

训练用的是 1979–2017 年的数据。在 32 台 Cloud TPU v4 上训了约四周。它没有专门为极端天气训练,但拿来追踪气旋时,2018–2021 年的路径中位误差比 HRES 小。

留下的问题

它只给一个确定的预报,给不出各种可能结果的分布,也离不开传统数值模式。

  • 互补 · Transformer

    GraphCast 在多层网格上做图消息传递,没用 Transformer:上百万个格点做全局注意力,内存是平方级的。

来源 4
  1. Lam et al. · GraphCast: Learning skillful medium-range global weather forecasting, arXiv v2, 2023-08-04 · introduction, GraphCast, verification, severe-event and discussion sections
  2. Same paper · arXiv v1, 2022-12-24, Figure 1 and discussion
  3. Science · DOI record of the published article, 2023
  4. Google DeepMind · GraphCast blog post, 2023-11-14

模型与学习 · 后训练与推理研究

o1先想一阵再回答

o1 用大规模强化学习训练:回答之前,先在内部写一长串思路,学着发现错误、换个办法。OpenAI 报告,训练时多做强化学习、回答时多想一会儿,成绩都会往上走。2024 年 AIME 数学竞赛题上,GPT-4o 平均做对 12%,o1 单次作答做对 74%。

细节

留下的问题

有些写作类任务上,人们反而更喜欢别的模型;原始思路也只给用户看摘要。

  • 用到 · MMLU

    OpenAI 报告 o1 在 MMLU 的 57 个子类里有 54 个超过 GPT-4o。

  • 用到 · 思维链提示

    o1 用强化学习训练模型怎样用思维链思考,学着发现错误、换个办法。

来源 1
  1. OpenAI · Learning to reason with LLMs, 2024-09-12

模型与学习 · 后训练与推理研究

GRPO让同题的回答互相比

同一道题让模型生成几份回答,用它们的奖励高低互相比,估计每份回答比组内平均好多少,也就是优势。这样就不用另训一个价值模型。GRPO 由 DeepSeekMath 提出,后来 R1 用上了它,TRL 和 verl 也提供了实现。

细节

举个只看结果的简单例子:同一题的四个回答得分 1、1、0、0,平均 0.5,高于和低于平均的就分开了。要是四个全得 0,组内比较就分不出好坏。多采样要花成本,也不一定换来有用的反馈。

留下的问题

不用价值模型了,奖励还得设计,多采样的成本也省不掉。

  • 借用 · PPO

    GRPO 是 PPO 的变体:去掉价值模型,用同组回答的分数当基线,省显存。

来源 4
  1. DeepSeekMath · 2024
  2. DeepSeek-R1 · January 2025 report, v1
  3. TRL · implementation
  4. verl · implementation

模型与学习 · 后训练与推理研究

DeepSeek-R1用强化学习练推理

DeepSeek-R1 的报告对比了两种设置。R1-Zero 直接在基座模型上做强化学习;R1 先加入冷启动数据,再分几个阶段训练。两者放在一起看,能看出强化学习怎样和数据、SFT(监督微调)、评估配合。

细节

留下的问题

报告里的奖励和结果来自特定任务,换到别的模型上还得重新验证。

  • 用到 · DeepSeek-V3

    R1-Zero 和 R1 都从 DeepSeek-V3-Base 出发,再用 GRPO 做强化学习。

  • 互补 · o1

    R1 的报告以 o1 为参照,在推理任务上报告与 o1-1217 相当。

  • 用到 · 思维链提示

    R1 论文开头说,o1 靠加长思维链在推理时多用算力;R1-Zero 只用强化学习,思维链就越写越长。

来源 1
  1. DeepSeek-R1 · January 2025 report, v1

模型与学习 · 后训练与推理研究

IMO用自然语言写出金牌证明

2024 年,DeepMind 的系统还得先把题目译成 Lean 这样的形式语言,再算两三天。2025 年的国际数学奥林匹克上,Gemini Deep Think 直接读题、写自然语言证明,在考试时限内拿到 35 分(满分 42),由 IMO 协调员按学生标准评分认证。OpenAI 的实验模型也拿到 35 分,由三位前奖牌得主评分。

细节

留下的问题

IMO 只给答卷评分,不检验系统本身;两个模型当时都还没对外开放。

来源 3
  1. Google DeepMind · Gemini Deep Think reaches IMO gold-medal standard, 2025-07-21
  2. Alexander Wei (OpenAI) · IMO 2025 results thread, 2025-07-19
  3. OpenAI IMO 2025 proofs · GitHub

模型与学习 · 语言研究

Gemini 1.5一次读进百万词元

Gemini 1.0 一次只能读 3.2 万个词元。1.5 Pro 换成 MoE 架构,向部分用户开放了 100 万词元的上下文,一小时的视频也能整段放进去。把一句话藏进这么长的输入里,它几乎每次都能找回来。

细节

留下的问题

藏一句话再找出来,是最简单的长文测试;同时藏 100 句,召回率只有六成多。

  • 借用 · 稀疏混合专家

    技术报告说 Gemini 1.5 建立在 Shazeer 等人的混合专家架构上。

来源 2
  1. Google · Our next-generation model: Gemini 1.5, 2024-02-15
  2. Gemini Team · Gemini 1.5 technical report, arXiv v1, 2024-03-08

模型与学习 · 语言研究

DeepSeek-V3用 FP8 训练大 MoE

低精度训练省显存、省时间,但激活、权重和梯度里的离群值容易把训练带偏。DeepSeek-V3 是一个 MoE 模型,每个词只激活 6710 亿参数中的 370 亿。报告说它首次在这么大的模型上验证了 FP8 混合精度训练,整套正式训练用了 278.8 万个 H800 GPU 小时。

细节

留下的问题

这个成本只算正式训练,之前的研究和消融实验不在里面;推荐的部署单元也偏大。

来源 1
  1. DeepSeek-AI · DeepSeek-V3 Technical Report, arXiv v1, 2024-12-27

模型与学习 · 语言研究

DeepSeek-V4让百万上下文变便宜

上下文越长,每生成一个词要读的 KV cache 越大,长上下文一直很贵。2026 年 4 月的 DeepSeek-V4 预览版改了注意力的设计:在 100 万词元的上下文里,V4-Pro 每个词的推理计算只要 V3.2 的 27%,KV cache 只要 10%。DeepSeek 自己的服务也把 100 万上下文设成了默认。

细节

留下的问题

发布时是预览版,各项成绩都是 DeepSeek 自己报告的。

  • 用到 · GRPO

    后训练先用 SFT 和 GRPO 强化学习培养各领域专家,再蒸馏合并。

来源 2
  1. DeepSeek · DeepSeek V4 Preview Release, 2026-04-24
  2. DeepSeek · DeepSeek-V4-Pro model card

系统软件 · 操作系统与开源系统

MCP给 AI 工具一个统一接口

模型被挡在数据孤岛外面,每接一个新数据源都要单独写一套集成,很难扩展。2024 年 11 月,Anthropic 开放了 Model Context Protocol:数据和工具做成 MCP 服务器,AI 应用作为客户端去连。发布时附带了规范、SDK,以及 Google Drive、Slack、GitHub 等六个现成的服务器。

细节

留下的问题

发布时只能在本地连 MCP 服务器,远程部署的工具包还在路上。

来源 1
  1. Anthropic · Introducing the Model Context Protocol, 2024-11-25

应用与产品 · 助手与创作工具产品仍在探索

编程 agent把整件任务交给模型

2021 年的 Copilot 在编辑器里补全代码。2025 年 2 月,Anthropic 推出 Claude Code,在开发者自己的终端里搜代码、改文件、写测试、跑命令、提交。5 月,OpenAI 推出 Codex,把每个任务放进预装了仓库的云端沙箱,几个任务并行跑,通常 1 到 30 分钟做完,附上终端日志和测试结果。

细节

留下的问题

生成的代码仍要人一一审过;工具调用不稳、长时间运行的命令,也还是难点。

  • 用到 · MCP

    Claude Code 通过 MCP 连接外部工具和数据源。

  • 互补 · Codex 与 Copilot

    Claude 4 的发布说明写到,GitHub 将用 Sonnet 4 驱动 Copilot 新的编程 agent。

来源 4
  1. Anthropic · Claude 3.7 Sonnet and Claude Code, 2025-02-24
  2. Anthropic · Introducing Claude 4 (Claude Code generally available), 2025-05-22
  3. OpenAI · Introducing Codex, 2025-05-16
  4. Claude Code docs · Connect Claude Code to tools via MCP

网络与互连 · 局域网与集群互连系统

GB200 NVL72一整柜当一块 GPU 用

大模型拆到很多 GPU 上训练和推理,卡与卡之间的通信常常卡住整体速度。GB200 NVL72 把 72 块 Blackwell GPU 装进一个液冷机柜,用第五代 NVLink 连成一个域,每块 GPU 的双向带宽 1.8 TB/s。新的 Transformer Engine 还加入了 4 位浮点推理。

细节

留下的问题

宣传的推理提速,是特定输入长度和延迟设定下的估算;发布时还写着规格可能调整。

  • 借用 · NVLink

    第五代 NVLink 把 GPU 之间的直连扩成一整柜 72 块 GPU 的一个域。

来源 2
  1. NVIDIA · Blackwell platform announcement, 2024-03-18
  2. NVIDIA · GB200 NVL72 product page

电力与机房 · 机房与散热研究

IEA《能源与 AI》给数据中心用电算总账

AI 到底要用多少电,决策者和市场一直缺少看清的工具。国际能源署 2025 年 4 月的报告估算,2024 年全球数据中心用电约 415 太瓦时;到 2030 年预计翻一倍多,约 945 太瓦时,比日本今天全国的用电还略多。

细节

留下的问题

越往后越难说准:到 2035 年,几种情景的估计从 700 到 1700 太瓦时不等。

  • 用到 · PUE

    IEA 用 IT 用电乘以 PUE 算数据中心总用电,基准情景下全球平均 PUE 从 1.41 降到 1.29。

来源 3
  1. IEA · Energy and AI, executive summary, 2025-04-10
  2. IEA · Energy and AI press release, 2025-04-10
  3. IEA · Energy and AI, full report, April 2025, §2.2, §2.3.1 and Annex A

芯片与计算 · GPU 与加速器系统

TPU 8t 与 8i训练和推理分开造芯片

训练要大量芯片一起算,推理要低延迟地回应,尤其是 agent 之间频繁往来的时候。2026 年 4 月,Google 的第八代 TPU 分成专做训练的 TPU 8t 和专做低延迟推理、内存带宽更大的 TPU 8i。一个 8t 超节点能连 9600 颗芯片;两颗芯片的每瓦性能都比上一代 Ironwood 最多高一倍。

细节

留下的问题

发布时还没正式上市,不少数字是“最多”的情况。

  • 用到 · TPU v3 液冷

    两颗第八代 TPU 都靠 Google 的第四代液冷。

来源 1
  1. Google · Our eighth generation TPUs: two chips for the agentic era, 2026-04-22

应用与产品 · 科学与医疗研究

AlphaFold 3从单个蛋白到分子组合

细胞里的蛋白质、DNA 和其他分子从不单独工作,要看懂生物,得看它们怎么相互作用。AlphaFold 3 一次预测整个复合物的三维结构:扩散模块从一团原子出发,一步步收拢成最终的坐标。在蛋白质和其他分子的相互作用上,它比已有方法至少准 50%。

细节

留下的问题

它给出的是静态结构,看不到分子怎么动;在无序区域还会编出不存在的结构。

  • 借用 · AlphaFold 2

    沿用 AlphaFold 2 的框架,但把 evoformer 换成更简单的 pairformer,结构模块换成扩散模块。

  • 借用 · Diffusion

    用扩散的思路直接生成原子坐标:从带噪声的原子位置一步步去噪。

来源 2
  1. Nature · Accurate structure prediction of biomolecular interactions with AlphaFold 3, 2024-05-08
  2. Google · AlphaFold 3 announcement, 2024-05-08

人、协作与责任 · 研究社区研究

诺贝尔奖物理和化学奖都给了 AI

2024 年 10 月,诺贝尔物理学奖授予 Hopfield 和 Hinton,表彰让人工神经网络能够学习的奠基性发现。第二天,化学奖一半给了做计算蛋白质设计的 Baker,另一半给了做蛋白质结构预测的 Hassabis 和 Jumper。评奖说明写到,AlphaFold2 已被 190 个国家的两百多万人用过。

细节

留下的问题

奖项回顾的是已有的成果;AI 还能给物理和化学带来什么,要靠之后的研究回答。

  • 互补 · AlphaFold 2

    化学奖一半表彰的蛋白质结构预测,评奖说明里讲的就是 AlphaFold2。

来源 2
  1. Nobel Prize in Physics 2024 · press release, 2024-10-08
  2. Nobel Prize in Chemistry 2024 · press release, 2024-10-09

应用与产品 · 科学与医疗研究仍在探索

AI 做数学研究解开悬而未决的问题

2025 年,AI 在竞赛题上拿到金牌线;2026 年,它开始碰没人解开的问题。5 月,OpenAI 的一个通用推理模型推翻了平面单位距离问题上的一个长期猜想,证明由外部数学家核对过。同月的一篇预印本让语言模型写 Lean 形式证明、再交给机器检查,在 353 个未解的 Erdős 问题里自主解决了 9 个。

细节

留下的问题

语言模型单独写的证明还靠不住,得有人核对或交给 Lean 检查;成功率也只有几个百分点。

  • 借用 · IMO

    DeepMind 的 Aletheia 研究 agent 跑在拿到 IMO 金牌线的 Gemini Deep Think 的进阶版上,把它从竞赛题带到未解的 Erdős 问题。

来源 3
  1. OpenAI · An OpenAI model has disproved a central conjecture in discrete geometry, 2026-05-20
  2. Tsoukalas et al. · Advancing Mathematics Research with AI-Driven Formal Proof Search, arXiv v1, 2026-05-21
  3. Feng et al. (Google DeepMind) · Towards Autonomous Mathematics Research, arXiv v1, 2026-02-10

人、协作与责任 · 开源与许可产品

Llama 3.1把 405B 的权重放出来

Meta 说,开放模型的能力此前大多落后于闭源模型。Llama 3.1 放出了三个尺寸的权重,最大的 405B 用超过 15 万亿词元训练,还量化到 FP8,一台服务器就能跑起来。

细节

留下的问题

许可证是 Meta 自定的社区许可:月活超过 7 亿的公司要另行申请,衍生模型名字得带 Llama。

  • 用到 · DPO

    每一轮对齐都把 SFT、拒绝采样和 DPO 组合起来。

来源 2
  1. Meta · Introducing Llama 3.1, 2024-07-23
  2. Meta · Llama 3.1 Community License, 2024-07-23

模型与学习 · 生成模型研究仍在探索

Genie 3生成能走进去的世界

一帧一帧往下生成、还要实时接住用户的操作,比一次生成整段视频更难。Genie 3 每生成一帧都参考之前走过的轨迹,不需要显式的 3D 表示,就能以每秒 24 帧实时生成。世界能保持几分钟前后一致,生成过程中还能用文字改变世界里发生的事。

细节

留下的问题

能做的动作还很有限;多个角色同时互动、几小时的连续体验,都还做不到。

来源 1
  1. Google DeepMind · Genie 3: a new frontier for world models, 2025-08-05

人、协作与责任 · 责任与透明产品仍在探索

网络安全能力过线先交给防守的一方

2026 年,几家实验室报告,新模型已经能自己找出未知漏洞、写出利用方法。Anthropic 的 Claude Mythos Preview 不对公众开放,只给维护关键软件的组织用来修漏洞;Google 先把 Gemini 4 Argon 交给经过筛选的防守方。OpenAI 的 GPT-6 Astra 是它第一个达到网络安全“严重”级别的模型,公开发布时加强了防护。

细节

留下的问题

这些能力和漏洞数量,都来自各家自己的报告。

  • 互补 · Linux

    Anthropic 报告,Mythos Preview 自己找到几个 Linux 内核漏洞,并串成一次完整的提权;这些漏洞已经修复。

来源 3
  1. Anthropic · Project Glasswing (Claude Mythos Preview), 2026-04-07
  2. OpenAI · Safety overview: GPT-6 Astra, 2026-09-03
  3. Google · Gemini 4 Argon, 2026-09-30

人、协作与责任 · 责任与透明系统仍在探索

欧盟 AI 法案按风险高低给 AI 定规矩

AI 用到招聘、信贷和执法这些地方以后,欧盟想用一套统一的法律来管。2024 年 6 月通过的 AI 法案按风险高低定义务,分阶段生效。通用模型的提供者要保存技术文档,写明训练、测试过程和评估结果;法案还把训练用的累计算力当作衡量模型能力的一个近似指标。

细节

留下的问题

法律写的是义务,具体怎么测、怎么执行,还要靠后续的标准和指南。

  • 互补 · Model Cards

    法案要求通用模型的提供者保存并提供技术文档;Model Cards 提议的是随模型发布的说明。

来源 1
  1. Regulation (EU) 2024/1689 (AI Act), 2024-06-13, OJ 2024-07-12 (Publications Office text)

模型与学习 · 后训练与推理开放问题仍在探索

后训练配方调出能力还没有定法

模型里藏着的能力,很难一次就稳稳调出来。SFT、DPO、PPO、GRPO 用的数据和反馈各不相同。已有的报告给出了能用的配方,也摆明了取舍:覆盖哪些任务,花多少预算,训练稳不稳。

细节

比较方案时,先固定任务和评估,再问几个问题:高质量示范够不够?奖励能不能核验?每次 rollout 要花多久?这些选择,常常比算法叫什么更贴近实际工作。

留下的问题

同样的预算,该多收数据、多采样,还是多更新几步,仍没有统一答案。

  • 用到 · vLLM

    Tülu 3 的可验证奖励训练用 vLLM 生成回答,每次更新后把权重同步过去。

来源 2
  1. Tülu 3 · recipe and ablations
  2. DeepSeek-R1 · January 2025 report, v1