GOCLAWLLM ENGINEERING
GoClaw 首页

0. 如何使用这份手册

导学30~45 分钟
学习目标
  1. 区分个人可完成的实验与大规模训练
  2. 理解九个实验组成的贯穿项目
  3. 建立证据优先的学习方式
前置知识
  • 会使用终端执行基础命令
  • 能够阅读简单 Python

本章产物创建个人实验目录,并复制第一份实验记录模板。

0.1 先建立正确预期

“亲手做一个大语言模型”有两种含义:

  1. 从零实现完整架构:普通个人计算机可以训练几十万到几百万参数的小型 GPT。模型规模有限,但 Tokenizer、因果注意力、Transformer Block、交叉熵、反向传播、AdamW 和自回归生成与大型模型遵循相同机制。
  2. 从零预训练 7B、70B 或更大模型:个人设备通常不具备所需资源。限制不仅来自模型权重,还包括激活、梯度、优化器状态、训练语料和持续计算时间。

建议按照以下规模逐级验证:

小模型上看清每一个张量
    ↓
真实 0.6B 模型上完成 LoRA/SFT
    ↓
8B 量化模型上研究推理与服务
    ↓
需要 CUDA/多卡时再迁移到云端

0.2 三条学习线同时推进

学习线核心问题本手册对应实践
原理线为什么这样设计?公式表达什么?手写 attention、TinyGPT、LoRA
工程线数据怎样进入模型?怎样训练和部署?PyTorch、Transformers、TRL、MLX、llama.cpp
实验线怎样证明模型真的变好或变快?loss、perplexity、任务评测、TTFT、token/s

0.3 学完的验收标准

完成学习后,应能独立解释:

0.4 学习进度

0.5 资料与准确性规则

原理性内容按照以下优先级取材:

  1. 原始论文或正式发表版本。
  2. 项目维护方发布的官方文档、模型卡和技术报告。
  3. 大学课程、开放教材和标准组织文档。
  4. 经过独立实验验证的工程经验。

博客、论坛和二次解读可以用于发现问题,但不单独作为公式、架构或性能结论的依据。每个原理章节末尾列出“本章依据”,并遵守以下表述规则:

0.6 贯穿项目:从语料到本地 API

不要把 22 章当成 22 篇相互独立的文章。动手主线最终要交付一个可以复查的实验目录:

llm-learning-lab/
├── data/                 # 原始语料、切分后的训练/验证/测试集
├── code/                 # 实验脚本,不在 Notebook 中隐藏关键逻辑
├── notebooks/            # 逐步观察和修改参数
├── artifacts/
│   ├── tokenizer/        # tokenizer.json、词表和配置
│   ├── checkpoints/      # TinyGPT 与 Adapter
│   ├── evaluations/      # 逐样本结果、汇总指标和错误分类
│   ├── benchmarks/       # TTFT、TPOT、token/s 与资源记录
│   └── reports/          # 每次实验的结论与适用边界
└── requirements-lock.txt

整条路线分为九个可验收实验:

实验要回答的问题最小产物完成条件
00 环境自检代码究竟运行在哪个设备?版本与设备记录张量、梯度、一步更新断言通过
01 张量与梯度参数如何被 loss 更新?梯度数值与形状表手算值与自动微分一致
02 Tokenizer词表如何影响序列成本?三组词表对照能往返解码并解释 token 数差异
03 Attention缩放和遮罩是否正确?注意力矩阵未来位置概率为零,与 PyTorch 对齐
04 TinyGPT训练闭环是否成立?checkpoint、loss 日志、样例生成loss 下降且 checkpoint 可重载
05 KV Cache加速是否保持语义?logits 差值与延迟曲线缓存前后 logits 在容差内一致
06 LoRA/SFTAdapter 是否改变目标行为?Adapter、前后对照固定题集上报告逐题变化而非只报 loss
07 评估与 RAG错误来自检索还是生成?Hit@k、MRR、任务指标能定位失败层并给出证据
08 本地服务模型如何成为可观察的 API?/healthz、生成接口、基准记录可请求、可测量、错误输入可诊断

每个实验都从实验记录模板复制一份报告。所谓“完成”,不是代码没有报错,而是同时留下:输入版本、完整命令、原始结果、对照组、失败记录和结论边界。

0.7 第一次学习会话怎样进行

第一次不要安装所有微调和服务工具。只完成:

  1. 阅读 0~1 章,画出自己的 LLM 生命周期图。
  2. 下载实验包,建立虚拟环境。
  3. 运行环境自检 Notebook 和自动微分脚本。
  4. 把成功输出与一个故意制造的错误写进实验记录。
  5. 关闭文档,用 5 分钟向别人解释 token、模型、训练和服务分别是什么。

如果环境步骤失败,停在第 3 章排查;如果只能复述名词但无法举输入输出例子,回到对应原理章;如果代码能运行但无法解释断言,不能勾选完成。

0.8 导学验收

能基于自己的实验目录回答,而不是引用原文句子,才进入下一章。