批判性视角看待R1训练中的坑

摘要 我们通过分析其两个核心组成部分:基础模型和强化学习,来批判性地检验类似 R1-Zero 的训练方法。 我们研究了包括 DeepSeek-V3-Base 在内的各种基础模型,以了解预训练特征如何影响强化学习的性能。 我们的分析表明,DeepSeek-V3-Base 已经表现出“顿悟时刻”,而 Qwen2.5 基础模型即使没有提示词模板也表现出强大的推理能力,这表明可能存在预训练偏差。 此外,我们发现 GRPO 中存在优化偏差,这会在训练期间人为地增加响应长度(特别是对于不正确的输出)。 为了解决这个问题,我们引入了 Dr. GRPO,这是一种无偏的优化方法,可以在保持推理性能的同时提高 Token 效率。 利用这些见解,我们提出了一个极简的 R1-Zero 配方,该配方使用 7B 基础模型在 AIME 2024 上实现了 43.3% 的准确率,从而建立了新的最先进水平。 1 介绍 在本文中,我们旨在通过研究两个关键组成部分来理解类 R1-Zero 训练:基础模型和强化学习 (RL)。 在第一部分,我们研究基础模型的各项属性,重点关注 Qwen2.5 模型系列,该模型系列已被用于近期复现 R1-Zero 的尝试,真实的 R1-Zero 模型正是基于该模型通过强化学习 (RL) 进行微调得到的。 在第二部分,我们指出了 GRPO 优化中存在的偏差,该偏差可能导致模型生成越来越长的错误回复。 为此,我们提出了一种简单的修改方案来消除这种偏差,即获得正确的 GRPO (Dr. GRPO),从而提高 Token 效率(如图 1 所示)。 我们对基础模型和强化学习 (RL) 的分析表明,R1-Zero 训练存在一种极简方案:我们使用 (无偏) Dr. GRPO 算法,在 MATH (Hendrycks et al., 2021) 数据集难度等级 3-5 的问题上,利用 Qwen-Math 模板对 Qwen2.5-Math-7B 进行强化学习微调。仅使用 8 × A100 GPU 上 27 小时的计算,我们就实现了最先进的性能(图 2)。 ...

March 25, 2025 · 小茄墩

长文本场景下,LLM训练中梯度累加存在的BUG

Unsloth的梯度累积修复确保训练过程和损失计算能够准确和正确地执行。梯度累积的目标是在减少显存(VRAM)使用量的同时模拟完整批次训练。由于梯度累积也用于DDP和多GPU设置中,因此这个问题同样影响着大规模训练。 from unsloth import unsloth_train # trainer_stats = trainer.train() << 存在bug的梯度累积 trainer_stats = unsloth_train(trainer) 复现问题 理论上,梯度累积在数学上应该等效于完整批次训练。我们使用有效批次大小16进行训练,因此批次大小(bsz) * 梯度累积步数(ga)应保持恒定。我们测试了bsz=1,2,4,8和16,发现使用较大梯度累积步数的训练损失始终更高。 什么是梯度累积? 在训练或微调过程中,每一步都会从训练数据集中选择一定数量的随机样本来更新模型权重。但应该选多少样本呢?对于非常大的预训练任务,批次大小可能达到数百万,就像在Llama 3.1中那样,这有助于减少过拟合并提高模型的泛化能力。而对于像Unsloth的Llama 3.2笔记本中的微调任务,批次大小可能只有较小的32。 问题在于大批次的内存使用量非常大。如果1个批次使用1单位内存,那么100万大小的批次将需要100万单位内存。我们如何模拟大批次训练但又不消耗大量内存呢? 这就是梯度累积的用武之地!我们通过在每次新的小批次到来时即时创建梯度,然后将所有小梯度加起来,进行适当缩放,从而获得最终的大批次梯度。 可能的解释 一种流行的理论认为梯度累积在累积步骤中存在数值误差。但研究人员发现,即使在float32中进行累积也会产生相同的问题。我们的研究表明,确实存在一些微小的累积误差。 第二种理论是损失计算中存在bug,我们确认了这一点。 数学上是否等价? 梯度累积和完整批次训练在数学上是否等价?遗憾的是,如果简单地将梯度加起来,答案是否定的!我们首先注意到交叉熵损失是通过以下方式计算的: $$ \frac{1}{\sum \mathbb{I}\{y_i \neq -100\}} \sum L_i $$ 注意分母计算的是非填充或非忽略的token数量 - 即它通过每个文本片段中有效训练token的数量来归一化损失。指示函数实际上是未填充token的总和,也就是所有序列长度的总和,即: $$ \mathbb{I}\{y_i \neq -100\} = \sum m_i $$ 因此我们得到最终方程为: $$ \frac{\sum L_i}{\sum m_i} $$ 然后我们在分子和分母中同时添加 $\frac{1}{n}$ - 这是允许的,因为两者可以相互抵消: $$ \frac{\frac{1}{n}\sum L_i}{\frac{1}{n}\sum m_i} $$ 这意味着最终损失是平均损失值除以所有未填充序列长度的平均值: $$ \frac{\bar{L}}{\bar{m}} $$ 在进行梯度累积时,我们需要分别计算每个小批次的损失,然后将它们加起来得到最终损失。我们首先利用每个分区的平均损失和平均序列长度。 但我们发现,最终总和不等于原始的完整批次损失 - 实际上它比原来大$G$倍(其中$G$是梯度累积步骤的数量)。 ...

