Algorithms

43 篇内容

技术文章Daniel Lemire

simdjson 5.0 is out

文章介绍 simdjson 5.0 这一 C++ JSON 解析/生成库的版本更新。核心变化包括 C++26 静态反射正式支持、新增编译期完美哈希的 key selectors 以一次遍历按任意顺序提取字段,以及扩展多种流式解析和切片并行能力。性能方面,数字类 DOM 解析提升 8%–25%,转义 Unicode 文件约提升 80%,序列化因改用 Dragonbox 提升 1.3–1.7 倍。基准仅基于 GCC 16 与单核 Xeon,且文章属发布说明,实现原理和失败边界讨论有限,适合关注 C++ 高性能数据处理与库设计的读者。

推荐收录,因为文章提供了 simdjson 5.0 的具体版本变更、API 示例和可复现的性能对比,尤其是 key selectors 的编译期哈希方案以及 Dragonbox 替换带来的序列化提升,对 C++ 库设计和 JSON 性能优化有直接参考价值。适合使用 C++ 处理大规模 JSON、关注解析/序列化性能的工程师。需注意它本质是发布说明,基准环境单一,不能替代对具体实现和兼容性边界的深入评估。

科研议题知乎 - 苏剑林

让炼丹更科学一些(九):经典自适应梯度算法

本文是“让炼丹更科学一些”系列第九篇,系统回顾 AdaGrad 这一自适应梯度算法奠基工作。作者将 SGD 收敛分析推广到一般预条件矩阵,借助矩阵恒等式与 Mahalanobis 范数得到平均损失上界。再以最小化上界为原则,推导出最优预条件矩阵是梯度二阶矩的负二分之一次幂,说明二阶矩自适应并非启发式技巧。由于完整矩阵预知未来梯度且成本高,作者由截断求和、对角近似、EMA 和动量引出 AdaGrad、RMSProp、Adam,并指出 PSGD、Shampoo 等是其结构化近似。文章脉络清晰,但对 EMA 后理论保证丢失、实现细节和实验对比着墨较少。

推荐收录:文章完整复现了从 SGD 收敛证明到最优预条件矩阵的 AdaGrad 推导,并把 RMSProp、Adam、PSGD、Shampoo 等放进同一理论脉络,证据具体。适合优化器、深度学习训练和论文精读读者,可迁移到理解自适应学习率的设计原则;不足是偏理论推导,缺少实验对比与实现细节。

技术文章Daniel Lemire

How fast can you fix a UTF-16 string in C#?

文章讨论如何在 C# 中高效修复 UTF-16 字符串:当高/低代理项配对错误或落单时,应将孤立代理项替换为 U+FFFD,避免把非法字符串写入磁盘或网络。作者把 JavaScript 中已有的 toWellFormed/isWellFormed 算法引入 C# 库 SimdUnicode,利用 SIMD 指令并行比较多个 16 位码元;合法输入直接返回原实例且不分配,缓冲区版本则逐码元写出。基准显示,在支持 AVX-512 的 Xeon 上,拉丁文本校验达约 69 GB/s,而 IndexOfAnyInRange 仅 33 GB/s;全代理对 Emoji 输入下,SIMD 检查约 53 GB/s,运行时搜索降至 0.4 GB/s,M4 Max 趋势类似。作者还说明结果依赖 .NET 10、Xeon Gold 6548N 与 M4 Max,并引用相关论文与源码,方便读者复现和扩展。

推荐收录:文章给出了 V8 同源的 SIMD 修复算法、C# 实现、无分配边界和 Xeon/M4 实测数据,属于可复现的性能工程证据。适合处理文本解析、Unicode 清洗、网络/存储输入校验的工程师与库作者参考,迁移时需注意 SIMD 指令集、运行时版本和跨平台性能差异。

技术文章Ken Shirriff

Reverse-engineering the vintage Intel 8087's tangent algorithm: more than CORDIC

文章围绕 Intel 8087 浮点协处理器的 FPTAN 正切指令,作者通过开盖显微成像、微码 ROM 逆向和数值分析,解释其如何把 CORDIC 与 Padé 有理逼近结合起来。CORDIC 用 arctan(2^-n) 特角序列与移位加减实现旋转,但 16 步仅约 16 位精度;8087 先用 CORDIC 伪除法确定 16 个旋转决策位,再把剩余小角度交给 3x/(3-x^2) 有理逼近,最后通过伪乘法逆序应用旋转得到 X、Y。文中还给出微码级实现、隐式定点指数缩放、移位寄存器、SQUARE 子程序及 0.95 输入的分步示例,并讨论参数范围、精度异常和性能占比。结论是这种混合算法以较少硬件兼顾速度与 64 位精度,而 Pentium 后转向多项式是因为快速乘法器已普及。其边界在于历史硬件逆向,并非现代浮点库实现指南。

推荐收录。文章以开盖显微照片、微码 ROM 反汇编和逐步数值表为直接证据,完整还原 FPTAN 的 CORDIC 伪除法、有理逼近与伪乘法流程,技术细节可验证且远超一般科普。适合计算机体系结构、浮点运算、逆向工程与数值算法读者,可迁移价值在于混合算法设计、隐式定点指数管理和微码性能分析。

技术文章知乎 - 苏剑林

让炼丹更科学一些(八):多阶段训练的学习率

文章从多阶段训练视角重新审视无调度学习率,把目标折中为每个阶段结束时都接近最优,而不是任意时刻停止即最优。作者基于经典的凸收敛不等式,分别推导“意外续训”的贪心解和“计划多阶段”的minimax解,给出两阶段最优学习率的闭式形式。核心概念是“等效步数”:贪心解相当于亏损部分训练步数,minimax解则让两个阶段的相对损失均衡,并可推广到多阶段。结论表明多阶段minimax通常优于贪心,但阶段数较多时一般需数值求解;且推导基于SGD/凸假设,迁移到Adam、Muon和Scaling Law需借等效步数做启发式修正。

推荐收录。文章不是泛泛介绍学习率调度,而是给出从凸收敛界到两阶段最优学习率的完整推导、闭式解和minimax均衡结论,并提炼出可迁移到实践Scaling Law的“等效步数”概念。适合深度学习训练、LLM预训练及优化器/学习率调度方向的研究者和工程师精读;主要风险是结论依赖SGD与凸假设,实际非凸和大模型训练中需实验验证。

技术文章PlanetScale Blog

Anatomy of a (Postgres) search engine

