用TypeScript从零构建LLM:Show HN项目引关注

开发者用TypeScript从零实现LLM,展示了脱离Python生态构建大模型的教育价值与可行性。
一位开发者用TypeScript从零构建了大语言模型并发布在Hacker News的Show HN板块,不依赖任何Python绑定或外部推理服务。文章梳理了从零实现LLM的核心环节:张量运算与自动微分、Decoder-only Transformer架构(多头自注意力、位置编码、层归一化、残差连接)、训练循环与Adam优化器,以及自回归推理与KV缓存。作者指出,这类项目对理解Transformer内部原理极具教育意义,尤其适合习惯TypeScript/JavaScript生态的前端开发者。但TypeScript在数值计算性能上远不及Python+CUDA,模型规模通常停留在百万参数级别,更适合教学和小规模实验。随着WebGPU和ONNX Runtime Web成熟,TypeScript在浏览器端AI推理中的角色将愈发重要。
在AI技术日益普及的今天,大多数开发者习惯于调用OpenAI、Anthropic等公司提供的API来构建应用。但有一位开发者选择了一条更硬核的路径——用TypeScript从零开始构建一个大语言模型,并将项目发布在Hacker News的Show HN板块。

为什么用TypeScript造LLM?
提到LLM开发,Python几乎是默认选项。从PyTorch到Hugging Face生态,Python拥有最成熟的工具链。然而,TypeScript正在成为AI应用层最活跃的语言之一——Vercel AI SDK、LangChain.js等框架的兴起让前端开发者也能轻松集成大模型能力。
那么,用TypeScript从零写一个LLM意味着什么?它意味着不依赖任何Python绑定,不调用外部推理服务,而是纯粹用JavaScript运行时完成张量运算、前向传播、反向传播乃至注意力机制的实现。这对前端工程师理解Transformer架构的内部运作原理,是一个极具教育意义的练习。
对于想要深入理解LLM底层原理但又习惯了TypeScript/JavaScript生态的开发者来说,这类项目提供了一个低门槛的切入点。你不需要切换到Python,就能亲手实现一个能工作的语言模型。
从零构建LLM涉及哪些核心环节?
一个完整的LLM从零实现通常需要覆盖以下几个关键模块:
张量运算与自动微分
这是所有深度学习框架的地基。在TypeScript中实现张量意味着要处理多维数组的创建、形状变换、矩阵乘法以及逐元素运算。自动微分则要求构建计算图并实现链式法则的反向传播——这在Python中有Autograd帮忙,在TypeScript中则需要从零搭建。
什么是自动微分? 自动微分(Automatic Differentiation)是深度学习框架的核心机制,它通过记录前向传播中每一步运算,构建出一张计算图,然后沿着这张图反向应用链式法则,自动求出损失函数对每个参数的梯度。与数值微分(用有限差分近似)和符号微分(直接操作数学表达式)不同,自动微分在精度和效率之间取得了平衡,是反向传播算法的工程化实现。Python中PyTorch的autograd模块即提供此能力,开发者只需定义前向计算,梯度计算由框架自动完成。在TypeScript中从零实现自动微分,意味着需要为每个张量操作定义对应的反向函数,并维护一张可追踪的计算图,这正是理解深度学习框架内部工作原理的最佳切入点。
Attention is All You Need 与 Transformer 的由来。 这一架构出自Google在2017年发表的同名论文,它彻底抛弃了循环神经网络(RNN)和卷积神经网络(CNN)的序列处理方式,完全基于注意力机制来建模序列中任意两个位置之间的依赖关系。其核心创新在于"自注意力"(Self-Attention):每个token都能直接"看到"序列中的所有其他token,并动态计算加权表示,从而解决了RNN长距离依赖衰减和难以并行化的问题。GPT系列正是采用了Transformer的Decoder-only变体——只保留解码器部分,配合因果掩码(Causal Mask)确保每个位置只能关注它之前的token,从而实现自回归文本生成。
Transformer架构
GPT系列模型的核心是Decoder-only的Transformer结构。这包括多头自注意力机制(Multi-Head Self-Attention)、位置编码、层归一化、前馈网络以及残差连接。用TypeScript实现这些组件,需要精确处理张量的维度变换,任何一处shape不匹配都会导致运行时错误。
多头自注意力机制(Multi-Head Self-Attention)详解。 自注意力的基本思想是:对序列中每个token,用它自己的查询向量(Query)去与所有token的键向量(Key)做点积,得到注意力权重,再对这些token的值向量(Value)加权求和。而"多头"意味着把这一过程并行重复多次,每次使用不同的线性投影矩阵,从而让模型能够从多个不同的"表示子空间"同时捕捉语义关系——比如一个头关注语法结构,另一个头关注指代关系。最后将各头的输出拼接后再做一次线性变换。这种设计极大增强了模型的表达能力。在TypeScript中实现时,最棘手的部分是正确管理张量形状:需要将输入拆分为多个头、分别计算注意力、再合并回去,任何reshape或transpose的错误都会导致输出完全错误。
KV缓存(Key-Value Cache)为何重要。 在自回归文本生成中,模型每生成一个新token,都需要重新计算它与之前所有token的注意力。如果每次都从头计算整个序列的Key和Value矩阵,计算量将随序列长度呈平方增长。KV缓存的核心思路是:把之前所有token的Key和Value向量缓存下来,生成新token时只需计算当前token的Query,并复用已缓存的Key和Value即可。这能将每步生成的计算复杂度从O(n²)降到O(n),是实际部署LLM时几乎必用的推理优化技术。在TypeScript中手动实现KV缓存,需要仔细维护每一层、每个头的缓存状态,是理解推理引擎运作机制的绝佳练习。
训练循环与优化器
模型搭建完成后,还需要实现训练循环:前向传播计算损失、反向传播计算梯度、优化器更新参数。常见的Adam或AdamW优化器需要维护动量缓冲区,这在TypeScript中同样需要手动实现。
推理与文本生成
最后,模型需要能够进行自回归推理——给定一段提示词,逐个token生成后续文本。这涉及到采样策略(如top-k、温度采样)和KV缓存等优化技巧。
位置编码与层归一化的作用。 由于自注意力机制本身对输入顺序不敏感(打乱token顺序,注意力计算结果不变),Transformer必须显式注入位置信息,这就是位置编码(Positional Encoding)的职责。原始论文使用正弦/余弦函数生成固定编码,而GPT系列多采用可学习的位置嵌入。层归一化(Layer Normalization)则是对每个样本的特征维度做归一化,稳定训练过程中的数值分布,加速收敛。GPT-2之后普遍采用Pre-LN结构(归一化放在子层之前),相比原始Post-LN结构训练更稳定。残差连接(Residual Connection)则让梯度能够直接绕过子层回传,是训练深层网络的关键。这三者看似简单,却是Transformer能够堆叠数十层而不退化的重要保障。
这个项目的价值与局限
从教育角度看,这类项目的价值不容低估。当你亲手用TypeScript实现了一遍注意力机制,你对"Attention is All You Need"的理解将不再停留在论文层面。这种动手经验对于排查实际应用中的模型行为问题也有切实帮助。
但需要理性看待的是,TypeScript在数值计算方面的性能远不及Python+CUDA的组合。这类项目更适合作为教学工具和小规模实验平台,而非生产级别的模型训练方案。它训练出的模型规模有限,参数量通常停留在百万级别,与动辄数十亿参数的工业级模型有本质差距。
不过,对于一个Show HN项目来说,它成功展示了LLM不再是Python的专属领地。随着WebGPU和ONNX Runtime Web等技术的成熟,浏览器端运行小型语言模型正在变为现实,TypeScript在这一领域的角色会越来越重要。
前端开发者的AI学习路径
这个项目也折射出一个趋势:AI开发的门槛正在降低,语言边界正在模糊。对于前端开发者而言,理解LLM原理不再是"别人的事"——当你能够用自己熟悉的语言构建一个可运行的模型时,AI就不再是一个黑盒。
如果你有兴趣尝试类似的方向,建议从最小的可运行版本开始:先实现一个单层的一维张量运算库,再逐步扩展到完整的Transformer。这个过程中积累的对矩阵运算和梯度流动的直觉,会比读十篇论文都来得深刻。
相关推荐

Cursor能控制你的电脑了:AI代理可驱动桌面应用测试
Cursor 新增桌面控制能力,AI 代理可驱动 iOS 模拟器等桌面应用测试自己构建的功能。本文分析这一更新对开发工作流的影响、技术实现可能路径及可靠性考量。

Vibecoding自研推理引擎:理想丰满,现实骨感
Reddit开发者分享Vibecoding自研推理引擎的真实经历:用WebGL2和GLSL在浏览器跑GGUF Q4模型,却陷入tokenizer调试地狱。本文分析浏览器端LLM推理的工程难点,以及为何直接clone llama.cpp是更理性的选择。

Anthropic IPO前,早期投资人账面回报有多高?
Anthropic IPO前早期投资人账面回报引发关注。本文分析其纸面收益来源、资本结构、IPO预期下的博弈与风险,以及对AI创业生态的启示。