March 24, 2025 · 小茄墩

LangManus:代码库解析|多智能体|工具调用|browser use

LangManus 是一个基于 LangGraph 构建的多 Agent 协作系统,通过专业化的角色分工和工作流编排,实现复杂任务的智能处理。 系统架构 LangManus 采用了以图为中心的 Agent 协作架构,主要包含以下组件: Agent 层: 多个专业化 Agent(研究员、程序员、浏览器操作员等) 工具层: 为各 Agent 提供能力的工具集 LLM 层: 差异化配置的大语言模型 协调层: 工作流编排和任务调度 API 层: 面向用户的接口服务 核心组件详解 1. Agent 体系 (src/agents/) Agent 层是 LangManus 系统的核心执行单元,由一系列专业化角色组成,每个 Agent 都有明确的职责、工具集和工作模式。 系统包含多个专业 Agent,每个 Agent 有特定职责: Coordinator (协调员): 用户交互入口,处理简单问答和任务分发 Planner (规划师): 根据用户需求创建详细执行计划 Supervisor (监督员): 决策下一步由哪个 Agent 执行 Researcher (研究员): 负责搜索和网页抓取信息收集 Coder (程序员): 执行 Python/Bash 代码进行数据处理 Browser (浏览器操作员): 自动化浏览器操作和交互 Reporter (报告员): 生成最终报告 1. Coordinator Agent (协调员) 职责: ...

March 20, 2025 · 小茄墩

DAPO:大规模开源 LLM 强化学习系统