文章系统讲解全文搜索倒排索引的内部结构,并落到 Postgres 场景说明工程实现。核心组件包括词项字典、postings list、位置数据与词频统计;postings 通常有序存储,并用差值编码、位图压缩减少空间,以支持并集/交集、短语和跨度查询。查询侧还讨论 tokenizer、停用词、词干化带来的精度取舍,以及 BM25 打分和 top-k 通过块级统计跳过 postings 的优化。更新删除依赖不可变 segment、tombstone 和后台 merge,但合并带来大量 I/O 与临时空间,删除则造成空间放大和过滤开销。最后分析 Postgres 集成约束,包括 ctid 映射、WAL、VACUUM、可见性映射、查询规划器与 CustomScan。文章偏概念性综述,TIN 的性能数据和实现细节需阅读另一篇深潜。

推荐收录:文章完整解释倒排索引的词项字典、postings 压缩、BM25、segment 合并与 Postgres 集成约束,技术证据密度高。适合数据库、搜索和后端工程师建立系统认知,也可迁移到 Lucene、Elasticsearch 类系统的选型与调优。主要局限是概念综述,TIN 的具体性能数据需参考另一篇深潜。

工程实践Meta Engineering

Open-Sourcing Rebalancer: A Generic, High-Performance Library for Solving Assignment Problems

Meta 开源了内部使用九年多的通用指派问题求解库 Rebalancer,并配套 OSDI'24 论文。文章把指派问题抽象为对象、箱子、约束与目标,核心设计是解耦问题描述与求解过程:先用维度、分区、作用域、利用率等建模原语刻画现实策略,再通过表达式 API 与高层 spec API 表达约束和目标,最终编译成表达式图 DAG。求解提供两条路径:最优解器把图翻译成 MIP,靠变量聚合、可互换性与对称性破缺压缩模型,最坏规模为 O(|objects|*|bins|);局部搜索解器直接在图上游走,邻域最坏 O(|objects|+|bins|),可并行、每秒数百万次评估并支持剪枝。文中给出生产数据(每日约 4000 万次求解、30 多种问题形式、P99 12 秒)以及调试用 Web UI Rebalancer Explorer,并以 Apache 2.0 开源。

推荐收录:文章提供了可复用的优化系统设计证据——描述与求解解耦的建模原语、表达式图,以及 MIP 与局部搜索两条路径的复杂度、规模上限和选型建议,还有每日 4000 万次求解、P99 12 秒等生产数据与 OSDI'24 论文支撑。适合从事资源调度、容量规划、负载均衡和组合优化落地的工程与算法读者,其中“先用最优解器原型、再迁移到局部搜索”的经验可直接迁移。

技术文章matklad

Finding Bugs

文章围绕“生成式/随机化测试是否比示例单元测试更能发现 bug”展开,以 regex crate 中“.abb|b”在输入“zabb”时错误返回“b”的 bug 为案例。作者实现了一个小型 fuzzer,核心策略是用 oracle:交叉对比 regex 与 regex_lite 的匹配结果;同时通过 swarm testing 随机选择正则特性与字符表,随机化分布本身,并坚持生成小而刁钻的样例而非大而均匀的输入。文中的递归正则生成器、权重式特性选择、内存复用与搜索循环均给出完整 Rust 代码。作者确实复现并发现了另一个 bug,但承认自己已知目标 bug,论证强度有限;该方法最适合纯算法或易于构造 oracle 的组件,对缺乏 oracle 的大型系统并不直接适用。

推荐收录:文章给出了从 oracle 设计、swarm testing 到正则生成器与搜索循环的完整可运行代码,并用 regex/regex_lite 交叉验证实际找到 bug,证据具体。适合测试、基础库和 Rust 开发者参考,可迁移到 fuzzing 与差分测试设计;局限是作者已知目标 bug,且 oracle 在复杂系统中并不总是容易获得。

工程实践Daniel Lemire

Faster JSON parsing with SVE2 on ARM processors

文章介绍 Daniel Lemire 团队将 ARM SVE2 的 match 指令用于 simdjson 的 JSON 结构字符分类阶段。NEON 版本通过查表和比较指令在每 16 字节中识别逗号、冒号、括号等结构字符;SVE2 的 match 可用一个谓词寄存器输出匹配掩码,并借 NEON-SVE bridge 与现有 NEON 代码衔接。作者在 Graviton 4/5 上对 22 个标准 JSON 文件做基准,结果显示索引阶段吞吐提升约 3%–9%,整体解析提升约 1%–4%,结构化程度高的文件收益更大,纯数字文件可能略有回退。当前代码需要 SVE2,且默认构建仍走 NEON,尚未做到运行时指令集选择,Apple 处理器和旧 Graviton 也无法使用。

推荐收录:文章不是概念展望,而是基于 simdjson 真实 PR 和 22 个 JSON 语料的可复现基准,给出了 NEON 与 SVE2 match 的指令级实现、收益区间及失效场景。适合高性能解析、ARM SIMD/体系结构和 C++ 库优化读者,可迁移到其他需要字节分类和掩码聚合的场景;但需注意收益有限且依赖 SVE2 与构建配置,不能直接套用到 Apple 或旧 Graviton。

工程实践Cloudflare Blog

Saving another 100TB of RAM with math (and Rust)

Cloudflare 复盘 Pingora Backend Router 中 pingora-ketama 一致哈希内存占用过高的问题。文章从一致哈希哈希环和权重路由讲起,用期望值、标准差和变异系数分析每台服务器哈希点数量对负载均衡精度的影响,并指出 32 位哈希在哈希点极多时会因碰撞抵消收益。工程上,作者将 Point 结构改为紧凑字节存储以规避 Rust 对齐开销,带来约 25% 内存下降;又依据推导把每节点哈希数降低 90%,且不造成明显误差。为避免切换哈希环导致缓存大面积失效,团队用新旧双环、按请求哈希稳定选择、数据中心分层灰度、可回滚和多项指标观测完成迁移。最终全球回收超过 100TB 内存,相关能力以 pingora-ketama v2 实验特性提供。其结论依赖连续哈希环近似和碰撞分析,落地时仍需按服务器数、哈希位宽和缓存失效代价验证。

推荐收录。文章给出从算法建模、Rust 内存布局到生产灰度迁移的完整闭环,并用全球回收 100TB RAM 的结果验证;其中一致哈希的统计推导、碰撞分析和双环迁移策略可直接迁移到负载均衡、缓存路由和基础设施性能优化场景。风险在于切换哈希环会引发缓存重分布,读者需结合自身哈希位宽、节点规模和灰度能力评估。

技术文章Daniel Lemire

How fast is C++23’s std::flat_map?

