从零用 Rust 实现大语言模型 —— 学习计划

2026-09-01 干徒
RustLLM学习计划

从零用 Rust 实现大语言模型 —— 学习计划

目标:不使用任何深度学习框架(如 tch-rs / candle / burn),仅用 Rust 标准库, 从零手写张量、自动微分、神经网络层、Transformer 架构,最终训练出一个能生成文本的小型 GPT 模型。

核心理念:每一步都亲自动手实现,每一步都配套教程文档。 每节课的文档都在 docs/ 目录下,代码在 src/ 目录下,一一对应。

为什么从零写?

  • 学习张量/自动微分/反向传播,才能真正理解 PyTorch 等框架背后的原理。
  • 理解每一个数学公式如何变成一行行代码。
  • 训练过程透明可控,随时可以打印中间结果检查正确性。

依赖策略

  • 原则上零依赖:所有张量、数学运算、自动微分、网络层全部自己写。
  • 允许极少量工具库,使用时会明确说明并解释其作用(例如 rand 用于生成随机数)。
  • 每新增一个依赖都必须有理由,不能"图省事"。

总体路线图(6 个阶段,21 课)

阶段一:地基 —— 张量与自动微分(第 1-4 课)

主题 知识点
01 张量 Tensor 数据布局、形状、reshape、逐元素运算、矩阵乘法
02 自动微分 Autograd 计算图、反向传播、梯度链式法则
03 张量运算扩展 广播、sum/mean、softmax、广播减法
04 模块化重构 把张量库整理成独立模块,为上层打基础

阶段二:神经网络基础(第 5-7 课)

主题 知识点
05 线性层与激活函数 Linear、ReLU、Sigmoid、Tanh、参数管理
06 损失函数与优化器 CrossEntropy、MSE、SGD、梯度下降原理
07 第一个 MLP 用自己写的库训练 XOR / 分类任务,验证反向传播正确性

阶段三:分词器(第 8 课)

主题 知识点
08 BPE 分词器 文本→token、字节级编码、词表构建

阶段四:Transformer 架构(第 9-12 课)

主题 知识点
09 注意力机制 Scaled Dot-Product Attention、softmax、mask
10 多头注意力 Multi-Head Attention、权重拼接
11 位置编码 正弦位置编码、LayerNorm、残差连接
12 完整 GPT 模型 Transformer Block、Embedding、输出头

阶段五:训练与推理(第 13-16 课)

主题 知识点
13 训练循环 前向/反向/更新、损失下降观察、梯度裁剪
14 数据加载 数据集处理、batch、序列化样本构造
15 推理与采样 temperature、top-k、top-p 采样
16 训练小 GPT 在小型数据集上训练并生成有意义的文本

阶段六:进阶优化(第 17-21 课)

主题 知识点
17 AdamW 优化器 动量、自适应学习率、权重衰减
18 KV Cache 推理加速,逐步生成时避免重复计算
19 RoPE 旋转位置编码 现代 LLM 的位置编码方式
20 学习率调度与收尾 warmup、cosine decay、总结与展望
21 GPU 加速(可选) wgpu 计算着色器加速热点算子,失败自动回退 CPU

每个阶段会学到的核心数学/ML 概念

  • 线性代数:矩阵乘法、转置、点积(第 1、5 课)
  • 微积分:偏导数、链式法则、梯度(第 2 课)
  • 概率:softmax、交叉熵、采样(第 6、15 课)
  • 优化:梯度下降、学习率、动量(第 6、7、17 课)
  • 深度学习:反向传播、正则化、归一化(第 2、5、11 课)
  • NLP:分词、词嵌入、注意力、Transformer(第 8-12 课)

推荐阅读顺序

  1. 先读每课的教程文档(docs/XX-xxx.md),理解原理。
  2. 再看对应源码(src/),对照实现。
  3. 自己动手改代码、跑实验,验证理解。
  4. 完成课后"动手练习"。

验收标准

  • 每一课结束,cargo run 能正常运行并输出预期结果。
  • 每一课都有配套文档,说明原理 + 代码讲解 + 练习。
  • 第 7 课结束时,我们的 MLP 能在 XOR 任务上收敛(验证自动微分正确)。
  • 第 16 课结束时,模型能生成通顺的短文本。
Rust 大语言模型 学习指南共 22 章
1从零用 Rust 实现大语言模型 —— 学习计划本篇2第 1 课:张量 Tensor —— 一切的基础3第 2 课:自动微分 Autograd —— 让模型学会「自我修正」4第 3 课:张量运算扩展 —— 广播、归约、softmax、批量矩阵乘法5第 4 课:模块化重构 —— 项目结构分层与 Rc<RefCell> 架构6第 5 课:线性层与激活函数 —— 神经网络的「积木」7第 6 课:损失函数与优化器 —— 让模型知道「错在哪、怎么改」8第 7 课:第一个 MLP —— 教会神经网络算 XOR9第 8 课:BPE 分词器 —— 让模型「读懂」文字10第 9 课:注意力机制 —— 让 token 互相「看」11第 10 课:多头注意力 —— 让模型「多角度」看世界12第 11 课:位置编码与归一化 —— 让序列带上「位置感」13第 12 课:完整 GPT 模型 —— 把积木拼成能预测下一个词的模型14第 13 课:训练循环 —— 让模型真正开始学习15第 14 课:数据加载 —— 文本如何变成训练样本16第 15 课:推理与采样 —— 让模型「创造性」地生成17第 16 课:训练小 GPT —— 看 loss 从 1.46 一路降到 0.1618第 17 课:AdamW 优化器 —— 给梯度下降装上「惯性」和「自适应步长」19第 18 课:KV Cache —— 让逐 token 生成不再重复计算20第 19 课:RoPE 旋转位置编码 —— 把「相对位置」揉进注意力21第 20 课:学习率调度与收尾 —— warmup、cosine decay 与全项目总结22第 21 课:GPU 加速训练与推理