《DAPO: an Open-Source LLM Reinforcement Learning System at Scale》 摘要 推理规模化使大语言模型具备了前所未有的推理能力,其中强化学习是引发复杂推理的核心技术。然而,最先进的推理大语言模型的关键技术细节往往被隐藏(如 OpenAI 的博客和 DeepSeek R1 技术报告),因此社区仍然难以复现他们的强化学习训练结果。我们提出了解耦裁剪和动态采样策略优化(Decoupled Clip and Dynamic sAmpling Policy Optimization,DAPO)算法,并完全开源了一个最先进的大规模强化学习系统,该系统使用 Qwen2.5-32B 基础模型在 AIME 2024 上达到了 50 分。与之前隐藏训练细节的工作不同,我们介绍了算法的四个关键技术,使大规模 LLM 强化学习取得成功。此外,我们开源了基于 verl 框架构建的训练代码,以及精心策划和处理的数据集。我们开源系统的这些组件增强了可复现性,并支持未来大规模 LLM 强化学习的研究。 1 引言 测试时扩展(如 OpenAI 的 O1 和 DeepSeek 的 R1 )为大语言模型(LLM)[3-7] 带来了深刻的范式转变。测试时扩展支持更长的思维链推理,并诱导复杂的推理行为,使模型在 AIME 和 Codeforces 等竞争性数学和编程任务中表现卓越。 推动这一革命的核心技术是大规模强化学习(RL),它引发了诸如自我验证和迭代强化等复杂推理行为。然而,可扩展 RL 训练的实际算法和方法仍然是个谜,在现有推理模型的技术报告中被隐藏。在本文中,我们揭示了大规模 RL 训练中的重大障碍,并开源了一个可扩展的 RL 系统,包括完全开源的算法、训练代码和数据集,提供了具有行业级 RL 结果的民主化解决方案。 我们以 Qwen2.5-32B [12] 作为 RL 的预训练模型进行实验。在我们初始的 GRPO 运行中,在 AIME 上仅实现了 30 分——远低于 DeepSeek 的 RL(47 分)。深入分析表明,朴素的 GRPO 基线存在几个关键问题,如熵崩塌、奖励噪声和训练不稳定性。更广泛的社区在复现 DeepSeek 的结果时遇到了类似的挑战 ,这表明 R1 论文中可能省略了开发行业级、大规模且可复现的 RL 系统所需的关键训练细节。 ...

March 18, 2025 · 小茄墩

没有层归一化的Transformers

Normalization layers 在现代神经网络中无处不在,并且长期以来被认为是必不可少的。这项工作表明,不使用归一化的 Transformer 可以通过一种非常简单的技术实现相同或更好的性能。我们引入了Dynamic Tanh (DyT),一种逐元素操作 $DyT(x) = tanh(αx)$,作为 Transformer 中归一化层的直接替代品。DyT 的灵感来自于 Transformer 中的层归一化通常会产生类似 tanh 的 $S$ 形输入-输出映射的观察结果。通过结合 DyT,不使用归一化的 Transformer 可以匹配或超过其归一化对应物的性能,而且大多数情况下无需超参数调整。我们验证了带有 DyT 的 Transformer 在各种设置中的有效性,范围从识别到生成,从监督学习到自监督学习,以及从计算机视觉到语言模型。这些发现挑战了归一化层在现代神经网络中不可或缺的传统理解,并为它们在深度网络中的作用提供了新的见解。 1 介绍 我们的探索始于观察到LN层将其输入映射到具有类tanh、S形曲线的输出,从而缩放input activations,同时压缩极端值。受此启发,我们提出了一种称为 Dynamic Tanh(DyT)的逐元素操作,定义为:$DyT(x) = tanh(\alpha x)$,其中$\alpha$是一个可学习的参数。该操作旨在通过学习一个合适的缩放因子$\alpha$,并通过有界的tanh函数压缩极端值,从而模拟LN的行为。值得注意的是,与归一化层不同,它无需计算激活统计量即可实现这两种效果。如图1所示,采用DyT非常简单:我们直接在视觉和语言Transformer等架构中用DyT替换现有的归一化层。我们通过实验证明,具有DyT的模型可以稳定地进行训练,并在各种设置中实现较高的最终性能。它通常不需要需要在原始架构上调整训练超参数。我们的工作挑战了归一化层对于训练现代神经网络是不可或缺的这一概念,并提供了对归一化层属性的经验性见解。此外,初步测量表明,DyT 提高了训练和推理速度,使其成为面向效率的网络设计的候选方案。 2 背景:归一化层 $$ \text{normalization}(x) = \gamma \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta $$ 其中 \( $\epsilon$ \) 是一个很小的常数,\( $\gamma$ \) 和 \( $\beta$ \) 是形状为 \( $C$, \) 的可学习向量参数。 它们是“缩放”和“平移”仿射参数,允许输出在任何范围内。 术语 \( $\mu$ \) 和 \( $\sigma^2$ \) 表示输入的均值和方差。 不同的方法主要区别在于如何计算这两个统计量。 这导致 \( $\mu$ \) 和 \( $\sigma^2$ \) 具有不同的维度,每个维度在计算期间应用广播。 ...

