AI百科网 AI教程
AI百科

用 TypeScript 手写一个 LLM 要几步

用 Node.js 和 TypeScript 手写 LLM 的教程,按章节实现 attention、transformer 和训练循环。读完知道模型最少由哪几块组成,手写有什么用。

大多数 LLM 教程用 Python。有人偏用 TypeScript 从零写一遍,理由很实在:在不熟悉的语言里,你没法靠现成库糊过去。

一、发生了什么

10 月 14 日,一个叫 "Building an LLM in NodeJS" 的项目被发到 Hacker News 的 Show HN,作者把它做成了一本可以运行的教程书,页面在 book.humanexperiences.io。

结构是按章节往上搭:数据集、dataloader、attention、transformer block、GPT、训练循环。每一章在 @node-llm/chapters 包里都有可运行的入口,代码放在 GitHub;配套的 @node-llm/playground 计划提供嵌入页面的 WebGPU 演示,目前页面标注为"即将上线"。

这个顺序本身就是一份依赖清单。dataloader 决定文本怎么切成 token、怎么组成 batch;attention 决定模型如何在不同位置之间取信息;transformer block 把 attention 和前馈层叠起来;GPT 把这些块堆成一个完整模型;训练循环再把梯度、优化器和数据流接上。跳过任何一层,后面都跑不通。

选 Node 这套工具链还有个附带好处:模型能直接跑在浏览器里,用 WebGPU 做推理演示。对教学来说,能看见每一步的张量形状和数值,比读公式有用得多。

作者明确说,选 TypeScript 不是因为它更适合训练,而是因为它离另一群开发者的日常工作更近——前端和 Node 开发者不用换技术栈,就能把模型内部可视化、单步调试。

它不复制 ChatGPT。数据规模、分布式并行、低精度训练、高性能 attention kernel 这些工程问题都不在范围内。目标是机制跑通,不是效果对齐。

二、跟你有什么关系

前端和 Node 开发者:不用装 CUDA,也不用先学 PyTorch,就能亲手摸到 attention 和反向传播。理解成本比读论文低。

产品经理:跑一遍会明白上下文长度、温度、KV cache 各自卡在哪。上下文不是越大越好,attention 的计算量随长度增长很快;温度也不是"创造力开关",它只是改变采样时概率分布的形状。以后听工程师说"这个做不了",你能判断是真做不了还是没调好。

真要训模型的人:这不够用。生产训练还是得回 PyTorch 和 GPU 集群,这本书解决的是理解,不是产能。

这类从零实现通常只有几百行代码、几百万参数、几十兆语料。它当然不聪明,但每个数字都能追到出处。这正是它的用途:把"模型"从一个黑盒,变成一串你能改的矩阵运算。

三、怎么跟着做

  1. 先做字符级模型。用一小段高度重复的文本,确认编码解码完全可逆,模型能记住局部模式。
  1. 补矩阵运算和数值稳定的 softmax。用极小的矩阵手算验证,逐个核对输出形状。这一步最容易埋下后面调不通的坑。
  1. 加单头因果 attention。把权重画成热力图,确认右上角被遮住、每一行的权重和约为 1,第一个位置只能看到自己。
  1. 加多头、前馈、残差、LayerNorm。先只做前向,不做训练,记录每层输出的均值、方差和最大绝对值。
  1. 最后加自动微分、优化器、checkpoint 和采样。先让它过拟合几十条样本,再谈泛化。连几十条都拟合不了,通常是梯度、标签或参数更新写错了。

四、三个别信的说法

「手写一遍就能训大模型。」 你写的是机制复现,规模差了六七个数量级。显存管理、通信、容错这些真问题,在小模型上根本不会出现。

「TypeScript 版更专业。」 它只是更贴近另一群人的工作环境。库的成熟度、GPU 支持、可复现的公开经验,Python 都领先很多。真要做研究,语言不是重点,工具链和算力才是。

「loss 一直降就是模型学好了。」 小语料上 loss 一直降,很可能只是背下了训练集。至少留一个验证集,同时看重复率和没见过提示词的续写质量。

五、一句话结论

手写一遍的价值不在造模型,在于以后看到"模型不行"时,你能分清问题出在提示词、模型能力,还是运行时限制。

信息来源

  • 《Building an LLM in NodeJS》项目主页,2026-10-14:链接
  • 项目代码仓库:链接

功能与价格以官方公告为准。本文写于 2026 年 10 月 17 日。

复制规范引用格式,便于转载注明出处
这篇有用吗?