文章介绍 C++23 新增的 std::flat_map:它用排序的 key 向量与 value 向量实现,查询为二分查找,可借助 std::sorted_unique 直接接管来自磁盘或网络的两个数组,也支持有序插入、批量 insert_range 和批量构建。作者在 GCC 16.1、-O3 -march=native 的 Intel Xeon 单核上,与 std::map 对比随机逐个插入、有序插入、批量构建和随机查找。结论是:约千级规模下 flat_map 可优于或接近 map;但随机逐个插入百万、千万级 key 时性能呈二次增长,极不适用。有序插入、批量构建和随机查找在大规模下明显更快,主要得益于连续内存布局和更低存储开销。适用边界是读多写少、可批量构建或有序写入的场景,不适合频繁随机单点插入。

推荐收录,因为文章给出了具体基准数据、实现机制和与 std::map 的读写复杂度边界,能直接支撑 C++ 容器选型判断。适合关注性能优化、标准库数据结构和系统编程的读者,尤其可迁移到读多写少、批量构建或序列化场景的取舍分析。主要风险是结果依赖编译器版本与硬件,但作者已说明测试环境,结论边界清晰。

工程实践Oxide Public RFDs

RFD 0347: Delay Driven Multipath

RFD 347 提出 Delay Driven Multipath(ddm),面向物理多路径数据中心网络做 L3 包级负载均衡与容错。它受 DRILL 和 Swift 启发:控制平面用距离向量分发前缀,数据平面在 IPv6 逐跳扩展头中携带时间戳,节点通过确认计算目的端时延及其导数,持续逼近分布式 Dijkstra 森林。ddm 追求 N-1 容错、灵活拓扑、包级最优负载均衡和可扩展性,并在 RTT 内响应拥塞与故障,且不绑定传输层流;文章详述发现、前缀交换、server/transit 路由器、管理 API、时延表、基础/概率/预测 pick 函数和接收端重排序,并讨论 illumos 与 P4 实现。其边界是 15 跳扩展头限制、重排序与缓冲开销,中转路由器、路径向量和预测选路等仍属未来工作。

推荐收录:这是一份真实的网络协议设计 RFD,给出了多路径数据中心网络中基于时延的 L3 负载均衡与容错方案,包含控制平面、数据平面、pick 函数、重排序分析和实现平台约束。适合网络架构、数据中心基础设施和分布式系统读者,可用于理解延迟驱动路由、IPv6 扩展头数据面及多路径协议设计中的取舍。风险是部分设计仍属未来工作、缺乏生产验证,需结合实现与测量评估。

科研议题知乎 - 苏剑林

动量的新理解:逼近特征层面的梯度下降

文章针对线性层的矩阵参数优化,提出对动量机制的新理解:动量不只是梯度的平均,还可视为一个在线回归问题的解。作者希望让参数层面的梯度下降逼近特征层面的梯度下降,于是把更新量对特征变化的偏差建模为线性回归并最小化,解出的校正梯度以输入自相关矩阵为Preconditioner,对其做EMA后得到一个SGDM变体。据此把更“靠谱”的动量替换进Muon得到Newton-Muon,输入各向同性时退化为Muon;再用梯度下降替代解析解优化该目标,引出DeltaMomentum,其演进与线性注意力从Vanilla到DeltaNet再到MesaNet高度一致。作者也点明两点不足:实现上需在前向记录自相关矩阵而破坏优化器独立性,理论上以实际输入构建Preconditioner可能限制探索空间并引入额外超参数。整体处于方兴未艾的雏形阶段,问题并不比结论少。

推荐收录:文章由苏剑林撰写,给出了把动量解释为在线回归问题的原创推导,并清晰串联Newton-Muon、DeltaMomentum与线性注意力演变的对应关系,属于可直接迁移到优化器设计的研究视角。适合研究大模型训练优化与深度学习理论的读者,帮助理解输入相关Preconditioner的动机与边界;作者也坦承实现耦合与探索受限等风险,判断审慎。

技术文章The Consensus - Articles

Data races and the limits of ThreadSanitizer in C and Go

文章以 C 和 Go 为例解释数据竞争定义,并指出 ThreadSanitizer(TSan)文档不足、实现已到 v3。作者用 Python 实现理想化的多线程 C 子集解释器,再接入 FastTrack 风格向量时钟作为竞态检测器,展示 TSan 的大致原理。随后通过可复现实验说明 TSan 的资源预算盲区:255 线程槽、14 位同步释放计数、每 8 字节 4 个访问单元都可能溢出,导致漏报明显竞态;Go 的 sync.Pool 地址哈希复用也会掩盖竞态。结论是 TSan 仍很有价值,但无报告不等于无竞态,使用者需理解其适用边界。

推荐收录。文章不是泛泛介绍竞态,而是通过自建解释器和检测器、C/Go 可复现实验,直接展示 TSan 在 255 线程、计数器、访问槽和 sync.Pool 上的漏报机制,证据具体且可迁移。适合使用 C/Go 并发、维护 CI 竞态检测或研究动态分析工具的读者,能帮助建立“无报告≠无竞态”的判断,并指导压测与人工复核。

技术文章TiDB 社区博客 - 技术解读

看懂 TiDB 向量索引(上篇·技术背景)

文章系统讲解向量检索的技术背景:从 Embedding 将对象映射为高维空间中的点入手,说明余弦、内积等相似度度量,并指出全量暴搜 KNN 的成本是 O(N·D),难以扩展到亿级数据。随后引入 ANN 与召回率指标,提出在近似索引中以可控精度损失换取数量级提速。作者分别剖析了 IVF 聚类倒排索引、HNSW 分层图索引和 SPFresh 动态分区索引的原理、查询流程、漏扫原因与核心参数,并从内存占用、更新能力、适用场景做横向对比,强调工程选型需结合数据规模和写入频率。文章逻辑清晰但属背景铺垫,真实工程实现和性能验证留待下篇。

文章不是简单罗列概念,而是用数据库工程师熟悉的“分治/近似”思想拆解向量索引的算法差异,对 IVF、HNSW、SPFresh 的召回率、内存开销和控制参数都有具体分析,能直接帮助读者在选型或阅读架构文档时理解 trade-off。适合后端工程师、数据库研发和需要落地 RAG/向量检索的团队。需留意作者最终落脚于 TiDB 的 SPFresh,属于厂商技术博客,阅读时应结合其他来源交叉验证。

科研议题知乎 - 苏剑林

流形上的最速下降:7. Stiefel的解析解

