可怕!llm训练的bug,梯度累计设置过大,会导致最终loss过大。

Llama-factory详细基础使用说明 对于初入算法的童鞋来说,有的可能还不知道llama-factory是什么,只知道大模型用到了这个框架,这是不行的。LLaMA-Factory 是一个低代码的大规模语言模型(LLM)训练框架,它主要面向研究人员和开发者,旨在简化大型语言模型的微调、评估和部署过程。白话说就是集合了当下LLM领域各种好用的开源或者自研的框架以及工具,进行封装以及优化,简化使用方法,方便大家对大模型进行微调和评估部署等工作,降低了使用难度。包括推理框架vllm等(具体可以看官网哈,下面有地址)易用性 vs. 性能。 阅读详情

范围:该问题影响所有使用梯度累计的库,包括hf的等。(hf的人在修复中了)

10.18日更新:

感谢评论区的大佬赐教,补充下他们的观点。

@Quokka 提供了一种对描述的实验现象(梯度累积越大,最终 loss 就越大的猜测)的解释:

短序列因为上下文短,信息不足,所以不容易预测,loss 偏大(梯度累积再给他加权),于是观测到的现象就是“梯度累积 loss 偏大”。其实它是偏向了短序列的 loss,而不是往大的方向偏。

@Ethan Yan

一般情况下,loss 计算会经历三次平均:

  • micro batch 维度,分母是这个 micro batch 中的所有 label 不是 -100 的 token 数(不同 token 之间 loss 的平均)
  • DP 维度,分母是 DP size (和 GPU 数量相关,不同机器之间 loss 的平均)
  • 梯度累加维度,分母是梯度累加数。(不同 batch 之间的 loss 的平均)

我们要做的就是,不要让 DP 以及梯度累积维度影响原本 token 级别等权的 loss。

因此计算完,所有的目标 token 的 loss,加和之后,再除以实际目标 token 总数,这样,在 token 维度都是等权的,不受长度影响。

10.17日更新:

Hugging Face 在 10.16 日写了篇博客介绍修复问题。

https://huggingface.co/blog/gradient_accumulation

他们的方法是:交叉熵改为 reduction=sum,再除总的实际目标 token。(他们的 loss 都在模型里面,要改无数个模型文件。。。)

def ForCausalLMLoss(logits, labels, vocab_size, **kwargs):
    # Upcast to float if we need to compute the loss to avoid potential precision issues    
    logits = logits.float()    
    # Shift so that tokens < n predict n    
    shift_logits = logits[..., :-1, :].contiguous()    
    shift_labels = labels[..., 1:].contiguous()    
    
    # Flatten the tokens    
    shift_logits = shift_logits.view(-1, vocab_size)    
    shift_labels = shift_labels.view(-1)    
    # Enable model parallelism    
    shift_labels = shift_labels.to(shift_logits.device)    
    
    num_items = kwargs.pop("num_items", None)
+        loss = nn.functional.cross_entropy(shift_logits, shift_labels, ignore_index=-100, reduction="sum")
+        loss = loss / num_items
-        loss = nn.functional.cross_entropy(shift_logits, shift_labels, ignore_index=-100)
    return loss

Qwen2 的计算 loss 的方式:

https://github.com/huggingface/transformers/blob/v4.45.2/src/transformers/models/qwen2/modeling_qwen2.py#L855

他们的 PR:

https://github.com/huggingface/transformers/pull/34191 https://github.com/huggingface/transformers/pull/34198

重新安装后,即可正常使用:pip install git+

https://github.com/huggingface/transformers

整体结论(太长不看版):

  1. 理论上,梯度累计在数学上应该等同于全批量训练,但实际发现 loss 并不匹配。

https://github.com/huggingface/trl/issues/2175

  1. 研究者通过公式和实验证明,罪魁祸首是基于平均(mean)交叉熵损失和梯度累计,结合后会比全批量的平均交叉熵损失更大。

  2. loss大,会对什么有影响呢?

    • 模型泛化性:梯度累计加上基于平均(mean)交叉熵损失,会导致 bsz=1,ga=16 之间的 L2 范数比 bsz=16 的 10 倍。可以理解为:导致模型泛化性不足。
    • 梯度累积后,过度重视短的序列长度,而忽略长的序列长度。

