Datawhale干货
视频:Andrej Karpathy,编译:AI寒武纪
Datawhale干货
视频:Andrej Karpathy,编译:AI寒武纪
人工智能大神 Andrej Karpathy 全新视频发布:时长 3 小时 31 分钟的深度解析 – 《深入剖析 ChatGPT 等大型语言模型》。
如无法查看,可自行搜索:
-
1. 预训练 (Pretraining): 涵盖数据准备、Tokenization 分词技术、Transformer 神经网络的输入/输出及内部结构、推理过程、GPT-2 训练示例,以及 Llama 3.1 基础模型推理示例 -
2. 监督微调 (Supervised Finetuning): 重点讲解对话数据的使用,并从 “LLM 心理学” 的角度分析幻觉现象、工具的使用、知识与工作记忆、自我认知、模型需要 tokens 才能思考、拼写问题以及参差不齐的智能等问题 -
3. 强化学习 (Reinforcement Learning): 阐释“熟能生巧”的强化学习理念,并结合 DeepSeek-R1、AlphaGo 和 RLHF 等实例,深入剖析强化学习在 LLM 训练中的应用
预训练数据 (互联网)
-
• URL 过滤: 使用黑名单过滤恶意网站、垃圾网站、营销网站、种族歧视网站、成人网站等,排除不良信息源。 -
• 文本提取: 从原始 HTML 网页中提取纯文本内容,去除 HTML 标记、CSS、导航栏等非文本元素。 -
• 语言过滤: 使用语言分类器识别网页语言,FineWeb 侧重英语,例如仅保留 65% 以上内容为英语的网页。语言过滤的策略会影响模型的多语言能力。 -
• 去重与 PII 移除: 进行数据去重,并移除个人身份信息 (PII),如地址、社保号码等,保护隐私。
Tokenization (分词)
-
• UTF-8 编码: 将文本转换为计算机可读的比特流,每个字符用 8 比特表示。 -
• Bytes (字节) 序列: 将比特流分组为字节序列,每个字节代表一个符号,符号数量为 256 个。字节序列比比特序列更短,但符号集更大。 -
• Byte Pair Encoding (BPE) 算法: 进一步压缩序列长度,通过寻找频繁出现的连续字节对,并将其合并为一个新的符号。重复此过程可不断缩短序列长度,同时增加词汇量。 -
• Tokenization 的目标: 在序列长度和词汇量之间取得平衡。GPT-4 使用了 100,277 个 tokens。
神经网络的输入/输出
-
• 滑动窗口: 从 token 序列中提取固定长度的 token 窗口作为上下文 (context)。窗口长度可变,实际应用中可能达到 8000 tokens。 -
• 上下文作为输入: 将上下文 tokens 输入神经网络。 -
• 输出概率分布: 神经网络输出一个概率分布,表示词汇表中每个 token 作为下一个 token 的概率。词汇表大小为 100,277,因此输出向量长度也为 100,277。 -
• 损失函数与反向传播: 使用损失函数衡量模型预测与真实下一个 token 的差异。通过反向传播算法调整神经网络的参数 (权重),使模型预测概率更接近真实分布。 -
• 批量训练: 在大量 token 窗口上并行进行训练和参数更新,提升训练效率。
神经网络内部结构
-
• 参数 (权重): 现代 LLMs 拥有数十亿甚至数万亿的参数。初始参数随机设定。 -
• 数学表达式: 神经网络内部的数学表达式由乘法、加法、指数运算、除法等简单运算构成。神经网络架构研究致力于设计高效的数学表达式,以实现强大的表达能力、可优化性和并行性。 -
• Transformer 架构: Transformer 是一种特殊的神经网络结构,被广泛应用于 LLMs。Karpathy 推荐使用 Transformer Neural Net 3D visualizer 网站,以可视化方式理解 Transformer 的内部结构。 -
• Transformer 的组成: Transformer 包含 Token Embedding 层、多层 Transformer Block (包含 Attention 机制和多层感知机 MLP)、Layer Normalization 层等。信息在网络中流动,最终输出 token 预测的 logits (用于计算概率)。 -
• 神经元: 可以将 Transformer 中的中间值 loosely 地理解为“合成神经元”的激活率,但强调这些神经元比生物神经元简单得多,没有记忆,是无状态的。
推理 (Inference)
-
• 起始 tokens (prefix): 推理从用户提供的起始文本 (prefix) 开始,例如用户在 ChatGPT 中输入的 prompt。 -
• 概率采样: 将 prefix tokens 输入模型,模型输出下一个 token 的概率分布。基于此概率分布进行采样,选择一个 token 作为模型的输出。采样过程具有随机性 (stochastic)。 -
• 迭代生成: 将模型输出的 token 添加到序列末尾,作为新的上下文,再次输入模型,重复采样过程,逐个 token 生成后续文本。 -
• 随机性与多样性: 由于采样过程的随机性,即使对于相同的 prefix,模型每次生成的文本也可能不同。模型生成的是训练数据的“remixes”,而非完全复现训练文本。 -
• ChatGPT 中的推理: 当用户与 ChatGPT 交互时,模型参数是固定的,只进行推理过程,根据用户输入完成 token 序列的生成。
GPT-2: 训练与推理示例
-
• GPT-2 模型参数: 1.5 亿参数,上下文长度 1024 tokens,训练数据约 1000 亿 tokens。相比现代模型规模较小。 -
• GPT-2 复现项目 (llm.c): Karpathy 尝试复现 GPT-2 的训练过程,并开源项目 llm.c,展示了训练 GPT-2 的成本已大幅降低,硬件和软件的进步是关键因素。 -
• 训练过程实时监控: 展示了 GPT-2 模型训练过程的实时监控界面,关键指标是损失 (loss) 值,损失值越低表示模型预测性能越好。训练过程中,模型不断生成文本示例,随着训练进行,生成文本的连贯性和质量逐渐提高。 -
• 计算资源: GPT-2 训练需要强大的计算资源,通常在云端 GPU 集群上进行。Karpathy 使用 8x H100 GPU 节点进行训练,展示了 GPU 在 LLM 训练中的核心作用,以及 Nvidia GPU 市场价值飙升的原因。 -
• 数据中心与 GPU 需求: 大型科技公司对 GPU 的巨大需求推动了 GPU 技术和市场的快速发展。
Llama 3.1 Base Model 推理
-
• Base Model 与 Instruct Model: 区分了 Base Model (基础模型) 和 Instruct Model (指令模型)。Base Model 仅是 token 模拟器,无法直接作为助手使用。Instruct Model 经过指令微调,可以回答问题和执行指令。 -
• Base Model 的发布: 模型发布通常包括模型代码 (描述网络结构) 和模型参数 (权重)。 -
• Hyperbolic 平台: Karpathy 使用 Hyperbolic 平台演示 Llama 3.1 Base Model 的推理能力。强调务必选择 “Llama 3.1 405B Base” 模型。 -
• Base Model 非助手特性: 演示 Base Model 无法直接回答问题,例如提问 “What is 2 + 2?”,Base Model 只是根据互联网文本的统计模式进行续写,而非给出答案。 -
• Base Model 的随机性: Base Model 的输出具有随机性,即使对于相同的 prompt,每次生成的文本也可能不同。 -
• Base Model 的知识蕴含: 尽管 Base Model 并非直接可用的助手,但它在预训练阶段学习了大量世界知识,并将这些知识存储在网络参数中。 -
• 知识提取: 通过巧妙的 prompt 设计 (例如 “Top 10 landmarks in Paris”),可以从 Base Model 中提取出一定的知识。但强调 Base Model 的知识是模糊、概率性和统计性的,并非精确记忆。 -
• 记忆与复述: 演示 Base Model 可以复述训练数据中频繁出现的文本 (例如 Wikipedia 条目),这被称为“复述 (regurgitation)”,通常是不期望的。 -
• 幻觉 (Hallucination): 演示 Base Model 在面对超出其知识范围的问题 (例如 2024 年美国大选结果) 时,会基于其训练数据进行推测和“幻觉”,生成看似合理但不真实的内容。 -
• In-context Learning (情境学习): 演示 Base Model 具备情境学习能力,可以通过 few-shot prompt (少量示例) 学习并执行特定任务,例如语言翻译。 -
• Prompt Engineering 技巧: 展示如何通过构建类似对话网页的 prompt,将 Base Model “prompt hack” 成一个简单的助手。
从预训练到后训练 (pretraining to post-training)
-
• 对话数据示例: 展示了对话数据的示例,包括多轮对话、助手个性化、拒绝回答不当问题等。 -
• 通过对话数据编程助手行为: 通过构建对话数据集,隐式地“编程”助手的行为模式。 -
• 数据来源:人工标注: 对话数据主要由人工标注员创建,标注员根据指令,为给定的用户 prompt 编写理想的助手回复。 -
• Tokenization 对话: 展示了如何将对话编码为 token 序列,使用了特殊 token (例如 IM start
,IM end
) 来标记用户和助手的回合。 -
• 推理时对话格式: 展示了推理时如何构建对话上下文,并从模型中采样生成助手回复。 -
• InstructGPT 论文: 介绍了 OpenAI 的 InstructGPT 论文,这是首次公开讨论如何通过对话数据微调语言模型使其成为助手的论文。 -
• 人工标注员与标注指令: 介绍了 InstructGPT 论文中描述的人工标注员和标注指令,强调标注指令的核心原则是 “helpful, truthful, and harmless” (有帮助、真实、无害)。 -
• 开源对话数据集: 介绍了 Open Assistant 项目,这是一个尝试复现 InstructGPT 数据集的开源项目。展示了 Open Assistant 数据集中的对话示例,包括用户 prompt 和助手回复。 -
• 现代数据集合成化趋势: 指出当前对话数据集的合成化趋势,LLMs 被广泛用于辅助生成对话数据,例如 UltraChat 数据集。 -
• ChatGPT 的本质: 强调与 ChatGPT 对话的本质,并非与神奇的 AI 交流,而是与一个统计模型互动,该模型模仿了接受过标注指令训练的人工标注员的行为。ChatGPT 的回答是对标注员行为的统计模拟。 -
• 案例:推荐巴黎地标: 通过案例说明 ChatGPT 的回答是对人工标注员可能给出的答案的统计模拟,而非模型自行研究和排序地标。
幻觉、工具使用、知识/工作记忆
-
• 知识边界探测: 通过提问模型,判断模型对哪些事实知识掌握不足。 -
• 负例数据增强: 针对模型知识不足的问题,在训练数据集中加入 “I don’t know” 的回答示例,让模型学习在不确定时拒绝回答。
-
• Web Search 工具原理: 模型可以生成特殊 token (例如 search start
,search end
) 来调用 Web Search 工具。程序接收到这些 token 后,暂停模型生成,执行 Web Search 查询,并将搜索结果文本插入到模型的上下文窗口中。 -
• 工作记忆 (Context Window): 上下文窗口被视为模型的工作记忆,模型可以直接访问和利用上下文窗口中的信息。 -
• 工具使用训练: 通过对话数据集示例,训练模型学习何时以及如何使用 Web Search 工具。 -
• ChatGPT 工具使用演示: 演示 ChatGPT 使用 Web Search 工具回答 “Who is Orson Kovats?” 的过程,模型引用搜索结果并给出参考文献。
自我认知 (knowledge of self)
-
• 数据硬编码: 在训练数据集中加入关于模型自身的问题和预设答案。 -
• 系统消息 (System Message): 在对话开始时,通过 system message 将模型身份信息注入到上下文窗口中。
模型需要 tokens 才能思考
-
• 计算资源限制: 每个 token 的处理都只有有限的计算资源,神经网络的层数有限,单次 forward pass 的计算量有限。 -
• 分布式计算: 复杂的计算和推理需要分布在多个 tokens 上完成,不能期望模型在单个 token 内完成过多计算。 -
• 逐步推理的重要性: 在 prompt 中引导模型逐步推理,生成中间结果,有助于模型解决复杂问题。对比了直接给出答案和逐步推理两种回答方式的优劣。 -
• 单 token 回答的局限性: 通过实验证明,对于简单的数学问题,模型可以尝试单 token 回答,但对于更复杂的问题则会失败。 -
• 工具使用 (Code Interpreter) 的优势: 推荐使用 Code Interpreter 等工具来解决计算问题,因为代码执行比模型的“心算”更可靠。 -
• 计数能力的局限性: 模型在计数方面表现不佳,因为计数需要大量计算,难以在单个 token 内完成。推荐使用 Code Interpreter 进行计数任务。
Tokenization 再探:模型在拼写方面的不足
-
• 模型不直接处理字符: 模型处理的是 tokens,而非字符。Tokenization 导致模型难以处理字符级别的任务。 -
• 字符级任务的失败: 演示模型在 “ubiquitous” 字符串上提取每三个字符的任务失败。 -
• 工具使用 (Code Interpreter) 的解决: 使用 Code Interpreter 可以解决拼写相关任务,因为 Python 可以直接处理字符。 -
• 草莓中 R 的数量: 提及 “strawberry” 中 “R” 的数量的著名例子,说明模型在字符计数方面的早期困难。
参差不齐的智能 (jagged intelligence)
-
• 简单比较大小的失败: 演示模型在比较 “9.11” 和 “9.9” 大小时犯错的例子,即使是简单的比较,模型也可能出错。 -
• 圣经经文的干扰: 推测模型在比较 “9.11” 和 “9.9” 大小时,可能受到训练数据中圣经经文的影响,导致误判。 -
• 对 LLM 的正确态度: 强调要将 LLMs 视为随机系统,既强大又不可完全信任,应作为工具使用,而非完全依赖。
从监督微调到强化学习
-
• 预训练 (Pre-training): 在互联网文档上训练,获得 Base Model,一个互联网文档模拟器。 -
• 监督微调 (SFT): 在对话数据集上微调 Base Model,使其成为助手。SFT 模型模仿人工标注员的行为。 -
• 强化学习 (RL): RL 是后训练的第三阶段,算法与预训练和 SFT 相同,但数据和目标不同。RL 阶段旨在进一步提升模型的能力,尤其是在推理和问题解决方面。
强化学习 (reinforcement learning)
-
• 教学场景类比: 将 LLM 训练比作教育过程,预训练对应于阅读教材,SFT 对应于学习例题,RL 对应于做练习题。 -
• RL 的核心思想:试错学习: RL 的核心思想是通过试错和奖励机制,让模型自主学习最优策略。 -
• 奖励信号:正确答案: 在可验证领域 (例如数学题),奖励信号可以是模型的回答是否正确。 -
• 模型自主探索: RL 允许模型自主探索不同的解题路径,发现更有效的策略,而非仅仅模仿人类专家。 -
• RL 训练过程: 模型生成多个候选解,根据是否得到正确答案进行奖励,并使用强化学习算法更新模型参数,鼓励生成更可能得到正确答案的解。 -
• RL 的优势: RL 能够让模型发现人类专家可能忽略的更有效的解题策略。SFT 模型只是模仿专家,而 RL 模型可以超越专家水平。
DeepSeek-R1
-
• 步骤分解: 模型会将复杂问题分解为更小的步骤,逐步求解。 -
• 自我评估与回顾: 模型会主动进行自我评估,检查每一步的计算或推理是否正确,甚至会主动回顾之前的步骤。 -
• 多角度尝试: 模型会尝试从不同角度分析问题,甚至尝试多种解题方法。 -
• 回溯与修正: 当模型发现之前的步骤可能存在问题时,会进行回溯并修正。
-
• DeepSeek 官方平台: 在 chat.deepseek.com 网站上,用户可以通过开启 “Deep Think” 按钮来体验 R1 模型。 -
• Together AI 平台: Together AI 等推理提供商也托管了 DeepSeek-R1 模型,用户可以在这些平台上选择 DeepSeek-R1 进行交互。
AlphaGo
-
• AlphaGo 的成功: AlphaGo 系统在围棋游戏中超越人类顶尖棋手,证明了 RL 在复杂策略学习方面的强大能力。 -
• 监督学习 vs. 强化学习: 对比了监督学习 (模仿人类棋谱) 和强化学习 (自我对弈) 在围棋游戏中的效果。RL 模型可以超越监督学习模型,达到甚至超越人类水平。 -
• Move 37: AlphaGo 下出的 “Move 37” 震惊围棋界,这是一个人类专家难以理解但事后证明极其精妙的棋步,体现了 RL 模型可能发现人类未知的策略。 -
• RL 的未来展望: 展望 RL 在 LLM 领域应用的未来,认为 RL 有可能让 LLMs 发展出超越人类的推理和思考能力。
基于人类反馈的强化学习 (RLHF)
-
• 不可验证领域的问题: 在创意写作等领域,难以像数学题一样自动评估答案的正确性,无法直接应用传统的 RL 方法。 -
• RLHF 的核心思想:间接监督: RLHF 的核心思想是训练一个奖励模型 (Reward Model) 来模拟人类的偏好,然后使用奖励模型作为 RL 的奖励信号。 -
• 奖励模型训练: 通过人类对模型生成结果的排序 (而非直接评分) 来训练奖励模型,降低了人工标注的难度。 -
• 奖励模型作为模拟人类偏好的函数: 奖励模型成为人类偏好的模拟器,RL 算法可以针对奖励模型进行优化。 -
• RLHF 的优势: RLHF 允许在不可验证领域应用 RL,并可能通过降低标注难度提升数据质量。 -
• RLHF 的局限性: 奖励模型只是人类偏好的 lossy 模拟,可能被模型“game”,导致模型生成看似高分但实际质量低劣的结果 (对抗样本)。 -
• RLHF 不是真正的 RL: 强调 RLHF 中的 RL 与传统 RL 的区别,RLHF 中的奖励函数 (奖励模型) 是可被 game 的,导致 RLHF 的效果有限。 -
• RLHF 的实际应用: 尽管有局限性,RLHF 仍然是一种有效的微调方法,ChatGPT 等模型也使用了 RLHF 技术。
未来展望
-
• 多模态 (Multimodal): LLMs 将迅速发展为多模态模型,能够处理文本、音频、图像等多种模态的数据,实现更自然的交互。 -
• 长期任务执行 (Agents): LLMs 将发展出更强的长期任务执行能力,成为能够自主完成复杂任务的智能体 (Agent)。 -
• 无处不在的 LLMs (Pervasive and Invisible): LLMs 将更深入地集成到各种工具和应用中,变得更加普及和隐形。 -
• 计算机使用能力 (Computer Using): LLMs 将具备更强的计算机使用能力,例如操作键盘鼠标,执行更复杂的任务。 -
• 测试时训练 (Test Time Training): 未来的 LLMs 可能会具备测试时训练能力,能够持续学习和适应新任务,克服当前上下文窗口有限的局限。
-
• LM Arena: LLM 排行榜,基于人类比较结果进行模型排名 -
• AI News Newsletter: AI 新闻通讯,提供全面的 AI 领域动态信息。 -
• X : 在 X 上关注 AI 领域的专家和机构,获取最新信息。
-
• 专有模型平台: OpenAI (chatgpt.com), Google (gemini.google.com, ai.google.dev) 等官方平台。 -
• 开源模型推理平台: Together AI (together.ai) 等平台,提供多种开源 LLM 的在线推理服务。 -
• Base Model 平台: Hyperbolic (hyperbolic.xyz),提供 Llama 3.1 Base Model 等基础模型的在线推理服务。 -
• 本地运行 (Local Inference): LM Studio (lmstudio.ai) 等工具,允许用户在本地计算机上运行较小的 LLM 模型。
一起“点赞”三连↓
(文:Datawhale)