@JustinAngel: https://x.com/JustinAngel/status/2069482255312195980

X AI KOLs Timeline 工具

摘要

发布免费的研讨会录像和材料(23个视频、250张幻灯片、50个练习),帮助你从基础知识到Transformer架构构建自己的大语言模型,无需数学或机器学习基础。

https://t.co/x8lD0Wiogs
查看原文
查看缓存全文

缓存时间: 2026/06/24 06:20

构建你自己的大语言模型:工作坊录像

23个视频 · 250页幻灯片 · 50个动手练习 · 免费 · 无需数学或机器学习基础

上个月我举办了一场线下工作坊,关于如何构建你自己的大语言模型,无需任何数学或机器学习基础。内容涵盖机器学习基础、深度神经网络、Transformer架构以及预训练/后训练。我很高兴为你发布录像和培训材料!

开始观看:构建你自己的大语言模型

[阅读幻灯片] [做练习]

go.JustinAngel.ai/video-1

go.JustinAngel.ai/video-1

工作坊的目标是深入理解现代LLM开发的各个部分。每个部分都有幻灯片讲解概念,接着是手工Excel练习培养对数学的直觉,然后还有代码教程。一位参与者Emily HK提到:“这个工作坊最好的地方就是所有内容仍然可以在线获取,方便我随时复习。”现在你也可以访问这些材料了!

  • 23个工作坊视频 @ https://go.JustinAngel.ai/playlist
  • 250页幻灯片 @ https://go.JustinAngel.ai/deck
  • 50个Excel和代码练习 @ https://go.JustinAngel.ai/drive

为什么我要录制线下工作坊

对线下和在线工作坊的反馈

对线下和在线工作坊的反馈

我们在旧金山举办的线下工作坊有超过200人报名!不幸的是,我们的物理空间只能容纳大约30人。出于对不得不拒绝大约200人的愧疚,我花了一周时间录制、编辑并将所有材料上传到YouTube。如果你碰巧知道旧金山有能容纳超过30人的场地用于下次工作坊,请告诉我?

视频链接

1. 采样 大语言模型:温度、TopP、TopK

https://go.JustinAngel.ai/video-1

https://go.JustinAngel.ai/video-1

我们的第一部分专注于对LLM的token预测进行采样。我们必须对token进行采样,以避免等到宇宙热寂才能写出一个简短的理想段落。随后使用温度、TopP和TopK等采样技术作为捷径。

2. 逆向工程 大语言模型

https://go.JustinAngel.ai/video-2

https://go.JustinAngel.ai/video-2

在工作坊的这个阶段,我们还不真正知道如何构建一个LLM。所以作为有进取心的工程师,我们将逆向工程一个经典的LLM(GPT-2 small),列出它的组成部分,并创建一个学习每个部分的路标。

3. 感知机: wx+b

https://go.JustinAngel.ai/video-3

https://go.JustinAngel.ai/video-3

ChatGPT不过是一千亿多个感知机。或者反过来看:感知机是神经网络的基本工作单元。数学公式很简单:权重 * 输入 + 偏置。在本节中,我们尽情享受这个简单的公式,在代码、Excel演示和物理类比演示中看到它。

4. 激活函数: ReLU, GELU, SwiGLU

https://go.JustinAngel.ai/video-4

https://go.JustinAngel.ai/video-4

仅靠感知机很难检测边界(比如句子的结尾)、理解非线性值(比如-5和5具有相同的大小),或构建某些逻辑结构。激活函数通过向神经网络引入非线性来弥补这一差距。我们从这一节中得到的核心收获是ReLU^2激活函数,它将是我们LLM的第一个组件。

5. GPU编程: PyTorch, torch.compile(), fused kernels, CUDA, Triton

https://go.JustinAngel.ai/video-5

https://go.JustinAngel.ai/video-5

CPU有8个物理核心可以并行运行。所以如果我们只计算8个神经元,那很好。但当我们有3200万个感知机需要并行计算时,它们就无法与GPU拥有的15000个并行计算核心相媲美。在本节中,我们从CPU、PyTorch模块、torch.compile()融合内核、CUDA和Triton开始学习GPU编程。

6. MLPs/FFNs:多输入、多层感知机、前馈网络