问题描述:

在这里插入图片描述
实验发现1:之前的研究者发现,在总的 batch_size * gradient accumulation 相同的情况下,梯度累积越大,最终 loss 就越大。研究者对此提了一个 issue:

https://github.com/huggingface/trl/issues/2175

在这里插入图片描述
实验发现2:最近的研究者通过实验发现,在相同的 batch_size * gradient accumulation 下,除了 loss 会更大,梯度累积越大,最终会导致 L2 范数越大。L2 范数越大,说明权重越大,进而影响模型的泛化性。

下面我们推导下 full batch 和 gradient accumulation 在计算 loss 上到底是否相等?

实例推导:

假设我们是在 SFT 任务中,输入的维度是 [batch_size, seq_len],假设这个 batch 内:实际需要计算的 target token 的总数为 I:

那么,交叉熵 loss 会先为 batch 内每一个 target token 计算一个 loss,然后相加,最后除以这个 batch 内所有 target token 的总数 I。

交叉熵 loss 的默认设定是 reduction=mean。在这里插入图片描述
我们举例说明:

  1. 第一种情况(full batch):batch_size = 2,gradient accumulation = 1;
  2. 第二种情况(gradient accumulation):batch_size = 1,gradient accumulation = 2。

序列等长的情况(每个 batch 的 target token 数量一样):

首先,假设两个序列等长,都是 m;

full batch 情况:

gradient accumulation 情况:

两种 loss 是相等的。

序列不等长的情况(每个 batch 的 target token 数量不一样):

假设两个序列不等长(训练过程中十分常见),一个是 一个是 ;

full batch 情况:

gradient accumulation 情况:

其实本质上就是比较 和 谁大谁小的情况了。

四个变量,已知 和 不相等,可以对 loss 做些假设,数学证明下两者的大小。

从目前的公式,我们能得出的结论是,相比 full batch 下不同序列的 target token 等权,在 gradient accumulation 情况下:

  • 如果一个序列 target token 越短,那么其 loss 权重越大;(因为分母小)
  • 如果一个序列 target token 越长,那么其 loss 权重越小。(因为分母大)

​

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

LLM训练精度量化:从loss分解到梯度信噪比优化 在大语言模型训练中,'loss下降但效果不增'已成为普遍痛点,其根源常被归因于传统scaling laws对训练动态的过度简化。本文从基础概念切入,解析loss本质并非单一标量,而是由信号分量、噪声分量与偏差分量构成的可解耦系统;进而引出'precision'的新定义——即token级梯度更新的信噪比(SNR),直指训练动力学核心。该技术价值在于将模糊的'训练效率'转化为可测量、可干预的工程指标,支撑精度画像、采样调度与优化适配三层闭环。典型应用场景包括千卡集群利用率提升、loss平台期归因诊断及SFT阶段 阅读详情

相关推荐

GNN+DSPy+LLM训练协同落地实战手册

图神经网络(GNN)是建模知识图谱等非欧结构数据的核心技术,其本质在于通过局部邻域聚合突破传统嵌入的线性假设;DSPy则将大语言模型(LLM)的提示工程升维为可验证、可测试的契约式接口,显著降低推理链维护成本;而真实的LLM训练并非简单堆叠数据与算力,而是对预训练数据质量衰减、SFT指令覆盖完备性及RLHF奖励泛化能力的系统性工程管控。三者协同构成当前垂域大模型落地的关键技术栈,尤其适用于知识图谱增强、法律/医疗/金融等专业场景的结构化语义抽取与可控生成任务。

weixin_33805743的博客 370

一文读懂LlamaFactory 中 Loss 曲线图

摘要: LlamaFactory中的Loss曲线图(Original vs Smoothed)是监控模型训练效果的关键工具。Original曲线反映每一步的真实Loss波动,适合捕捉短期异常;Smoothed曲线通过平滑处理展示整体趋势。查看方式包括WebUI可视化或日志文件分析。典型模式包括正常下降(训练成功)、剧烈波动(需调学习率)、Loss上升(可能过拟合)等。建议结合其他指标(如准确率)综合评估,并对比双曲线差异:Original观察细节,Smoothed把握趋势。常见问题如初期快速下降(正常)、持