March 14, 2025 · 小茄墩

Gemma 3 技术报告

架构选择 QK-Norm 同时使用Pre和Post Norm 比Qwen2.5更宽的MLP,深度相同 SWA 使用5:1比例和1024窗口大小(论文中非常小且有趣的消融实验!) 没有使用MLA来节省KV缓存,SWA已能完成这项工作! 视觉编码器采用 Pan & Scan 算法。视觉编码器以固定分辨率 896 × 896 运行。在推理阶段使用窗口处理技术以支持不同图像尺寸。 长上下文 仅在全局层增加RoPE至1M 小模型处理长上下文更困难,1B版本没有128k上下文能力 预训练使用32k上下文,然后扩展到 128K 上下文长度。使用了 RoPE 缩放因子 8。 没有使用yarn或llama3类似的RoPE扩展方法 蒸馏 仅保留教师模型的前256个logits 其他 使用QAT(量化感知训练) 强化学习使用 BOND、WARM和 WARP的改进版本 现在强制使用序列开始标记(BOS token),使用 <start_of_turn>user 和 <start_of_turn>model 标记对话轮次。词汇量扩展至 262K。 2. 模型架构 使用分组查询注意力 (GQA),采用后归一化和预归一化,并使用 RMSNorm。用 QK-norm 替换了 Gemma 2 的soft-capping。 5:1 局部/全局层交错 我们交替使用局部滑动窗口自注意力机制和全局自注意力机制,模式为每 1 个全局层对应 5 个局部层,并且模型的第一个层从局部层开始。 Gemma 3 模型支持 128K Token 的上下文长度,但 1B 模型例外,其上下文长度为 32K。 我们将全局自注意力层的 RoPE 基频从 10k 提升至 1M,并保持局部层的频率为 10k。 我们遵循类似于 Chen et al. (2023) 的位置插值方法来扩展全局自注意力层的范围。 ...

March 12, 2025 · 小茄墩

Open R1 更新3 在代码领域使用R1的教训

在过去的几周里,我们主要致力于复现 DeepSeek-R1 配方中 competitive programming(代码推理)的部分。 从 R1 轨迹训练代码模型中获得的经验教训 在创建 OlympicCoder 模型时,我们进行了大量的 SFT 实验,以了解应用于 CodeForces 数据集的各种过滤器的作用。我们发现 open-r1/codeforces-cots 的以下子集给出了最佳的整体性能: solutions:R1 根据问题陈述生成的解决方案。 solutions_w_editorials:R1 根据问题陈述和解释(解释了正确的解决方案)生成的解决方案。 请注意,我们只关注了 C++ 解决方案,但如果混合使用 Python 解决方案,可能会进一步提高性能。我们使用 LiveCodeBench 作为我们模型的试验平台,然后通过更难的 IOI 基准测试运行性能最佳的检查点。我们测试了各种超参数配置来训练我们的模型,并确定了以下配置: 模型:Qwen2.5 Coder Instruct 7B 和 32B Epochs: 10 Effective batch size: 128 Learning rate: 4e-5 Scheduler: Cosine with a decay to 10% of the peak learning rate Context size: 32,768 tokens for 7B 和 22,528 tokens for 32B 下面我们分享一些从在 R1 推理轨迹上调整 Qwen2.5 Coder 模型中获得的经验教训。 ...

March 12, 2025 · 小茄墩

OpenAI发布一批Agent工具