本文讨论Muon优化器在Stiefel流形上的最速下降解析解。此前人们认为非方阵情形需解非线性矩阵方程,新近论文却给出精确闭式更新。作者先用反对称参数化构造弱化问题并化为标准Muon问题,得到候选解;再证明任何原问题可行方向都可写成该形式,关键包括补全正交矩阵、用Parrott引理控制谱范数、反对称化不增谱范数,由此证明弱化解即原问题最优解。随后给出基于QR分解和SVD协变的低秩加速,并说明其仅当r远小于p时有明显收益;最后提出去掉正交约束的开放问题并给出必要条件。

作者不是简单转述论文,而是把闭式解的构造、等价性证明和计算加速完整梳理,并留下开放问题。对研究大模型优化器、正交约束或流形方法的ML研究者,可将其作为从弱化构造到严格证明的推导参考,且QR/低秩加速思路可迁移到其他矩阵计算场景。文章有一定数值线性代数门槛,但仍是高质量的理论性记录。

技术文章Daniel Lemire

Python sets and dictionaries can have quadratic-time performance

Python的dict和set通常被认为具有平均O(1)的插入与查询性能,本文通过两组实验验证这种看法在理论上和实践中都不严谨。一方面,选择适当间隔的整数作为key可以制造大量哈希冲突,使插入和成员查询的时间随数据规模翻倍而近似翻四倍,呈现二次复杂度。另一方面,即使没有人为构造攻击,当字典规模从1千增长到1百万时,单次查找的时间也因数据超出CPU缓存而大幅上升(实测超过9倍),而使用更紧凑数据布局的fastconstmap库则能保持接近常数的查询时间。作者指出,把哈希表看作常量时间更接近一种简化教学模型而非现实,需警惕该模型带来的认知偏差。文章附带完整代码,适合从事Python性能优化或了解哈希表实际行为的人阅读。

本文由Daniel Lemire撰写,用可复现的代码和实验数据驳斥了“Python dict/set都是O(1)”的常见直觉,并从哈希碰撞和CPU缓存两方面给出成因。内容有原创实验、可量化的结果和替代库,对需要处理大规模键值数据的Python工程师、系统设计者或算法课程教师都有长期参考价值。推荐收录。

技术文章Fzakaria Blog

Keeping one version of everything

这篇文章讨论在 Nix 生态中混用不同 nixpkgs revision 时产生的菱形依赖问题:同一进程可能经由不同依赖链载入同一库的两个版本,导致符号冲突或内存破坏,如 fluent-bit 自带的 zstd 与 libsystemd dlopen 的 zstd 互不兼容而破坏地址空间。作者在 grail 工具中新增 --one <attr> 约束,要求求解器为所选全部 revision 只保留指定库的单一版本,文中用 python3/postgresql 和 zstd/openssl 的示例展示约束如何让 python 回退到更早 revision,并在无解时精确报告会混合的版本。文章明确该保证仅到版本级 ABI 一致,不等于统一 commit 或 /nix/store 路径,若要严格同路径仍需强制单 revision;glibc 等具备向后兼容的库未来可以放宽。全篇以 SAT 求解器为底色,展示了把依赖一致性变成可求解约束的技术路线。

收录理由:文章不是空谈一致性,而是用真实崩溃案例和不含糊的求解输出展示了一种工程解法,并明确点出能得到与得不到的边界。适合 Nix/nixpkgs 维护者、依赖解析或包管理系统的设计者阅读;把多版本冲突转化为 SAT 约束并让求解器报告冲突的思路,也能迁移到其他语言生态。缺点是内容较垂直,要求读者具备 Nix revision 等前置知识。

工程实践Fzakaria Blog

The holy grail of nixpkgs: version ranges

文章围绕给 Nixpkgs 引入版本区间支持展开。作者利用 nixpkgs-multiverse 对 nixos-unstable 历史版本的索引,把传统包管理器中的依赖求解问题建模为 Answer Set Programming(ASP),并用 clingo 求解。工具 grail 提供类似 Spack 的查询语法,支持版本区间、共存组、日期范围等约束,能在数秒内找到满足多包版本条件的历史修订版本,并生成锁文件供 nixpkgs-multiverse 使用。文章还展示了如何在 derivation 中直接编写版本区间并在 build 时通过 import-from-derivation 完成解析。针对跨修订版本可能带来的 glibc 兼容问题,作者给出了基于 ELF 符号版本需求实现跨 era 混合的方案。目前该工具以命令行和 WebAssembly 演示形式提供,计划整合进 nixmultiverse.com。

推荐收录。文章不是抽象理念,而是用可运行的 grail 工具和一个实网索引给出了从版本区间语法、ASP 建模、求解策略到 glibc 兼容验证的完整方案,证据链清晰。适合对包管理器设计、依赖求解、SAT/ASP 应用或 Nix 生态深入探索的读者。文中的将版本历史当作可查询数据库的思路,以及用 ELF 元数据放宽兼容边界的做法,也具有跨生态的可迁移价值。

科研议题知乎 - 苏剑林

将Softmax Attention线性化为Gated DeltaNet

本文由苏剑林撰写,旨在将Softmax Attention线性化为具有Delta Rule的线性注意力变体。作者从Softmax Attention可视为平方复杂度RNN的视角出发,发现其递归增量天然具备Delta Rule形态,进而利用Softmax的一阶近似只近似对角线部分,以减小误差。随后,通过最小误差原则为残余的二次项寻找替代量,最终推导出Gated DeltaNet(GDN)的形式。文章严格推导了从Vanilla Linear Attention到GDN的转化过程,并说明了近似策略的动机与优势。该方法为线性注意力机制的设计提供了新的理论思路,但仍是近似变换,存在精度与泛化能力的边界。

推荐收录。文章展示了从Softmax Attention到Gated DeltaNet的完整数学推导,提供了可复现的理论路径,对研究线性注意力、RNN形式Transformer或高效长序列建模的读者有直接参考价值。其近似原则和误差分析可迁移至其他注意力变体的设计,是AI基础理论方向的优质内容。

技术文章Daniel Lemire

Java’s String.indexOf can be slow (quadratic)

文章指出 Java 的 String.indexOf 在对抗性输入下可能退化为 O(n·m) 的二次复杂度,并以 OpenJDK 25 和 Apple M4 Max 上的实测数据验证。作者将全 a 串作为主串、以 a* 加不同结尾字符作为模式串构造病态用例,测得当模式串长度为 4096 时,对 1MB 主串的一次查找耗时约 1.1 秒。文章随后对比了 Crochemore–Perrin 的 Two-Way 算法,该算法在相同病态输入下始终维持在约 0.3 纳秒/字符,性能差距可达数千倍;但在随机文本上,Java 自带的 indexOf 通常更快,且 Two-Way 有额外预处理开销。因此作者不建议无条件替换,而是强调在可能被恶意控制长模式串的场景中限制长度或改用更稳健算法。

