返回我的书列表
📚 TheAIEra Book 7 章

从零构建大语言模型(LLMs from Scratch 中文版)

本书翻译整理自 Sebastian Raschka 的《Build a Large Language Model (From Scratch)》官方代码仓库(LLMs-from-scratch),从零开始用 PyTorch 手写一个 GPT 类大语言模型:理解 LLM、处理文本、注意力机制、实现 GPT、预训练、微调分类、指令微调。

LLMGPT深度学习PyTorch书籍

📖 本书大纲

从零构建大语言模型:手写一个 GPT

本书内容翻译整理自开源项目 LLMs-from-scratch(作者 Sebastian Raschka,书籍《Build a Large Language Model (From Scratch)》的官方代码仓库,Manning 出版,ISBN 9781633437166)。

原创来源声明:本书内容基于 rasbt/LLMs-from-scratch 仓库逐章翻译整理而成,正文对应各章节 Jupyter Notebook 中的说明文字与代码,附录对应仓库的 appendix-A 至 appendix-E。代码版权归原作者所有。原书:Build a Large Language Model (From Scratch)

这本书是给谁看的

这本书写给想真正搞懂大语言模型(LLM)怎么工作的开发者。不是泛泛了解,而是从零开始、一步步用 PyTorch 手写一个 GPT 类模型,把它跑起来。

  • 最重要的前置知识是扎实的 Python 功底。有了这个,你就有条件探索 LLM 的世界、理解书里的概念和代码。
  • 如果你有一些深度神经网络的经验,某些概念会更容易理解,因为 LLM 就建立在这些架构之上。
  • 本书用 PyTorch 从零实现代码,不使用任何外部 LLM 库。不要求你先精通 PyTorch,但熟悉 PyTorch 基础会有帮助。如果你是 PyTorch 新手,附录 A 提供了简明入门。

这本书想回答的问题

ChatGPT 背后的大语言模型到底是怎么工作的?

这个仓库/这本书的方法,是从零开始、一步一步写一个"小而可用"的教育模型,它镜像了 ChatGPT 背后大规模基础模型的训练方法。代码量不大,但每个环节你都亲手写过:数据怎么变成 token、注意力怎么算、GPT 架构怎么搭、怎么预训练、怎么微调。

章节导航

第 1 章 理解大语言模型

本章没有代码。建立对 LLM 的整体认知:

  • 什么是大语言模型(LLM),为什么现在这么火
  • LLM 的架构基础:Transformer
  • 从"预训练"到"微调"的 LLM 开发生命周期
  • LLM 是怎么工作的:token、上下文、自监督学习
  • 本书的阅读建议与学习路径

第 2 章 处理文本数据

从原始文本到模型能吃的数字:

  • Tokenizer:把文本切成 token
  • 从 token 到 token ID:词表构建
  • Byte Pair Encoding(BPE)分词
  • 滑动窗口数据加载器:input-target 对
  • Embedding:把 token ID 变成向量
  • 位置编码:给模型注入位置信息

第 3 章 编码注意力机制

注意力是 Transformer 的核心。这一章手写全部注意力变体:

  • 从"自注意力"到"带因果掩码的自注意力"
  • 注意力权重的缩放(为什么除以根号 d)
  • 用 Dropout 做正则化
  • 多头注意力(Multi-Head Attention)
  • 实现完整的多头注意力类
  • 带权重绑定的因果注意力

第 4 章 从零实现一个 GPT 模型

把前面的积木搭成一个真正的 GPT:

  • GPT 架构总览:层、归一化、GELU、残差连接
  • Layer Normalization
  • GELU 激活函数
  • Feed Forward 网络
  • 短序列上的 GPT 模型配置(GPT-2 小模型)
  • 生成文本:从概率采样到温度缩放
  • 保存和加载模型权重

第 5 章 在无标注数据上预训练

让模型真正"学会说话":

  • 评估生成式文本模型的损失
  • 训练循环:计算损失、反向传播、更新权重
  • 解码策略:温度、top-k
  • 学习率调度:线性预热 + 余弦退火
  • 过拟合与正则化
  • 保存和加载训练状态
  • 用 OpenAI 的 GPT-2 权重做对比
  • 预训练一个小 GPT 模型

第 6 章 微调:文本分类

把一个生成模型变成分类器:

  • 不同微调方式概览
  • 准备数据集(IMDb 影评)
  • 创建数据加载器
  • 用预训练权重初始化模型
  • 给 GPT 加分类头
  • 微调分类模型
  • 准确率评估
  • 推理与测试

第 7 章 微调:指令微调

让模型学会"听指令":

  • 指令微调与预训练的区别
  • 准备指令微调数据集
  • 组织数据为输入-输出对
  • 用 masked loss 忽略 padding
  • 微调模型遵循指令
  • 与 Ollama 上的 Llama 3 对比评估
  • 通过加载训练好的权重进行推理

附录(延伸阅读)

原仓库还包含以下附录内容,本书未展开翻译,可在原仓库查看:

  • 附录 A PyTorch 入门:Tensor、autograd、nn.Module、训练简单网络、DDP 多 GPU 脚本
  • 附录 B 参考文献与延伸阅读:按章节整理的推荐阅读清单
  • 附录 C 练习题解答:各章练习题的参考解答
  • 附录 D 给训练循环加料:梯度裁剪、EMA、学习率调度器比较等训练增强
  • 附录 E 参数高效微调:LoRA:低秩适配微调

每章的写法

每一章都保持统一骨架,方便按需查阅:

  1. 本章要做什么:一句话说清这章完成什么
  2. 英文原文 → 中文翻译:逐段翻译 notebook 正文,尽量不改内容
  3. 代码:保留原始 Python 代码(附在译文之后)
  4. 关键概念:每章末尾提炼核心名词
  5. 练习题:对应原仓库的 exercise-solutions

翻译说明

  • 基本原文翻译:正文严格对照仓库 notebook 的 markdown 单元格逐段翻译,尽量不改动内容与结构
  • 代码保留原样:Python 代码不做改写,保留原始实现
  • 出处注明:每章标注对应的仓库路径与原始 notebook 文件名
  • 术语统一:token、embedding、attention、fine-tuning 等术语全书统一译法,首现处给出英文原文