OpenAI发布了第一批Agent构建模块,旨在帮助开发者和企业构建实用且可靠的 AI 智能体。过去一年,OpenAI推出了一系列新的模型功能,例如高级推理、多模态交互以及最新的安全技术,这些都为OpenAI的模型奠定了基础,使其能够处理构建 AI 智能体 所需的复杂、多步骤任务。 然而,客户反馈表明,将这些功能转化为可用于生产环境的 AI 智能体 极具挑战性,通常需要大量的提示词迭代和自定义编排逻辑,且缺乏足够的可见性或内置支持。 为了解决这些难题,OpenAI推出了一套全新的 API 和工具,专门用于简化 AI 智能体 应用的开发: 全新的 Responses API ,它结合了 Chat Completions API 的简洁性和 Assistants API 的工具使用能力,旨在帮助开发者构建 AI 智能体 内置工具,包括网页搜索 、文件搜索 和计算机使用 全新的 Agents SDK ,用于编排单 AI 智能体 和多 AI 智能体 工作流程 集成的可观测性工具 ,用于追踪和检查 AI 智能体 工作流程的执行情况 这些新工具简化了核心 AI 智能体逻辑、编排和交互,从而显著降低了开发者构建 AI 智能体的入门门槛。 在接下来的几周和几个月里,OpenAI计划发布更多工具和功能,以进一步简化和加速在OpenAI平台上构建 AI 智能体应用。 隆重推出 Responses API Responses API 是OpenAI用于构建 AI 智能体的全新 API 原语,它利用 OpenAI 的内置工具,兼具 Chat Completions 的简洁性和 Assistants API 的工具使用能力。 随着模型能力的不断发展,OpenAI相信 Responses API 将为开发者构建 AI 智能体应用提供更灵活的基础。 通过单个 Responses API 调用,开发者将能够使用多种工具和模型交互来解决日益复杂的任务。 ...

March 12, 2025 · 小茄墩

R1-Omni:基于强化学习的可解释全方位多模态情感识别

摘要 在这项工作中,我们首次将具有Verifiable Reward 的强化学习 (RLVR) 应用于 Omni-多模态大语言模型,用于情感识别。情感识别是一项视觉和音频模态都起着关键作用的任务。我们利用 RLVR 来优化 Omni 模型,从而显著提高其在三个关键方面的性能:推理能力、情感识别准确性和泛化能力。RLVR 的引入不仅提高了模型在分布内数据上的整体性能,而且在分布外数据集上进行评估时也表现出卓越的鲁棒性。更重要的是,改进的推理能力能够清晰地分析不同模态(特别是视觉和音频信息)在情感识别过程中的贡献。这为多模态大语言模型的优化提供了宝贵的见解。 介绍 随着 DeepSeek R1 的问世,强化学习 (RL) 的潜力越来越受到从事大语言模型研究人员的关注。DeepSeek R1 引入的一项关键创新是具有可验证奖励的强化学习 (RLVR),它利用基于规则的奖励机制,以高效且可靠的方式优化模型。 即使在训练数据有限的情况下,这种方法在增强大语言模型 (LLM) 的能力方面也表现出了显著的成功。最近的研究已将这种方法扩展到多模态大语言模型 (MLLM),进一步展示了其多功能性。 例如,R1-V 已应用于几何推理和视觉计数等任务,在这些任务中,使用 RLVR 训练的 MLLM 不仅表现出强大的推理能力,而且在领域内测试中实现了与监督微调 (SFT) 相当的性能,同时在分布外 (OOD) 评估中显著优于 SFT 模型。 在另一项值得注意的工作中,Visual-RFT 的作者验证了 RLVR 在图像分类和目标检测等经典计算机视觉任务中的有效性。 他们的结果表明,RLVR 在几乎所有类别中都始终优于 SFT,突显了其广泛的适用性和稳健性。 尽管取得了这些进展,但迄今为止,RLVR 与大语言模型(LLM)的集成主要局限于图像-文本模态。据我们所知,之前的研究尚未探索将 RLVR 应用于基于视频的多模态模型,这些模型整合了更丰富的信息来源,例如音频和动态视觉内容。为了弥合这一差距,我们首次探索了 RLVR 与视频全模态模型的结合,重点关注情感识别任务——在这个领域,视觉和音频模态都为准确的预测提供了关键线索。在这项研究中,我们以 HumanOmni 为基础,这是一个首个为以人为中心的场景理解而设计的开源全模态模型。通过将 RLVR 应用于 HumanOmni,我们旨在研究其在提高情感识别性能方面的潜力。我们的研究结果揭示了几个关键见解: 增强的推理能力:R1-Omni 展示了卓越的推理能力,能够更清楚地理解视觉和音频信息如何促进情感识别。 改进的理解能力:与 SFT 相比,RLVR 显著提高了情感识别任务的性能。 更强的泛化能力:RLVR 模型表现出明显更好的泛化能力,尤其是在分布外场景中表现出色。 基于可验证奖励的强化学习 $$ R(q, o) = \begin{cases} 1, & \text{如果 } o = \text{基本真值}, \\ 0, & \text{否则}. \end{cases} $$$$ \max_{\pi_\theta} \mathbb{E}_{o \sim \pi_\theta(q)} \left[ R_{\text{RLVR}}(q, o) \right] $$$$ R_{\text{RLVR}}(q, o) = R(q, o) - \beta \cdot \text{KL}[\pi_\theta(o|q) \| \pi_{\text{ref}}(o|q)]. $$ 这里,$\pi_{\text{ref}}$ 表示优化之前的参考模型,$R(q, o)$ 是可验证的奖励函数,$\beta$ 是一个超参数,用于控制最大化奖励和通过 KL 散度正则化保持与参考模型接近程度之间的权衡。 ...