https://go.JustinAngel.ai/video-6

https://go.JustinAngel.ai/video-6

单个感知机只能学习一条非常单一的规则。要学习语言,我们需要复杂性。这意味着我们需要将多个感知机组成层。然后最终将这些层序列化为多层感知机(MLP)。这一节为我们最终的LLM提供了另一个组件:一个先增长后收缩的MLP。

7. 损失函数:残差误差、RMSE、交叉熵、损失景观

https://go.JustinAngel.ai/video-7

https://go.JustinAngel.ai/video-7

如果我们的目标是教LLM学习英语,我们需要知道随机初始化的LLM乱讲胡话时,我们离那个目标有多远。损失函数使我们能够量化与目标的距离。在本节中,我们学习穿越损失景观以最小化损失(即提高LLM的英语技能)的理论。我们还学习了交叉熵损失函数如何在没有确定答案的问题中工作,比如下一个词预测。

8. 反向传播:训练循环、优化器、学习率、批量大小

https://go.JustinAngel.ai/video-8

https://go.JustinAngel.ai/video-8

在我们能够训练模型学习英语之前,我们将学习如何训练它预测A+B%5。起初,这个玩具示例似乎微不足道。深度神经网络内部为了除以五而创建的相同流形,正是LLM学习任何顺序概念(如天、月、颜色和单词计数)的方式。

9. 保存与加载 模型

https://go.JustinAngel.ai/video-9

https://go.JustinAngel.ai/video-9

既然我们已经成功训练了第一个DNN,是时候将其保存到磁盘、上传到Hugging Face并远程加载了。

10. 初始化:Kaiming, Glorot

https://go.JustinAngel.ai/video-10

https://go.JustinAngel.ai/video-10

GPT2-small有72个连续的矩阵乘法,但激活函数往往会增加零和小值。当我们把一堆零相乘时会发生什么?我们会得到更多的零。训练崩溃。GPU时间浪费。人们被解雇。经济衰退开始。为了避免这种情况,我们学习到为随机初始化的值选择特定的统计分布可以防止梯度崩溃。耶!

11. 残差连接:加法、缩放、门控、拼接

https://go.JustinAngel.ai/video-11

https://go.JustinAngel.ai/video-11

但为了避免在72个连续的矩阵乘法中训练崩溃,我们确实需要另一个锦囊妙计:残差连接。将前一层的输出与这一层的输出结合起来,让每一层都能独立工作一会儿。这就像给DNN多个草稿纸。公式很简单:f(x)+x,我们将在Excel和代码中看到它的效果。

12. 归一化:前归一化 vs 后归一化、RMSNorm、BatchNorm、LayerNorm

https://go.JustinAngel.ai/video-12

https://go.JustinAngel.ai/video-12

残差连接引入了一个新问题,因为f(x)+x可能导致梯度爆炸。直观上看,f(x)+x>x每次都增加X,这就是我们得到梯度爆炸的原因。所以我们引入归一化,确保值聚集在一个中心点周围。

13. 正则化:Dropout、梯度裁剪、权重衰减

https://go.JustinAngel.ai/video-13

https://go.JustinAngel.ai/video-13

到目前为止,我们的DNN只处理具有明确答案的确定性数据(例如,A*B%C有明确答案),但语言没有确定答案。我们可以用“巴黎”、“充满奶酪”或“有地铁罢工”来完整回答句子“法国首都是”,这些都是事实正确的。一旦我们引入没有确定解的数据,模型就会在训练数据上过拟合。也就是说,它在训练数据上的表现会优于在未见过的测试数据上的泛化能力。这是个问题。Dropout、梯度裁剪和权重衰减等正则化技术可用于确保我们的DNN不会在训练数据上过拟合。

14. SoftMax

https://go.JustinAngel.ai/video-14

https://go.JustinAngel.ai/video-14

最终,LLM必须返回下一个词的百分比概率,比如“巴黎”的可能性为100%。但DNN/LLM通过使用实数进行有趣的矩阵乘法来运作,比如1.234567。SoftMax将这些激活值转换为百分比。

15. 分词器:按字符、按词、BPE、SentencePiece

https://go.JustinAngel.ai/video-15

https://go.JustinAngel.ai/video-15

