斯坦福CS336精讲:从零构建大语言模型完整指南

斯坦福CS336课程主张从零构建大语言模型,以效率为主线贯穿分词、架构、系统、数据与对齐五大模块。
斯坦福CS336《Language Models from Scratch》由Percy Liang主讲,核心理念是只有亲手构建才能真正理解语言模型。课程直面前沿模型工业化、学生只能训练小模型的现实困境,将可迁移知识归纳为机制、心态与直觉三类。课程分五个模块:从零训练第一个语言模型、系统优化榨干硬件性能、通过Scaling Laws科学预测大模型性能、数据工程决定模型上限,以及通过强化学习实现模型对齐。贯穿始终的核心主题是效率——在固定资源约束下,如何让每一分算力、数据和内存都发挥最大价值。课程特别强调开源生态(LLaMA、DeepSeek等)使这类教学成为可能,并纠正了对"Bitter Lesson"的常见误读:能够随规模高效扩展的算法才是真正重要的。
斯坦福大学的 CS336《Language Models from Scratch》被誉为最硬核的大模型公开课之一。这门课的核心理念只有一句话:只有亲手从零构建,你才能真正理解语言模型的工作原理。在人人都能用 Coding Agent 一键生成模型的时代,为什么还要坚持这种「从头造轮子」的教学哲学?本文将系统梳理这门课程的核心思想与技术脉络。
为什么要从零构建大语言模型
课程主讲人 Percy Liang 指出了一个值得警惕的趋势:研究者正在与底层技术脱节。十年前,所有 AI 研究者都会自己实现和训练模型;八年前,人们下载 BERT 这样的预训练模型进行微调;而今天,很多人只需 prompt 一个模型就能完成工作。
Prompt 本身没有问题,抽象层级的提升是好事。但正如 Percy 强调的:「抽象是有漏洞的(Abstractions are leaky)」。当你想让模型做某件事却发现无从下手时,如果只停留在 prompt 层面,你实际上大大限制了自己能探索的设计空间。对于真正的基础研究而言,完整理解语言模型的运作方式是必要的,而理解的方式就是——构建。
小模型训练的局限性
课程也坦诚地承认了一个现实困境:前沿模型已经工业化。三年前 GPT-4 的训练成本据传高达 1 亿美元,如今可能已达到十亿美元量级,而 GPT-4 论文明确表示因竞争与安全考量不会披露任何构建细节。
这意味着学生只能训练小模型,但小模型未必能代表真正的前沿模型。课程给出了两个例子:其一,小规模下 MLP 层的 FLOPs 占比约为 44%,而扩展到 175B 时会上升到 80%——你在小规模上优化的东西,在大规模上未必受益;其二是「涌现」现象,很多能力只有达到临界规模才会突然出现。
能迁移的三类核心知识
既然小规模实验有局限,那我们究竟能学到什么可迁移的知识?课程将其归纳为三类:
- 机制(Mechanics):Transformer 是什么、模型并行如何工作。这些完全可迁移。
- 心态(Mindset):如何着手构建语言模型、如何榨干硬件性能、如何认真对待 scaling。这些也能迁移。
- 直觉(Intuitions):哪些数据和建模决策会带来好性能。这些未必能跨尺度迁移,需要在真正的大规模实验中获得。
Percy 引用了 Noam Shazeer 那篇著名的 SwiGLU 激活函数论文——结论部分诚实地写道:「我们对这些架构的成功不作任何解释,将其归功于神圣的仁慈(divine benevolence)」。这生动地说明了某些设计决策纯粹来自实验经验。
重新理解「苦涩的教训」
关于广为流传的「Bitter Lesson」,课程纠正了一个常见误解。错误的解读是「规模就是一切,算法不重要」;正确的解读是「能够 scale 的算法才是重要的」。模型准确率 = 效率 × 资源,而效率在大规模下反而更加关键——如果一次训练要花上亿美元,哪怕 5% 的效率提升都意义重大。OpenAI 研究显示,2012 至 2019 年间图像模型算法效率提升了 44 倍。
「Bitter Lesson」(苦涩的教训)由 Rich Sutton 于 2019 年提出,核心观点是:在 AI 发展历史上,每当研究者试图将人类知识硬编码进系统(如手工特征、规则推理),长期来看都会被依赖大规模计算的通用方法所超越。Sutton 总结了两类能够随计算扩展的方法:搜索(Search)与学习(Learning)。这篇文章引发了广泛争议——批评者认为它助长了「堆算力即可」的虚无主义,而 CS336 的解读则提供了一个更具建设性的视角:算法效率乘以资源才等于最终性能,因此能够在大规模下保持优势的高效算法设计,其价值不是被削弱了,而是被放大了。OpenAI 44 倍效率提升的数据正好佐证了这一点——算法进步与规模扩展并非对立,而是相辅相成。
开源生态:课程得以实现的基石