weixin_52906070的博客 1832

Batch Size本质解析:从梯度估计到硬件约束的工程实践

Batch size是深度学习训练中决定梯度估计质量的核心超参数,其本质是随机梯度下降(SGD)中单次采样的统计窗口大小。它直接影响梯度方差、收敛稳定性与泛化能力——batch size越小,梯度噪声越大,隐式正则性越强;越大则梯度越平滑,但易陷入尖锐极小值并加剧BN统计失真。该参数并非孤立存在,而是与learning rate、优化器状态、显存带宽及模型结构深度强耦合。在CV任务中受图像分辨率制约,在NLP中受序列长度平方级影响,在边缘设备上则需权衡latency与硬件向量化效率。理解其物理意义与实测边界

weixin_30904593的博客 477

小白也能微调大模型:LLaMA-Factory使用心得

本文介绍了初学者如何使用LLaMA-Factory进行大模型的微调,包含训练、测试数据集的构建,训练任务相关的参数,训练完成后的测试集上推理等环节

MeetLight 1万+

深度学习Bug复现:挑战与RepGen框架解决方案

深度学习系统中的Bug复现面临非确定性行为、环境依赖性和沉默性失败等独特挑战。传统方法如人工复现和自动化测试工具在处理这些特性时效率低下。RepGen框架创新性地结合LLM代码生成与领域知识,通过混合检索系统、训练循环提取器和动态验证机制,显著提升复现成功率。该技术特别适用于API依赖型Bug和环境配置问题,在测试中实现80%的复现成功率,较传统方法提升19.8%。对于开发者而言,理解深度学习Bug的特性和采用系统化复现工具,能有效降低调试时间与认知负荷。

weixin_34186128的博客 458

【Bug已解决】Understanding loss in Training LLM 解决方案

