@shao__meng:斯坦福大学 CS 312「Deep Learning Alchemy」秋季新课,由 @tatsu_hashimoto 和 @kothasuhas 主讲……
摘要
斯坦福大学新开设 CS 312「Deep Learning Alchemy」课程,由 Tatsunori Hashimoto 和 Suhas Kotha 主讲,聚焦深度学习中以经验为主的知识——超参数缩放、优化器不变性(μP、Muon)、损失景观与训练稳定性等,全部作业代码、测验和讲义公开,可视为 CS 336 的续作。
查看缓存全文
缓存时间: 2026/10/16 00:18
Stanford University CS 312《深度学习炼金术》秋季新课
由教授 @tatsu_hashimoto 和 @kothasuhas 主讲,主要针对一个普遍问题:深度学习的大部分核心知识是经验性的,理论解释往往不够充分,而阅读论文无法替代动手实践。
课程以两条信条为支点:炼金术必须亲手实践;预测即理解——能够在运行实验之前准确预测结果,才是真正的精通。
课程网站: https://deep-learning-alchemy.github.io
主要课程安排
共七个单元:超参数调优与缩放定律 → 优化器与超参数不变性(NQM、μP、Muon、权重衰减)→ 损失景观 → 训练稳定性 → 架构容量 → 数据高效泛化(切换到 DNA 模态)→ 未公开单元。阅读清单作为经验性深度学习的地图,多位作者(μP、Muon、权重衰减系列的作者)就在教学团队中。
作业代码、测验和讲义全部公开,课程视频由 @StanfordOnline 发布,自学者可以使用 Modal 租用 GPU 进行完整复现。可以将其视为 CS 336(从零构建语言模型)的续作:那门课教你如何构建模型,这门课教你如何理解模型行为。
Stanford CS 312 | 深度学习炼金术
来源:https://deep-learning-alchemy.github.io/
示例作业题:从我们预训练的基线深度 8 transformer 出发,使用 614M tokens 进行预训练。该 transformer(代码实现见下)包含多个组件,如 prenorm、attention、MLP、残差连接和位置嵌入。在此问题中,我们希望了解每个组件在多大程度上改善了 loss。请探索以下方向。
- 对当前模型中每个组件的作用进行留一消融实验(leave-one-out ablation)。
- …
- …
- 理解残差连接的作用。你能提出不同的方案来提升残差连接带来的 loss 收益吗?
相关代码片段:
class Block(nn.Module):
def __init__(self, width, ...):
super().__init__()
self.attn_norm = RMSNorm(width)
self.attn = Attention(width, ...)
self.mlp_norm = RMSNorm(width)
self.mlp = MLP(width, ...)
def update(self, x):
attn = self.attn(self.attn_norm(x))
mlp = self.mlp(self.mlp_norm(x + attn))
return attn + mlp
def forward(self, x):
return x + self.update(x)
class Transformer(nn.Module):
def __init__(self, vocab_size, depth=8, ...):
super().__init__()
self.token_embed = nn.Embedding(vocab_size, ...)
self.position_embed = nn.Embedding(...)
self.blocks = nn.ModuleList(
[Block(...) for _ in range(depth)]
)
self.final_norm = RMSNorm(...)
self.lm_head = nn.Linear(..., vocab_size)
def forward(self, tokens):
positions = torch.arange(
tokens.size(1), device=tokens.device
)
x = self.token_embed(tokens)
x = x + self.position_embed(positions)
for block in self.blocks:
x = block(x)
return self.lm_head(self.final_norm(x))
示例测验题(难度:简单):我们使用相同的训练配方和超参数分别训练以下深度 8 的 transformer 变体。请将各变体按最终验证 loss 从低到高排序。在字母之间使用 <、> 或 =;当 loss 差异在 0.01 以内时用 =。
- 基线(Baseline)
- 无 prenorm(No prenorm)
- 无残差(No residual)
- 无 MLP(No MLP)
- 无 attention(No attention)
- 无位置嵌入(No positional embeddings)
无 prenorm diff:
@@ -10,4 +10,4 @@ class Block.update
def update(self, x):
- attn = self.attn(self.attn_norm(x))
+ attn = self.attn(x)
- mlp = self.mlp(self.mlp_norm(x + attn))
+ mlp = self.mlp(x + attn)
return attn + mlp
无 residual diff:
@@ -16,2 +16,2 @@ class Block.forward
def forward(self, x):
- return x + self.update(x)
+ return self.update(x)
无 MLP diff:
@@ -10,4 +10,3 @@ class Block.update
def update(self, x):
attn = self.attn(self.attn_norm(x))
- mlp = self.mlp(self.mlp_norm(x + attn))
- return attn + mlp
+ return attn
无 attention diff:
@@ -10,4 +10,3 @@ class Block.update
def update(self, x):
- attn = self.attn(self.attn_norm(x))
- mlp = self.mlp(self.mlp_norm(x + attn))
- return attn + mlp
+ mlp = self.mlp(self.mlp_norm(x))
+ return mlp
无 positional embeddings diff:
@@ -22,2 +22,1 @@ Transformer.__init__
self.token_embed = nn.Embedding(vocab_size, ...)
- self.position_embed = nn.Embedding(...)
@@ -30,8 +29,4 @@ Transformer.forward
def forward(self, tokens):
- positions = torch.arange(
- tokens.size(1), device=tokens.device
- )
x = self.token_embed(tokens)
- x = x + self.position_embed(positions)
for block in self.blocks:
x = block(x)
示例测验题(难度:困难):我们训练默认的 8 层 transformer 以及一个变体——其中残差连接不是来自前一层,而是取前一层的 0.5 贡献和前两层的 0.5 贡献之和(第一层除外)。对于每种方法,我们取六个学习率 {10⁻⁴, 3 × 10⁻⁴, 10⁻³, 3 × 10⁻³, 10⁻², 3 × 10⁻²} 中的最佳 loss。请预测两种方法之间的 loss 差异(L_mixed residual − L_default)。
Core diff:
@@ -34,3 +34,9 @@ Transformer.forward
x_two_back = None
for i, block in enumerate(self.blocks):
- x = block(x)
+ update = block.update(x)
+ residual = (
+ x if i == 0
+ else 0.5 * x + 0.5 * x_two_back
+ )
+ x_two_back, x = x, residual + update
注意:这两道题都很难,如果在不运行作业中的实验的情况下没有直觉,不要灰心!
Tatsunori Hashimoto (@tatsu_hashimoto): 深度学习常常被当作一套经过整理的事实和数学公式来教授。但 AI 前沿的工作是混乱的、经验性的。
我们的新课程《深度学习炼金术》,旨在以《从零构建语言模型》(Language Modeling From Scratch)的动手实践精神,教授深度学习的艺术与科学。
相似文章
@StanfordAILab: 绝佳机会宣传 @tatsu_hashimoto 和 @kothasuhas 的 CS 312: Deep Learning Alchemy。所有录像和课程材料……
斯坦福人工智能实验室宣布公开 CS 312: Deep Learning Alchemy 课程的录像和材料,包括关于深度学习概念(如Transformer组件)的作业和测验。
@RuiWu560670:CS336 的老粉丝了。我最喜欢的部分是从前沿实验室的技术报告中提炼实证发现。那些经验教训是用真实的算力换来的,往往比在狭隘假设下推导出来的理论更有用。CS312 在此基础上更进一步:它教你直接观察这些实证现象,再反向推导背后的科学。Stanford 在这方面真的走在前面。我会跟进 CS312 的。
一位 CS336 的老粉丝称赞了课程对实证研究的重视,并对 Stanford 新开设的 CS312《Deep Learning Alchemy》课程表示期待。该课程由 Tatsunori Hashimoto 推出,旨在教授前沿深度学习研究中那些混乱而依赖经验的一面。
@MichaelRan15: Stanford CS312 Deep Learning Alchemy 值得关注。它不仅仅是又一个2022年的深度学习课程。讲师…
斯坦福大学宣布了一门新的深度学习课程CS312,其独特的评分系统强调测验和实践实验,而非作业。
@srush_nlp:我一直对 DL Alchemy 课程(https://deep-learning-alchemy.github.io)非常着迷。决定将……
斯坦福大学的 CS 312“深度学习炼金术”课程将构建理论的重担交给学生(以及他们的 Claude 助手),让他们在一个用 6.14 亿个 token 训练的 8 层 Transformer 上开展消融实验,以实证方式探究 Transformer 的各个组件——这引发了一个反思:也许死记硬背的机器学习知识从来就没那么重要。
@0xcryptowizard: Stanford 最新的课程,值得一看。 关于自进化 AI,涉及 scaling law,思维链,rlhf,推理模型等。 youtube 链接: https://youtu.be/6YnLB0XbTnI?si=Dg-aSXbDxymA4U…
推荐斯坦福大学CS329A课程,关于自我改进的AI智能体,涵盖scaling law、思维链、RLHF、推理模型等内容。