课程特别强调了开源生态的重要性,因为没有这些开源模型,这门课根本无法存在。过去几年,Meta 以 LLaMA、LLaMA2、LLaMA3 系列引领开源浪潮,Mistral 加入战局,随后是 DeepSeek、Qwen 等一系列强大的中国模型。
如今开源权重模型的能力已经逼近闭源模型。更进一步,AI2、NVIDIA 以及 Percy 参与的 Marin 项目不仅提供权重,还提供论文、代码和数据,让我们能更透彻地理解模型的构建方式。正是这些仍在发表的论文,让我们得以窥见前沿 MoE 和 RL 系统的运作方式——尽管数据配比等关键细节仍然缺失。
五大核心模块与实战作业
课程围绕五个部分展开,每个部分对应一份作业。
基础:训练你的第一个语言模型
前两周的目标是从零训练一个语言模型,包括分词、架构、优化器与训练。作业一要求学生实现 BPE 分词器、Transformer、损失函数、优化器和完整训练流程,并进行详尽的资源核算,最后在 tiny stories、open web text 等数据集上训练模型,通过排行榜比拼 perplexity。

课程指出,虽然分词、建模、训练被拆分为独立模块,但本质是在三者间权衡:既要模型足够表达力以捕捉数据复杂性,又要训练足够稳定(让参数与梯度范数保持在「金发姑娘区」不爆炸不消失),还要追求效率(在硬件上跑得更快)。
系统优化:榨干硬件性能
作业二深入系统层面,涵盖 kernel、多 GPU 并行和推理。核心原则是最小化数据移动——因为内存和计算单元是分离的,数据搬运往往才是瓶颈。课程会讲解算子融合(fusion)、tiling、roofline 分析等技术,并让学生用 Triton 编写自定义 kernel。推理部分则涉及 prefill 与 decode 两阶段、投机解码(speculative decoding)、量化蒸馏等加速手段。课程还推荐了 Google 团队的《How to Scale Your Model》一书。
Scaling Laws:科学预测大模型性能

作业三聚焦 scaling laws。想象你有 1E25 FLOPs(数千万美元)的预算,该训练什么模型?你无法在这个规模上做常规超参搜索,因为只能训练一次。
关键的认知转变是:不要思考单个模型,而要思考「扩展配方」(scaling recipe)——一个从 FLOPs 预算到超参数配置的映射。通过小规模实验拟合 scaling law,就能预测大规模下的损失,从而在真正花钱之前预测性能(甚至用来融资)。
Percy 强调,scaling laws 不是自然定律,需要你精心设计配方将其「意志般地实现」。这需要合理的模型参数化以实现「超参数迁移」——小规模的最优超参能预测大规模的取值。因此,可预测性至少与最优性同等重要。经典的 Chinchilla scaling law 给出了一个经验法则:训练 token 数约为参数量的 20 倍。
Chinchilla scaling law 来自 DeepMind 2022 年的论文《Training Compute-Optimal Large Language Models》。该研究通过系统性实验发现,此前包括 GPT-3 在内的大多数模型都处于「训练不足」状态——在给定 FLOPs 预算下,模型参数量和训练数据量应当等比例扩展,最优比例约为每个参数对应 20 个训练 token。这一结论颠覆了当时流行的「尽量做大模型、用固定数据训练」的做法。Chinchilla(70B 参数,1.4T tokens)在多项基准上超越了参数量更大的 Gopher(280B),以更少的推理成本取得了更好的性能。然而,这一法则并非铁律:后续研究(如 LLaMA 系列)表明,当推理效率优先时,使用远超 Chinchilla 最优量的数据训练一个相对较小的模型,在实际部署中往往更具性价比,这也说明 scaling law 的结论高度依赖优化目标的定义。
数据工程:决定模型上限的关键