March 11, 2025 · 小茄墩

云端渲染浏览器:Browser-use 详细介绍

项目概述 browser-use 是一个基于 Python 的开源库,旨在简化 AI 代理与浏览器之间的交互。它融合了先进的 AI 技术和浏览器自动化功能,通过集成 Playwright 等浏览器自动化工具,允许开发者使用大型语言模型(LLM)来自动化浏览网页、提取信息和模拟用户操作1, 3。 browser-use 的目标是为开发者提供一个灵活、可扩展的框架,用于构建复杂的网页自动化任务,从而提高网页数据抓取和处理的效率1。它提供了一个强大而简单的接口,使 AI 代理能够访问网站并执行各种任务,例如网页导航、元素定位、表单填写和数据抓取3。 WebVoyager数据集上的表现👆。WebVoyager数据集难度虽高,但存在局限性:主要测试代理规划能力,未覆盖网站核心挑战(如含iframe/Shadow元素的复杂页面)。部分任务存在歧义性(人类也可能有不同解读),但目前仍是最佳可用基准。 核心功能详解 browser-use 的核心功能主要围绕浏览器自动化和 AI 集成展开,包括以下几个方面1, 3: AI 融合: 将 AI 技术融入到浏览器自动化操作中,允许开发者使用支持 LangChain 的大型语言模型(LLM),如 GPT-4、Claude 等来自动化浏览网页、提取信息、模拟用户操作等1, 3。 Playwright 集成:browser-use 集成了 Playwright,这是一个由微软开发的端到端(E2E)测试工具,用于自动化 Web 浏览器操作。Playwright 支持 Chromium(Chrome、Edge)、Firefox 和 WebKit(Safari)三大浏览器引擎,并适用于跨平台(Windows、macOS、Linux)。通过 Playwright,browser-use 可以实现对浏览器的精确控制,包括页面导航、元素点击、表单填写等1, 3。 实际用例:自动化登录网站、模拟用户在网页上的操作流程等。 LangChain 集成:browser-use 还集成了 LangChain,这是一个用于构建大语言模型(LLM)应用的开发框架。LangChain 通过模块化设计简化了 LLM 应用开发流程,支持开发者快速搭建基于语言模型的复杂应用,如聊天机器人、知识库问答和自动化工作流等。通过 LangChain,browser-use 可以实现对网页内容的智能分析和理解,从而更好地指导浏览器自动化任务1, 3。 实际用例:使用 LLM 分析网页结构,自动提取关键信息,例如新闻标题、文章内容、产品价格等。 多种大语言模型(LLM)支持:browser-use 的 Web UI 扩展支持多种 LLM,包括 Gemini、OpenAI、Azure OpenAI、Anthropic、DeepSeek、Ollama 等1, 3。这使得开发者可以根据自己的需求选择合适的 LLM,从而获得最佳的性能和效果。 ...

March 9, 2025 · 小茄墩