今天补充一篇关于训练的,介绍大模型损失函数内最重要的一个数学对象:交叉熵,来源于信息论,在大模型中应用广泛,可以说是除了注意力机制之外最核心的数学建模了。然而市面上关于交叉熵的文章多数在堆砌概念,看了只会让我感到不安,靠比喻是没有形成自洽且体系化理解的。
以 GPT-2 为对象,用纯 TypeScript 从零手写完整推理过程,从 tokenizer 到 embedding,从 attention 到 softmax,不依赖任何推理框架,在 V8 + Float32Array 内跑通 38.6M 参数的模型前向传播以及相关的张量操作
八年前我还在读本科的时候,修过一门关于神经网络与模式识别的课程,虽然这门课不用怎么写代码,但是其内在的思想我到今天还是记忆深刻;近 2 年来,ChatGPT 后大模型是越来越火热了,其内在的核心仍然是神经网络,如果需要搞明白大模型的推理,其实就是在问神经网络如何解决问题 ? 本文将介绍神经网络的基本构造并解释大模型的推理是什么,从 $y = kx + b$ 出发自底向上构建对大模型的数学认知,最后会从技术的角度上点评下现在流行的一些 AI 术语
前段时间工作重心在性能优化,着重看了 V8 相关的优化细节,尤其是 Inline Caches (ICs) 技术,后面依据这项技术将核心指标性能优化到原来的十倍,这里记录一下 ICs 相关细节,仅供参考: 解释器手写的 line-by-line 虚拟机执行流水线完全比不上 CPU 内部的指令流水线以及更为夸张的分支预测手段,因此我个人过去认为 C 至少比 JS 快 10 倍+,直到最近看了不少的 v8 benchmark 之后才对这块有所改观,目前的观点是:只要构造合适,V8 JIT 可以有媲美原生 AOT 的性能,当然也容易出现非常夸张的性能劣化。
长久以来对 unicode 的一些细节还是不够清晰,因此今天集中注意力深入研究并实现 Unicode 最常用的三种编码 UTF-32/16/8 来获得完全同步 (超长文警告)
Connecting The Dots.
2877.4 KB