推荐收录,因为它用清晰的可复现实验揭示了标准库中暗藏的最坏情况复杂度,并给出了两种算法在多组输入下的实测对比与明确边界条件。对需要做字符串处理性能优化、实现搜索功能或评估标准库风险的开发者,本文提供了可迁移的测度方法和算法选择依据。

工程实践Fzakaria Blog

nixpkgs-multiverse: the fewest nixpkgs

nixpkgs-multiverse 可从单个 flake 固定任意 Nix 包到历史任意版本。文章把版本固定建模为连续 revision 区间,目标是用最少 revision 点覆盖所有 pin,转化为贪心活动选择,O(n log n) 最优。若版本有空洞则 NP-完全,作者取最新连续段保持多项式可解。模拟显示 30 个近期版本 pin 只需约 10 个 revision;工具还提供最优性 plan、Nix API 与断言。需注意按 revision 分组可能拉回较早版本,且同版本字符串的闭包可能不同。

推荐收录。文章不是简单介绍工具功能,而是给出了清晰的算法建模、贪心最优性论证和 NP-完全边界,并用模拟数据验证收益。适合 Nix/Nixpkgs 用户、包管理工具开发者,以及对区间调度和工程权衡感兴趣的读者。可迁移价值在于把版本选择抽象成区间覆盖问题并利用贪心策略;主要风险是工具与 Nixpkgs 特定索引绑定,同类思路迁移到其他包管理器时需重新验证连续性假设。

技术文章Phil Eaton - databases

Implementing the Raft distributed consensus protocol in Go

本文详细介绍用Go语言实现Raft分布式共识协议中领导者选举和日志复制两大核心组件,并构建其上分布式键值存储。作者从状态机与KV API入手,逐步实现持久化、RPC、选举超时、投票逻辑、日志复制与提交推进。文中强调按Raft论文图2建模状态,并给出二进制持久化优化、批量复制等工程取舍。实现约1000行,经过手动与压力测试,但未接入Jepsen,也未实现重配置和快照,且固定日志条目大小;作者明确声明不用于生产,仅用于学习。整体展示了从算法到可运行系统的完整路径,适合理解共识实现细节。

推荐收录,因为文章以完整Go代码和Raft论文为依据,系统讲解选举与日志复制,并明确给出测试情况与限制。适合想深入理解分布式共识实现、数据库复制或使用Raft库的工程师和研究者,可迁移用于实现类似协议或排查相关问题;主要风险是版本未经验证、缺少快照等生产特性。

技术文章Simon Willison

SQLite compressed text-history prototypes

文章探索在 SQLite 关系数据库中高效存储文本修订历史的方案。作者提出将文档的每个历史版本完整放入 JSON 字符串数组,再整体用 zlib 或 Zstandard 压缩,以 BLOB 形式存储;另用整数数组列保存时间戳,避免压缩。通过 GPT 辅助生成 Python 原型并模拟 1000 次修订,实验显示 20.4MB 原始修订文本压缩后仅 80.3KB,验证了冗余重复带来的高压缩比。为规避每次编辑全量解压重压缩的开销,进一步提出将历史拆分为多行,每行最多保留 128 个修订或 3MB 未压缩 JSON。该方案实现简单,适用于编辑频繁且文本重复度高的历史记录场景,但尚未评估高频写入、版本检索和并发冲突等生产级问题。

推荐收录,因为文章给出了一个可复现的原型验证:1000 次修订从 20.4MB 压缩至 80.3KB,并明确了拆行存储的工程折衷。这种利用全文冗余进行压缩的简单方案对处理版本历史、审计日志或文档快照的工程师有直接参考价值,可迁移到其他需要高效存储多版本文本的场景。主要风险是未与增量存储或事件溯源等常见方案做对比,也未覆盖高并发写入和随机版本读取的约束。

技术文章MaskRay

Estimating branch probabilities

文章深入解析LLVM分支概率信息(BranchProbabilityInfo)在没有PGO(Profile-Guided Optimization)资料时的静态估计机制。作者首先梳理了LLVM估算分支概率的多级回退流程,重点剖析了calcEstimatedHeuristics算法,该算法利用不可达、noreturn、cold等区块的种子权重,通过支配树和后支配树反向传播,并结合循环结构对出口边进行缩放,从而为多后继终结指令分配概率。文中给出了独立的C++实现,并详细讨论了权重标度、边分类、循环嵌套森林的作用,以及不可归约循环对概率计算的影响。此外,还指出了与LLVM源码bit-per-bit匹配所需注意的实现细节,如种子顺序和工作列表顺序。该方法展示了静态分析中如何仅凭控制流图和循环结构生成合理分支猜测,对理解编译器优化有重要参考价值。

本文为编译器开发者、程序分析研究人员或对底层代码优化感兴趣的人员提供了LLVM分支概率静态估计的深入技术剖析,不仅解释了算法原理、设计取舍和工程考量,还附带可复现代码和对比案例。其详细程度足以帮助读者迁移到其他编译系统或静态分析工具的开发中,适合作为长期技术参考资料收录。

技术文章Max Bernstein

A quick look at zero-knowledge proofs

文章以图三着色为例,从 Goldreich 等原论文的 Protocol 4 出发,用 Python 代码展示零知识证明的交互式流程。作者实现颜色置换、Nonce 加盐哈希锁定、随机边挑战和校验,解析单轮协议逻辑。然后讨论多轮重复的概率保障,并简要介绍如何将协议推广到数独和其他 NP 完全问题。文中还提供客户端/服务器端的交互式演示,指出该方法在实际大数分解等场景中因图规模过大而存在实践限制。整体面向计算理论和密码学爱好者,强调可运行代码与学术论文的对应关系。

推荐收录,因为文章将经典零知识证明协议从论文转化为可运行代码,完整保留原协议中的置换、Nonce 和哈希锁定等关键设计,并提供概率分析和交互式演示。适合对密码学、计算复杂性或交互式证明感兴趣的学生和工程师,可作为理解 ZKP 原理和实现 NP 完全问题零知识证明的入门参考。文中对归约方法的讨论也提示了该技术的实际边界与迁移思路。

技术文章Eli Bendersky

Relative velocity and closing speed

