[博客翻译]TL;Andrej Karpathy的《深入学习像ChatGPT这样的LLM》博士


原文地址:https://anfalmushtaq.com/articles/deep-dive-into-llms-like-chatgpt-tldr


ChatGPT等LLM的深入解析(TL;DR)

这篇深度解析适合谁?

几天前,Andrej Karpathy 发布了一段名为“ChatGPT等LLM的深入解析”的视频。这段视频信息量巨大,但也有3小时31分钟之长。我完整观看并做了大量笔记,所以觉得不妨整理出一个简短版本,方便那些希望快速获取关键点而不需要投入大块时间的人。

如果你符合以下情况,这篇文章和原始视频值得一看:

  • 你想深入了解LLM的工作原理,而不仅仅是表面层面。
  • 你想理解一些复杂的微调术语,如chat_templateChatML(尤其是如果你在使用Axolotl)。
  • 你想通过了解原因来提升提示工程技巧,即为何某些提示比其他更有效。
  • 你在尝试减少模型的“幻想”现象,并想知道如何防止LLM编造事实。
  • 你想知道为什么DeepSeek-R1如此重要

虽然我不会涵盖视频中的所有内容,但如果时间允许,强烈建议观看完整版。但如果你没有那么多时间,本文将为你提供核心要点。

注意:如果你正在寻找Andrej为该视频制作的excalidraw图示,可以从这里下载。他通过Google Drive分享了这个文件,但链接会在一段时间后失效,因此我决定也在我的CDN上托管一份。


预训练数据

互联网

LLM首先通过爬取互联网构建庞大的文本数据集。然而,原始数据嘈杂且包含大量重复、低质量及无关内容。因此,在训练之前需要进行严格的筛选。

  • 如果你构建的是仅支持英文的模型,你需要一种启发式方法来过滤非英文文本(例如,仅保留高概率为英文的文本)。
  • 示例数据集之一是FineWeb,其中包含超过12亿个网页。

清理后,数据仍需压缩为可用格式。原始文本不直接输入模型,而是转换成结构化、数值化的表示形式——即令牌。

分词

分词是指模型在处理文本之前将其拆分为更小的部分(令牌)。模型并非存储原始单词,而是将它们转换为代表重复模式的ID。

  • 流行的分词技术包括字节对编码(BPE)
  • 对于压缩来说,有一个最佳符号(令牌)数量。例如,GPT-4使用100,277个令牌,具体取决于模型创建者的决策。
  • 你可以使用像Tiktokenizer这样的工具可视化其工作方式。

神经网络输入输出

一旦数据被分词,就会被输入神经网络。以下是这一过程的工作方式:

  1. 模型接受一定数量的令牌作为上下文窗口(例如,某些模型使用8,000个令牌,GPT-4可达128k个令牌)。
  2. 它根据学到的模式预测下一个令牌
  3. 使用反向传播调整模型中的权重以减少错误。
  4. 随着时间推移,模型能够做出更好的预测。

更大的上下文窗口意味着模型可以“记住”更多输入,但也增加了计算成本。

神经网络内部

在模型内部,数十亿参数与输入令牌交互以生成下一个令牌的概率分布。

  • 这一过程由经过优化以提高效率的复杂数学公式定义。
  • 模型架构设计旨在平衡速度、准确性和并行化。
  • 你可以查看一个生产级别的LLM架构实例在此处

推理

LLM并不生成确定性输出,而是具有随机性。这意味着每次运行模型时输出都会略有不同。

  • 模型不仅重复它所训练的内容,还会基于概率生成响应。
  • 在某些情况下,响应可能完全匹配训练数据中的内容,但大多数时候它会生成符合相似模式的新内容。

这种随机性使LLM能够创造,但同时也可能导致它们幻想不正确的信息。

GPT-2

OpenAI在2019年发布的GPT-2是一个早期的基于Transformer的LLM例子。以下是它的概况:

  • 16亿参数
  • 1024令牌上下文长度
  • **在约10