LLM通过数字进行有趣的矩阵乘法运算,但语言是通过字符串运作的。分词器是我们将方钉塞进圆孔的方法,通过削去边缘。我们将单词、子词组件、标点符号和表情符号转换为整数token。但随后我们必须决定如何最好地进行分词?每个字符应该是一个token吗?每个词应该是一个token吗?还是有个折中方案?最终,我们选择了BPE这个折中的分词器。

16. 嵌入:绝对位置 vs 学习位置、正弦 vs RoPE

https://go.JustinAngel.ai/video-16

https://go.JustinAngel.ai/video-16

一旦我们将“Hello”转换为995,LLM对995知道什么?Token嵌入表示每个token在高维空间中的可学习含义。我们看到了一个例子:在高维嵌入空间中,女人和女王与男人和国王存在于相同的距离和方向上。这些嵌入学习每个单词/子词/token的含义。但这些嵌入仍然缺乏位置信息,这使得“狗咬人”和“人咬狗”等同。所以我们将学习位置编码以及如何向每个token嵌入添加位置信息。

17. 注意力:MHA, GQA, MQA, MLA

https://go.JustinAngel.ai/video-17

https://go.JustinAngel.ai/video-17

注意力是LLM“阅读”句子的方式。首先它们阅读句子片段,理解单词位置,然后识别主语和谓语,阅读疑问词并理解变换。逐个教LLM这些概念是令人望而却步的。但注意力仅通过数学和反向传播的力量就学会了这些。

18. Transformer

https://go.JustinAngel.ai/video-18

https://go.JustinAngel.ai/video-18

将所有内容整合在一起,我们构建了一个Transformer架构,其中包括MLP、注意力头、嵌入、激活函数、正则化、归一化、残差连接以及我们到目前为止学到的所有其他内容。这一节是我最喜欢的,因为它真正展示了Transformer如何端到端地工作。

19. 预训练:数据来源、数据集、HTML清理、质量过滤、分片

https://go.JustinAngel.ai/video-19

https://go.JustinAngel.ai/video-19

从架构转向实际训练,我们首先需要教LLM学习英语。我们通过从网络、书籍、社交媒体、代码和其他数据源获取文本信息来做到这一点。但从互联网提取文本并不简单。我们是倾向于更多低质量的文本,还是更少高质量的文本?在本节中,我们构建预训练脚本并让它运行数小时,以训练我们的模型掌握英语。

20. 评估:排行榜、基准、验证者 vs LLM作为裁判

https://go.JustinAngel.ai/video-20

https://go.JustinAngel.ai/video-20

我们如何知道我们的模型好不好?我们应该使用排行榜吗?我们应该让另一个LLM充当裁判吗?擅长什么?在本节中,我们回顾LLM评估的全部选项,以及LLM可以在哪些方面被评估。

21. 指令微调: Alpaca及其他格式、自我指令、能力

https://go.JustinAngel.ai/video-21

https://go.JustinAngel.ai/video-21

在我们的LLM学会说英语后,它在遵循指令方面仍然很差。我们可以让它回答“法国首都是什么?”,它会回答“法国首都是法国。”因为它还不明白它应该是一个有用的AI助手。通过指令微调,我们教LLM写诗、生成列表、解释概念等等。

22. 强化学习: 策略优化、SimPO

https://go.JustinAngel.ai/video-22

https://go.JustinAngel.ai/video-22

最后,我们希望我们的LLM擅长各种事情。我们希望它们知道所有知识、正确解决所有数学问题并写出完美的代码。强化学习是我们评估整个响应并反向传播正面和负面信号的工具。在本节中,我们从零开始实现最简单的RL离线偏好优化算法:SimPO。首先在Excel中,然后在代码中。

  1. 我们没有涵盖的内容:缩放

我们不能涵盖构建前沿LLM的全部内容,但我们可以提供一些我们没有覆盖的主题的起点:将训练时间扩展到多个GPU、优化推理时的GPU使用率,以及使LLM安全使用。

相似文章

逐步 LLM 工程项目 (2026 版)

X AI KOLs

一个基于项目的路线图,通过构建从分词器到服务栈的关键组件来学习 LLM 工程,包括硬件基础和后训练技术。