本文讲解物理模拟或游戏引擎中计算两个物体接近速度的方法。作者先定义相对速度向量,并分解为连线方向的法向分量和切向分量;再通过向量投影和单位向量,使用点积求得闭合速度这一标量,其符号表示物体是否相互靠近。文章用多个具体示例演示计算过程,包括不同相对位置和速度情况,强调符号规约和瞬时性。最后将闭合速度推广为时间函数,证明其等于相对距离对时间的导数,并指出该公式在二维和三维空间中均适用,但假设物体可视为质点。

推荐收录,因为文章用清晰的向量分析和逐步推导,将闭合速度这一物理概念转化为可直接实现的算法,附有详细示例避免符号错误。适合游戏开发、物理引擎或模拟系统的开发者作为参考,其分解思路和投影方法可迁移至其他涉及方向分量计算的场景。

工程实践GitHub Engineering

Don’t stop early: Case-folding source code at memory speed

文章介绍了 GitHub 代码搜索引擎中实现高速 Unicode 大小写折叠(case‑folding)的技术方案。核心优化是在 ASCII 路径中去除提前退出分支,采用无分支循环配合自动向量化,使纯 ASCII 折叠速度超过 45 GiB/s。对于 Unicode,设计了一种仅 1776 字节的紧凑查找表,结合页位图、区间编码与字节级差值运算,避免码点解码而直接在字节空间完成折叠,将非 ASCII 路径开销降到最低。该方案在常见输入上显著超越其他实现,且已开源为 Rust crate casefold。文章还详细讨论了分支消除、向量化、内存带宽等权衡,以及该方法依赖小端字节序和合法 UTF‑8 的边界条件。

推荐收录,因为文章深入剖析了大规模文本处理中的极致性能优化方法,从分支消除、向量化到创新的字节空间 Unicode 折叠,展示了完整的工程决策过程和量化对比。对于从事搜索、编译、系统编程或性能优化的读者,文中的无分支循环设计、紧凑查找表结构和“一次扫描检测+转换”等技巧具有直接的可迁移价值,是真实的工程案例而非泛泛调参记录。

技术文章LWN.net

[$] Hazard pointers for the kernel

文章介绍了hazard pointers作为内核RCU机制的替代方案,用于实现无锁数据更新。作者从原理层面比较了两者的内存开销、延迟和回收确定性,指出hazard pointers在低内存占用和及时回收方面的优势。文章还结合内核社区正在评估的实现,讨论了并发内存排序、安全语义以及实际部署中的工程权衡。内容适合理解内核无锁、垃圾回收机制和并发数据结构的读者,但未深入特定硬件架构或极端性能测试。

文章从原理、优缺点和工程可行性多角度剖析了hazard pointers在内核中的应用,具备深度的技术比较和清晰的适用边界说明。对于系统开发者、内核工程师或关注高性能并发的读者,本文可作为理解无锁同步替代方案的优质参考,迁移价值高。

技术文章知乎 - SmartCode 得物技术

RAG 核心概念与原理:Chunking、Embedding、相似度、HNSW 与多路召回|得物技术

文章系统梳理了RAG(检索增强生成)的核心检索技术链路,从LLM的局限性引出RAG的必要性,依次阐述了文档切分策略(Chunking)、文本向量化(Embedding)的原理与对比学习训练方式、向量相似度度量(以余弦相似度为主)、以及近似最近邻搜索算法HNSW的分层图设计与贪心搜索机制。在此基础上,完整介绍了查询改写、元数据过滤、多路召回(ANN+BM25)、RRF排名融合与Cross-Encoder重排序(Rerank)的协同工作流程,并强调了混合检索与各环节工程取舍的重要性。全文提供了具体的参数选择、算法复杂度和实践建议,适合构建高质量RAG系统的开发者参考。边界:未涉及具体模型微调与超大规模部署,但覆盖了核心概念与实用策略。

本文深入浅出地讲解了RAG检索系统的核心原理与工程考量,从Embedding到HNSW再到混合检索,每一环节均有理论解释和实际示例,避免空泛介绍。适合AI工程师、后端开发者以及希望优化检索效果的技术人员。文中关于Chunking策略、HNSW参数调优、多路召回融合等可迁移经验具有较高的实践指导价值,因此推荐收录。

科研议题知乎 - 苏剑林

矩阵函数近似中的暴力美学

本文提出一种通用的矩阵函数近似框架,针对奇异值型矩阵函数,构造三次多项式迭代格式,通过贪心策略逐层求解每一步的系数参数,将优化问题转化为线性回归或线性规划以稳定获得有效解。该框架克服了现有方法仅适用于有理次幂且复杂度依赖分数分母的局限,能够以固定迭代阶次近似任意连续函数,相近函数的近似系数也自然接近。文中以立方根、五次方根等为例给出了具体迭代系数和误差对比,验证了方法在最大误差和通用性上的优势,并讨论了边界约束、初始条件等工程细节,最后提供了基于CVXPY的参考实现。

文章针对矩阵函数计算这一基础问题提出了系统性改进方案,从问题定义、现有方法局限梳理到通用框架设计和优化求解,技术脉络清晰,数学推导扎实,并附有可复现的参考代码和误差分析。其贪心求解思路和线性规划转化技巧具有一定的可迁移性,适合从事数值计算、优化器实现或科学计算库开发的研究者和工程师参考。

工程实践LWN.net

[$] Lockless MPSC FIFO queues for io_uring

文章介绍了 Linux 7.2 内核中 io_uring 子系统将工作项跟踪机制从标准链表替换为无锁多生产者单消费者(MPSC)队列的工程实践。作者逐步解释了无锁队列的设计原理,包括原子操作、内存顺序和使用场景,并展示了该变更带来的显著性能提升。文章还讨论了无锁算法在正确性与性能之间的权衡,以及该实现为何适用于 io_uring 的特定工作负载。内容聚焦于真实工程问题、具体实现取舍和可验证的效果,为理解内核并发优化提供了清晰的案例。

推荐收录,因为该文不仅报告了性能提升结果,更深入解析了无锁 MPSC 队列在内核中的具体设计和正确性保障,展示了从问题识别到算法选择、验证的全过程。对从事内核开发、高性能系统设计或对无锁编程感兴趣的读者有直接参考价值,其设计思路和分析方法可迁移至其他并发场景。

技术文章Eli Bendersky

Notes on the Fourier Transform