训练自己的 LLM(用的Trainertokenizer最典型的复现:把一批长短不一的样本 pad 到同一长度送进模型,直接用input_ids当labels算交叉熵,发现 loss 被 padding 位置严重拉高,训练目标其实是「学会预测padding token」,而不是「学会预测下一个真实 token」。这类问题不报错,但训练出来的模型就是「不懂人话」——因为 loss 的含义从一开始就算错了。

博客 243

实验七 循环神经网络(2)梯度爆炸实验

无

weixin_51395608的博客 909

Vivado Combinatorial Loop Alert问题 [DRC LUTLP-1]

Vvado综合和布局布线都通过了但是无法生成bit文件,提示Combinatorial Loop Alert,错误如下图。在RTL图中可以看到LUT的输出连接到了输入上,这个就是。在代码中我并未找到导致这种情况发生的地方,如果遇到类似的问题先检查自己的代码是不是存在组合逻辑连接出现了问题,如果没问题再考虑通过设置去解决问题。

伊丽莎白的学习之路 6032

使用Sum计算Loss和解决梯度累积(Gradient Accumulation)的Bug

为了解决梯度累积中损失计算的偏差,我们可以在每次计算梯度时对每个小批量的损失进行缩放。

阿正的梦工坊 1967

保姆级QFIL线刷教程:从驱动安装到成功刷机的完整避坑指南(Win10/11实测)

本文提供了一份详细的QFIL线刷教程,涵盖从驱动安装到成功刷机的完整流程,特别针对Win10/11系统进行了实测。文章重点解决了EDL模式下的常见问题,如Download Fail和COM Port识别错误,并提供了实用的避坑技巧和故障排除方案,帮助用户实现零失误操作。

weixin_29245767的博客 765

PredFormer实战:用Transformer搞定交通流量预测(附TaxiBJ数据集代码)

本文详细介绍了如何利用PredFormer这一基于Transformer的先进模型进行交通流量预测,特别针对TaxiBJ数据集提供了完整的实战代码和优化策略。PredFormer通过门控Transformer块(GTB)的创新设计,在时空预测任务中展现出显著优势,相比传统方法将MSE降低33.1%,推理速度提升4.4倍。文章还涵盖了模型轻量化、部署优化等实用技巧,为智慧城市建设中的交通预测提供了高效解决方案。

weixin_29194817的博客 447

LLM训练中的SFT与RL混合策略:性能优势与隐藏缺陷

在大型语言模型(LLM)训练中,监督微调(SFT)和强化学习(RL)是两种核心优化方法。SFT通过标注数据微调模型,而RL则通过奖励信号优化策略。混合策略方法试图结合两者优势,但近期研究发现其性能提升可能源于SFT实现中的系统性缺陷,如CPU卸载优化器bug和损失聚合bug。这些缺陷导致SFT基线性能被低估,使得混合策略看似更具优势。修复这些bug后,传统SFT→RL管道在数学推理等任务上表现更优。然而,A3PO和Glow等创新方法在数据稀缺和对抗性环境等场景仍有独特价值,它们通过分析错误样本中的有价值信息

weixin_38166557的博客 358

LPDDR5X内存技术解析:性能提升与优化策略

内存技术在现代计算系统中扮演着核心角色,其性能直接影响整体系统效率。LPDDR5X作为JEDEC最新标准,通过提升数据传输率至8533Mbps、优化能效比15%以上,并扩展突发长度至32字节,显著提升了移动设备的处理能力。这些改进特别适用于5G通信、AI加速(如昇腾芯片)及8K视频处理等高带宽需求场景。技术原理上,LPDDR5X引入了动态电压频率调整(DVFS)和可编程突发长度等创新机制,有效降低了实际应用中的延迟。在工程实践中,合理的PCB布局和信号完整性验证是确保高速稳定运行的关键。随着AI和8K应用的

weixin_29190169的博客 402

梯度掩码压缩:让大模型微调不崩溃的可微分压缩法

模型压缩不仅是减小体积或加速推理,更本质是解决训练阶段的梯度流稳定性问题。传统剪枝与量化在微调时易引发梯度坍缩、优化器失效和精度断崖下跌,根源在于压缩操作不可导且与反向传播脱节。梯度掩码(Gradient Mask)将压缩建模为可学习、可微分的动态过程,通过hook实时调控权重梯度,实现稀疏性与训练稳定性的协同优化。该技术无需修改模型结构,兼容主流LLM架构,已在Llama-3、Qwen2等模型上验证其跨架构泛化能力,适用于边缘部署、LoRA微调、低资源适配等真实工程场景。

stevenbill的博客 530

新手也能写复杂爬虫!AI+Python自动分析京东商品,提取数据不用F12

不用F12:AI自动分析京东页面,生成选择器;不用懂JS:Playwright自动渲染动态数据;不用改代码:只需配置3个参数,复制运行就能出结果。这套方案不仅适用于京东,修改提示词后还能爬取淘宝、拼多多、亚马逊等电商网站,新手只需掌握“配置参数→运行代码→查看CSV”3步,就能轻松获取任意网站的结构化数据。未来,AI会让爬虫彻底进入“零代码、零门槛”时代,新手也能轻松搞定复杂数据爬取需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1341

彩票的未来:基于人工智能与大数据的创新预测模型

随着人工智能(AI)和大数据技术的迅猛发展,彩票行业正面临前所未有的变革。本文将探索如何通过结合深度学习、机器学习和数据挖掘技术,构建先进的预测模型,以提高彩票开奖结果的预测准确性。通过分析历史数据、应用现代化的计算技术,我们提出了一种创新的彩票预测软件架构,旨在推动彩票行业向着更加智能和高效的方向发展。

Sapphire521的博客 1443

Lightning Fabric实现8-bit量化LLM训练实战

8-bit量化是一种通过将模型权重压缩为int8整数、计算时动态反量化为FP16/BF16、梯度仍以FP32累积的高效模型压缩技术,其核心原理在于平衡显存节省与数值稳定性。相比传统bitsandbytes仅支持推理、QAT需修改模型结构且收敛慢,Lightning Fabric提供原生、可插拔的量化支持,依托to_device()、precision_context()和setup_module()三大原语,在不侵入PyTorch训练逻辑的前提下,实现权重持久化量化、前向动态反量化与梯度int8截断等关键能

dihuangxiu8828的博客 329

Rockchip开发系列 - 3.4.GPIO扩展芯片AW95xx和PCA953X(2)

Rockchip开发系列 - 3.3.GPIO扩展芯片AW95xx和PCA953X(2)

fulinux的博客 1007

llm-algo-5

大模型训练与对齐系统知识闭环 本文构建了大模型训练与对齐的系统化学习框架,分为四阶段递进式路线: 数学与代码基础:掌握WSD调度、Attention反向传播、PPO/DPO损失的手推实现,建立数值稳定性直觉。 系统工程视角:分析显存计算瓶颈,理解PPO四模型显存分布、Attention矩阵显存占用,以及DPO的显存优势。 调参监控实战:建立训练指标监控体系(如Clip Fraction、KL散度),设计破坏性实验验证理论。 技术决策能力:形成算法选型决策树(如DPO/PPO适用场景),追踪前沿技术演进(如F

白水空空 244

SAP_MM模块库存概览俄罗斯报表简介

本文介绍了SAP MM模块中"库存概览俄罗斯报表"的功能与应用。该报表主要用于查看物料在不同库存地点和类型的库存情况,并满足俄罗斯当地法规要求。文章解释了"俄罗斯报表"可能指代本地化合规库存报表或客户自定义报表,详细说明了事务代码J3RFLVMOBVEDH的操作步骤,包括公司代码、物料编码、日期范围等查询条件,并解释了报表中各字段含义如期初期末库存数量与价值。最后强调在物料分类账处理完成后使用该报表可获得实际库存价值,为SAP用户提供了实用的库存管理参考。

我小时候很黑的博客 1092

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

535B大模型公开训练全记录:代码、数据与Loss曲线解析

大模型预训练通常被视为黑盒,最终指标背后隐藏着数据配比、学习率调度、稳定性处理等大量工程细节。当535B参数级模型将三个月的训练全程公开,代码、数据与Loss变化实时可见,这为研究者和开发者提供了极稀缺的观察样本。从数据处理流水线到分布式训练容错,从日志监控到损失曲线分析,这些方法论均可迁移至小规模训练任务。理解Loss曲线中的尖峰与平台期,掌握数据清洗与质量过滤的优先级,部署完善的断点续训与显存监控机制——这些才是大模型训练工程落地的关键。本文以该公开项目为引,拆解从训练日志到性能优化的通用实践路径,帮助

weixin_34221276的博客 450

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

梯度下降实战避坑指南:从学习率到优化器的工程真相

梯度下降是机器学习训练过程的核心机制,其本质并非数学意义上的最优解搜索,而是受硬件约束、数据分布与数值精度共同制约的动态路径规划过程。理解学习率的时空动态性、损失函数对梯度稳定性的影响、以及不同优化器(如SGD、AdamW、Lion)在内存、鲁棒性与收敛速度上的权衡,是保障模型稳定训练的关键技术基础。尤其在真实业务场景中,梯度爆炸、鞍点卡死、loss震荡等现象,往往源于学习率调度失当、梯度裁剪缺失或混合精度配置错误等工程细节。本文聚焦梯度下降在工业级模型训练中的典型故障模式与可复用诊断策略,覆盖从单卡调试到

621

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LLM中的RL与SFT:特例与挑战,稳定训练的技巧与高质量数据的重要性!

文章深入探讨了LLM中RL与SFT的关系,指出SFT本质上是RL的特例。尽管形式相似,但RL训练远不如SFT稳定,原因包括基础设施难度高、数据质量差异大以及RL样本的"毒性"。作者分析了稳定RL训练的各种技巧,强调不应盲目使用而应先分析数据分布变化。文章特别强调了高质量数据的重要性,指出当前开源RL数据质量堪忧,并建议使用generate reward模型而非规则奖励模型,以提升训练效果。

Trb201013的博客 569
上一篇: AI大模型与产品策略:产品经理的致胜之道
下一篇: 一文了解人工智能AI、大模型、AI大模型、ChatGPT、GPT-4、OpenAI、Claude 3...
少喝冰美式
博客等级 码龄3年 6845粉丝 517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值