作业四处理数据。数据不会从天而降,必须主动策划。数据质量基本决定了模型的好坏,同时也定义了「你希望模型做什么」。课程会先讲评估(evaluation),区分用于内部开发的指标(如 perplexity,强调跨尺度平滑性)和面向外部的指标(强调生态有效性)。
数据处理包括转换、过滤、去重、混合和合成数据生成。作业四要求学生从原始网络爬取语料开始,完成清洗、去重等全部「脏活」——但这正是从零构建的完整体验。
模型对齐:从弱监督中改进
作业五关注对齐。此前都是全监督的下一 token 预测,现在通过弱监督进一步改进——因为批判往往比生成更容易。方法包括 PPO、GRPO 等 RL 算法以及更简单的 DPO。课程坦言 RL 算法不稳定且难调,大规模 RL 还面临推理服务器与训练服务器协同的系统挑战,是「一团美妙的混乱」。
DPO(Direct Preference Optimization,直接偏好优化)与 PPO(Proximal Policy Optimization)代表了两种主流的对齐训练范式。PPO 是一种在线强化学习算法,需要先训练一个独立的奖励模型来评分,再用该奖励信号通过策略梯度更新语言模型,整个流程需要同时运行四个模型(参考策略、当前策略、奖励模型、价值模型),工程复杂度高,超参敏感。DPO 则是一种离线方法,将偏好学习问题转化为直接的分类损失,绕过了显式奖励模型的训练,只需偏好对数据(chosen/rejected 对),实现更简洁,但由于是离线的,无法从模型自身的新生成样本中迭代改进。GRPO(Group Relative Policy Optimization)是 DeepSeek 提出的变体,通过组内相对排名替代绝对奖励,减少了对价值网络的依赖,在数学推理任务上取得了显著效果,也是 DeepSeek-R1 背后的核心训练方法之一。
分词器:绕不开的技术细节
课程第一个技术单元是分词。为什么需要它?从效率视角看,分词将长字节流压缩为更少的 token,还能实现自适应计算——常见片段用一个 token 表示,罕见片段拆成多个。
课程逐一分析了字符级、字节级、词级分词的缺陷,最终落到 BPE(字节对编码)。BPE 从字节序列出发,反复合并出现频率最高的相邻 token 对,从而让常见序列成为单一 token、罕见序列拆分为多个单元,完美避免了 unk token 的问题。作业一要求学生将朴素但极慢的 BPE 实现优化到可用速度,甚至可以用 Rust 或 C 重写。
你可能没注意到,Percy 每年都盼望不必再教分词,期待直接操作字节的端到端方案(如 HNet)。但只要前沿模型仍在使用分词器,这一内容就仍有价值。而任何替代方案,都必须满足「对序列做抽象」和「变长自适应计算」这两个属性。
BPE(Byte Pair Encoding,字节对编码)最初是 1994 年提出的一种数据压缩算法,2016 年被引入 NLP 用于神经机器翻译的子词分割,此后成为 GPT、LLaMA 等主流大模型的标准分词方案。其核心训练流程是:从字节或字符级别的初始词表出发,统计语料中所有相邻 token 对的频率,将出现次数最多的 pair 合并为一个新 token,反复迭代直到词表达到目标大小。推理时则按合并规则的优先级贪婪编码输入文本。这种方法的优势在于词表大小可控(通常 32K–128K),同时对未见词具有天然鲁棒性——任何文本都能被字节级兜底表示,不会产生 <unk> token。HNet 等端到端字节级模型试图绕过分词,直接在原始字节序列上建模,但需要解决字节序列过长导致的计算效率问题,目前仍在探索阶段。
结语:效率是贯穿始终的主线
纵观整门课程,无论是分词、架构、系统、数据还是 scaling,其底层逻辑都可以统一到一个词——效率。你拥有固定的数据、算力、内存和通信带宽,目标是在给定资源下构建评估表现最好的模型。这种「时刻思考方法效率」的心态,正是 CS336 希望根植于每个学生的核心思维方式。
相关推荐

FDE实战:一句话需求秒变可上线AI页面全流程拆解
深度拆解FDE(前沿部署工程师)实战全流程:从一句话模糊需求到公网可访问页面,涵盖需求澄清、脏数据处理、AI工具协作与部署上线,解析FDE岗位核心能力与适合人群。

DSH开源方案实测:手机电脑云端三端互通远程控制
实测开源DSH三端互通方案,实现手机、电脑与云端服务器的AI工作流无缝协作。支持跨设备文件同步、远程运维容灾、双实例互为备份,附架构解析与部署思路。

法官裁定X已放弃Tweet商标,竞争对手合法启用Tweet.app
联邦法官裁定X(原Twitter)很可能已放弃Tweet商标和小鸟logo,竞争对手以Tweet.app重新上线。本文解析品牌重塑的商标法风险及对社交平台竞争格局的深远影响。