本文从傅里叶级数出发,通过让周期趋于无穷大,逐步推导出傅里叶变换,重点演示了非周期函数如何从离散频率系数过渡到连续频率函数。作者以一个奇三角脉冲为例进行计算,展示变换的复数结果及其幅度和相位,并讨论频率域表示的意义。文章还阐述了傅里叶变换的存在条件(绝对可积)、以及线性、缩放、时移、导数和卷积等关键性质,最后给出卷积定理。内容偏向工程实用,对数学严谨性有所取舍,假设函数在无穷远处趋于零,适合信号处理等领域的入门学习。

推荐收录,因为本文以清晰、有层次的推导讲解了傅里叶变换的核心概念,并提供了可交互的直观演示(文字描述)和具体计算示例。适合计算机专业学生、信号处理或相关领域的工程师作为理解频域分析的基础参考,其从级数到变换的推导思路也具有可迁移的学习价值。

技术文章Simon Willison

DOOMQL

文章介绍了 DOOMQL 项目,一个完全用 SQLite 实现 Doom 式游戏的大胆实验,将移动、碰撞、敌人逻辑和光线追踪渲染全部写成 SQL 查询。作者展示了如何在终端运行该项目,并利用 Datasette 工具探索其生成的 SQLite 数据库;他还通过 Datasette Apps 插件快速构建了实时游戏画面仪表盘。文章重点在于演示 SQL(尤其是递归 CTE)在实时图形领域的非传统应用,以及如何结合 uv、Datasette 等工具进行探索式开发。适用边界在于这主要是技术验证和教学范例,不适合生产环境游戏开发,但其工具集成和查询设计思路对数据密集型应用的可视化或交互探索有启示意义。

本案例通过具体可复现的步骤,展示了用递归 CTE 实现光线追踪的工程做法,以及利用 Datasette 快速组装定制监控视图的实践。适合对数据库高级应用、工具链集成或创意编程感兴趣的开发者阅读,有助于掌握递归查询的深度用法和轻量级工具组合技巧。虽然游戏本身非工程级,但作为学习范例和灵感启发,其方法可迁移至数据探索、实时可视化等场景。

技术文章知乎 - 苏剑林

强制间隔投影(Margin-Enforcing Projection)

本文提出一种称为“强制间隔投影(MEP)”的数学运算,用于将分类分数向量投影到满足正类最小分数比负类最大分数至少大一个指定间隔的最近向量上。作者先阐述了间隔约束在稳健分类和特征学习中的必要性,然后给出 MEP 的数学定义,并分别在 L2 和 L1 距离下推导求解方法:L2 情形转化为分段线性函数的零点搜索,L1 情形则有简洁的排序取分位点闭式解。文章还提供了 JAX 实现代码,分析了两种距离下的算法复杂度和适用性,推荐实践中使用 L1 版本。该投影运算可直接作为模型学习目标,为设计带间隔的损失函数提供新思路,但适用边界限于单次分类分数向量的投影变换,并非完整的训练算法。

本文从一个实用需求出发,用清晰的数学推导和配套代码完整地讲解了 MEP 运算的原理与实现,既有理论深度也有工程可操作性。它适合从事度量学习、损失函数设计或分类器鲁棒性优化的读者,其中 L1 版本的简洁解法可直接用于训练流程中的后处理或约束嵌入。尽管不是端到端的新损失函数,但其投影思路具备较高的可迁移价值,可作为构建定制化损失组件的参考。

技术文章知乎 - 木鸟杂记

工程中的经典 “意象”(一):滑动窗口

文章以“意象”和“隐喻”视角,将滑动窗口这一经典工程概念串联到TCP可靠传输(停等、GBN、SR协议)、LeetCode字符串处理(无重复最长子串、最小覆盖子串)、Raft共识算法(同步窗口与应用窗口)以及流式数据调度等多个计算机领域。作者以个人学习与工作经历为线索,逐步揭示滑动窗口的核心结构:序号机制、有限视图和单调移动,并强调其“以有限应对无限”的设计哲学。文中对每个场景的推导过程、关键细节和工程取舍均有说明,尤其点出双指针维护窗口、计数器表达视图等共通技巧。文章偏向概念梳理与跨领域类比,未深入单一实现细节或性能边界,更适合建立全局直觉而非直接作为实现手册。

推荐收录,因为文章将滑动窗口从具体协议和算法中提炼为可迁移的工程隐喻,以生动案例串联多个计算机子领域,能帮助读者建立跨层次的系统思维。适合对分布式系统、算法设计或计算机网络感兴趣的学习者,文中总结的“序号+窗口+滑动”模式可直接迁移至数据管道、状态同步等工程场景。

技术文章MaskRay

Irreducible loops

文章聚焦于编译器和程序分析中的不可约循环(irreducible loops)问题,首先回顾了支配树和自然循环在可约控制流图上的局限性,指出在优化后的机器码及反编译输出中常见的多入口循环无法被基于支配关系的方法识别。随后详细介绍了韦韬等人在SAS 2007提出的单趟DFS算法,该算法无需支配树或UNION-FIND,通过将遍历中遇到的每条边分为五种情况,并结合“头部链”合并机制,在一次深度优先搜索中同时完成循环识别与头部标记。文章提供了完整的C++实现,并借助不可约核心图和嵌套结构示例验证了算法输出Havlak最细化循环嵌套森林,同时展示了可约情况下与自然循环的一致性。该算法的时间复杂度为O(N+k*E),其中k为衡量非结构化程度的系数,在实际代码中接近线性。文章也指出了算法对DFS顺序的依赖以及不可约循环头的不唯一性。

推荐收录,本文不是简单的算法复述,而是从理论缺陷出发,逐步引出单趟DFS解决方案,并配有清晰图示、完整代码和可运行示例。它对编译器工程、程序分析和反编译领域的读者具有直接的参考意义,能够帮助他们理解如何处理非结构化控制流,并将这套轻量级循环识别方法迁移到自己的静态分析工具中。

技术文章Cloudflare Blog

Why we cannot wait for better post-quantum signature algorithms

本文系统比较了当前及正在标准化的后量子签名算法,包括 ML‑DSA、SLH‑DSA、FN‑DSA、HAWK、基于知识的证明方案、以及 MAYO、SNOVA、UOV、QR‑UOV 等多元变量方案。作者详细分析了各方案的性能指标、安全假设、实现难点和适用场景,指出了 SQIsign、UOV 等专业化方案与 ML‑DSA 等通用方案的各自权衡,并梳理了从提交、标准化到实际部署的完整时间线。文章核心结论是:尽管未来可能有更优算法,但威胁迫近,ML‑DSA 已是当下唯一可行的第一波迁移选择,而继续推进新算法研究对长期安全和高级密码原语仍不可或缺。讨论主要面向 TLS 及 WebPKI 场景,未深入其他非互联网协议。

推荐收录。本文为后量子签名技术现状提供了极佳的参考综述,从算法原理、性能对比、安全分析到部署时间线均覆盖详尽,尤其适合安全工程师、架构师和决策者规划密码迁移时参考。其来自 Cloudflare 的实战视角和明确的工程判断(“用现有算法开战”)具有强可迁移性,能帮助读者快速建立对后量子签名方案的整体认知并做出务实的技术选择。

工程实践Amazon Science

Navigating uncertainty in Amazon&apos;s middle-mile network

这篇文章讲的是 Amazon 中段物流网络(middle-mile network)如何在需求波动、路况变化、设施故障等不确定性下进行网络设计与调度优化。核心思路不是追求对每一种异常都“鲁棒化”到完全免疫,而是通过“可选性(optionality)”设计、粗粒度优化加时间边界约束、以及 Monte Carlo 生成场景来评估方案的脆弱性,从而筛选出在常态和扰动下都更稳定的网络方案。文章还介绍了用图注意力网络同时建模站点图和起讫点图,以捕捉空间相关性与流量耦合关系,帮助生成更真实的需求场景。

推荐收录,因为它把大规模物流网络中的不确定性优化问题讲得比较具体,展示了优化、机器学习与仿真场景生成如何组合起来服务真实业务。虽然是博客形式,但其中关于“不要只优化平均情况、要为扰动保留可选性”的方法论,对做供应链、运筹优化和大规模决策系统的读者有较强迁移价值。

技术文章Max Bernstein

Value numbering

本文系统讲解了编译器中的 value numbering:先从 SSA 中“同形表达式是否可复用”的问题切入,说明它如何用于公共子表达式消除,并区分纯操作与带副作用操作。作者给出局部 value numbering 的实现思路:用哈希表为指令建立值号,遇到已存在的等价指令就用 union-find/Assign 形式替换,从而在单个基本块内消除重复计算。随后文章把问题推进到全局 value numbering,重点解释了为何必须借助支配关系而不是简单按块遍历,以及在分支、汇合和循环中 phi 节点为何需要特殊处理。文章还讨论了内存相关指令的失效与转发,例如 Load/Store forwarding、跨块的 kill set 管理,并对 Maxine、ART、V8、HotSpot 等实现做了对照。最后作者补充了统一哈希表、value partitioning、scoped hash map、JIT 场景中的强度削弱等相关方向,指出该方法对重复纯表达式很有效,但处理副作用和循环时需要额外的可用性与失效管理。

推荐收录:文章明确覆盖了 value numbering、SSA、dominators、phi 处理、内存失效与 load/store forwarding 等关键机制,并给出 Maxine 等真实实现片段作为直接证据。适合编译器、JIT 和程序优化读者参考,迁移价值在于可直接借鉴其“哈希表+支配关系+失效管理”的分析框架;主要边界是它对复杂内存建模与循环优化仍是概述性质。

技术文章matklad

Consensus Board Game

这篇文章用“委员会投票/棋盘”隐喻解释共识算法的核心数学结构,目标是帮助读者直观理解 Paxos 一类协议为何能在成员缺席时仍达成一致。作者先从简单多数投票讲起,说明为什么平票和领导者缺席会让决策卡住,再引入轮换领导者与“只允许批准”的规则来恢复可完成性。随后把单次投票扩展为半无限二维棋盘:每一列独立推进、每列都可能形成多数,但全局必须保证任意两个已完成多数列的结果一致。文章进一步说明,参与者需要基于左侧已知状态和“未来可能性”来选值,并通过让某个多数先承诺不在左侧投票,排除冲突结果。它的价值在于把安全性、活性与多数承诺的逻辑关系讲得非常直观,但作者也明确说明这里只覆盖抽象数学层面,未展开真实分布式系统中的消息时序、通信延迟和工程实现细节。

文章直接用棋盘图像重构共识协议的安全性与多数承诺逻辑,适合一直觉得 Paxos 难懂的读者。它的迁移价值在于帮助建立抽象模型,但不覆盖工程实现细节,适合作为入门和复习材料。

技术文章Max Bernstein

A multi-entry CFG design conundrum

文章讨论 ZJIT 在编译 Ruby 字节码时遇到的多入口控制流图设计难题。由于 Ruby 默认参数在调用时求值,编译器需要把默认参数逻辑放在被调函数内部,并同时支持解释器入口、JIT 入口和若干默认参数入口。作者展示了这种 HIR 设计如何让 SSA、RPO 遍历和 Cooper 风格支配树算法都变得别扭,因为图里不再存在唯一的起始块。文中系统比较了三种方案:保留特殊处理、合成超级入口块、或按入口复制整张 CFG,并说明复制方案虽然简单但会带来代码膨胀。最终更新里给出团队选择了 superblock/EBB 方案,接受了更复杂的 dominator 与 predecessor 处理,以换取更清晰的入口模型。文章的边界也很明确:结论主要适用于多入口 IR 设计,后续复杂分析仍需继续验证。

收录价值在于它不是泛泛谈“编译器设计”,而是拿真实的多入口函数 IR、支配树失配和三种可选方案做了具体权衡。适合编译器、语言运行时和 IR 设计读者参考,尤其是需要处理入口分裂、默认参数或多返回点的实现者。

技术文章Stanford Hazy Research

Long Convolutions for GPT-like Models: Polynomials, Fast Fourier Transforms and Causality

文章用一个面向模型实现的教程,解释长卷积为何能用于 GPT 类长上下文模型。作者先把序列和卷积核写成多项式系数,说明卷积系数等价于多项式乘法中的卷积项,从而把问题转化为代数运算。接着介绍系数表示与取值表示之间的转换,借助根单位构造离散傅里叶变换矩阵,并利用 FFT 将乘法复杂度降到 O(n log n)。文章最后讨论“因果性”与额外高阶项的处理方式,区分截断、延长和循环卷积,并指出 GPT 风格模型通常需要前两者而不是纯循环卷积。其不足是偏入门教程,数值稳定性、实现细节和硬件优化只做了概述,但作为理解长卷积与 FFT 关系的入门材料很扎实。

文中直接给出了“卷积=多项式乘法”“FFT 实现 O(n log n) 乘法”以及因果卷积如何适配 GPT 的完整链条,适合做长上下文建模、序列建模和高效算子实现的基础参考。它对研究和系统读者都可迁移,但主要是教程性质,读者仍需结合实现论文或代码处理数值稳定与工程细节。