大模型增量预训练新技巧:解决灾难性遗忘

wenet-基于预训练模型进行增量训练 将本地准备好的F:/wenet数据集/0529_0531_merge/chuli下的train、dev、test中的text、wav.scp两个文件分别拷贝到远程/hy-tmp/wenet/examples/aishell/s0/data下对应的train、dev、test文件夹下。将准备好的数据文件0529_0531_dataset,上传到恒源云上的/hy-tmp/wenet/examples/aishell/s0下。其中0529_0531_dataset是前面上传的训练数据文件夹。 阅读详情

大家好,目前不少开源模型在通用领域具有不错的效果,但由于缺乏领域数据,往往在一些垂直领域中表现不理想,这时就需要增量预训练和微调等方法来提高模型的领域能力。

但在领域数据增量预训练或微调时,很容易出现灾难性遗忘现象,也就是学会了垂直领域知识,但忘记了通用领域知识,之前介绍过增量预训练以及领域大模型训练技巧。

今天给大家带来一篇增量预训练方法-Llama-Pro,对LLMs进行Transformer块扩展后,增量预训练过程中仅对新增块进行训练,有效地进行模型知识注入,并且极大程度地避免灾难性遗忘。

图片

LLaMA Pro: Progressive LLaMA with Block Expansion

LLaMA Pro: Progressive LLaMA with Block Expansion
Paper: https://arxiv.org/abs/2401.02415
Github: https://github.com/TencentARC/LLaMA-Pro

文章目录
    • 技术交流群
    • 用通俗易懂方式讲解系列
    • 块扩展方法
    • 实验细节
    • 讨论分析
    • 写在最后

块扩展方法

块扩展,顾名思义,就是在原始模型中每个Transformer块或者某几个Transformer块后增加一个Transformer块,但为了保持扩展后的模型输出保持不变,需要增加的块为恒等块(输入输出相同),如下图所示。

图片

在构建恒等块过程中,主要是将多头注意力层和FFN层中的最后一个线性层(Linear)权重置为0变成Zero-Linear,即可保持经过该块的输入输出一致。

PS:论文附录A中写了大段的推导公式来证明,在此不做过多介绍。

块的增加方式是,对原始模型的 个Transformer块分成 组,每组中包含 个Transformer块,对于每组后添加 个恒等块。代码实现具体如下:

model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.float16)
ckpt = model.state_dict()

# original_layers是模型原始层数,layers是模型最后达到层数
split = int(original_layers / (layers - original_layers))

layer_cnt = 0

output = {}
for i in range(original_layers):
    for k in ckpt:
        if ('layers.' + str(i) + '.') in k:
            output[k.replace(('layers.' + str(i) + '.'), ('layers.' + str(layer_cnt) + '.'))] = ckpt[k]
    layer_cnt += 1
    if (i+1) % split == 0:
        for k in ckpt:
            if ('layers.' + str(i) + '.') in k:
                if 'down_proj' in k or 'o_proj' in k:
                    output[k.replace(('layers.' + str(i) + '.'), ('layers.' + str(layer_cnt) + '.'))] = torch.zeros_like(ckpt[k])
                else:
                    output[k.replace(('layers.' + str(i) + '.'), ('layers.' + str(layer_cnt) + '.'))] = ckpt[k]
        layer_cnt += 1
    
assert layer_cnt==layers
for k in ckpt:
    if not 'layers' in k:
        output[k] = ckpt[k]

torch.save(output, output_path)


实验细节

数据由代码和数学组成,其中代码数据采用The-Stack-Dedup数据集中Python语言部分共22B Token,数学数据采用Proof-Pile-2数据集中AlgebraicStack、OpenWebMath和ArXiv部分共55B,详细如下表所示。

图片

数据分布

基础模型为LLaMA2-7B模型,通过块扩展方法将32层模型扩展到40层,其中 、 、 ,每个组从4个Transformer块扩展到5个Transformer块。

对于代码和数学数据进行增量预训练,批量大小为1024,序列最大长度为4096,预热比率为6%,学习率为2e-4,采用余弦学习率调度器,BF16混合精度训练,权重衰减为0.1。使用16个NVIDIA H800 GPU进行了15900个步骤的训练,大约耗费2830个GPU/小时。

在ARC、HellaSwag、MMLU、TruthfulQA、Winogrande、GSM8K、GSM8K-PoT、HumanEval、MBPP等多个评测数据集中进行评测,可以看出,在保持通用任务能力不下降的情况下,数学和代码能力较原始LLaMA2-7B模型有很大提升。

图片

图片

讨论分析

对比块扩展方法与正常训练和Lora方法之间的区别,采用TRACE基准利用总体性能(OP)和逆向转移(BWT)指标进行评估。,如下表所示,块扩展方法整体提升较大。

图片

对比块个数对块扩展方法的影响,进行了不同个数块的实验,并且对比了MoE的方法,训练损失如下,MoE方法的损失下降程度与添加四个块相当。

图片

在代码和法律(16.7B)领域数据下进行增量预训练,在通用任务以及领域任务上比较不同个数块之间的差异,同时比较扩展块全部添加到模型底部或顶部之间的差别,如下所示。可以发现块个数为8时效果最佳,并且不能直接将扩展块全部堆积在头部或尾部,需要分开插入。

图片

写在最后

该方法主要通过增加恒定块扩展模型层数,使模型在增量训练过程中仅训练新增层、冻结原始层,保持模型原有能力,防止模型出现灾难性遗忘现象。

但有两点存疑:

  • 目前来说mistral要好于llama,为啥不用mistral进行实验

  • 不用恒定块,性能会差多少

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

大模型(LLMs)增量预训练篇 本文详细介绍了大模型(LLMs)增量预训练的各个方面,包括模型底座选型、数据收集、数据清洗、训练框架选择、训练流程、数据量需求、loss变化、学习率设置、warmup_ratio设置、warmup步数影响、学习率大小影响以及在初始预训练中使用Rewarmup的影响。通过这些方法,增量预训练在提高预训练模型在新任务上的性能方面展示了巨大的潜力。 阅读详情

相关推荐

微调实操一: 增量预训练(Pretraining)

《微调入门篇:大模型微调的理论学习》我们对大模型微调理论有了基本了解,这篇结合我们现实中常见的场景,进行大模型微调实操部分的了解和学习,之前我有写过类似的文章《实践篇:大模型微调增量预训练实践(二)》利用的MedicalGPT的源码在colab进行操作, 由于MedicalGPT代码比较难以理解,而且模型只能从hugging face上下载,对于一些国内服务器无法访问,我重构了代码,让训练代码更有可读性,并参考LLAMAFactory的项目,增加了modelscope上下载模型,轻松在国内服务器运行.

youbingchen的博客 6993

基于llama模型进行增量预训练

大家知道AI模型是怎么训练出来的吗?AI模型的训练训练过程分为如下三个阶段第一个阶段叫做无监督学习(PreTraining),就是输入大量的文本语料让GPT自己寻找语言的规律, 这样一个巨大的词向量空间就形成了,但是话说的漂亮并不一定正确。第二个阶段叫做监督学习(Supervised Fine-Tuning,也叫微调),就是人工标注一些语料,教会GPT什 么该说,什么不该说。(训练数据集)

yuyangchenhao的博客 1万+

企业微信-审批控件中的外部选项的应用全流程完美解决方案

完美解决企业微信所有JS-SDK调用问题 完美解决苹果和PC端不适配的问题

qq_45195039的博客 5882

大模型增量预训练新技巧-解决灾难性遗忘

该方法主要通过增加恒定块扩展模型层数,使模型在增量训练过程中仅训练新增层、冻结原始层,保持模型原有能力,防止模型出现灾难性遗忘现象。但有两点存疑:目前来说mistral要好于llama,为啥不用mistral进行实验不用恒定块,性能会差多少。

AI生成式技术曾小健 1737

ECU-TEST 快速入门

ECU-TEST 是由位于德国德累斯顿的TraceTronic公司开发的一款用于嵌入式系统测试验证软件工具。自从2003年首次发布ECU-TEST ,该软件成为了汽车ECU开发的标准工具 ,同时也逐步成为了重型机械和工业自动化开发的标准工具 。该软件是起源自于一个控制单元的系统化测试的项目研究,从而为从德累斯顿工业大学脱离出来的TraceTronic公司奠定了基础。ECU-TEST旨在完成测试案例的规范化、评估、求解和归档。得益于该软件包含大量的自动化测试方法使得测试案例的所有必要功能如创建、求解和评估

wangying202的博客 1万+

Ubuntu 18.04下Freesurfer 7.2.0安装全攻略:从下载到环境配置一步到位

本文详细介绍了在Ubuntu 18.04系统上安装Freesurfer 7.2.0的完整流程,包括系统准备、依赖安装、下载解压、环境配置、许可证获取及性能优化。Freesurfer作为神经影像分析的重要工具,支持皮层重建和体积分割等复杂任务,适用于阿尔茨海默症等神经系统疾病研究。指南还提供了常见问题解决方案和实际应用案例,帮助用户快速搭建高效的神经影像分析平台。

omega的博客 996

多模态大模型持续学习突破:Unifier框架如何解决多场景灾难性遗忘难题

要理解Unifier框架的创新价值,我们首先需要了解MLLMs的基本架构和发展历程。多模态大模型通常由多个单模态编码器和一个核心的大语言模型组成。这些模型通过两阶段训练流程实现多模态理解:首先是多模态对齐预训练,将各模态的特征映射到统一的文本嵌入空间;然后是多模态指令微调,提升模型在具体任务上的指令跟随和推理能力。从技术演进的角度看,对话系统经历了从早期的基于统计的NLM模型,到预训练语言模型(PLM),再到如今的大规模预训练语言模型(LLM)的飞跃。

深耕互联网架构与AI领域多年,专注大模型工程化、云原生架构、AI驱动系统,分享实战经验、前沿技术和架构方法论。每周产出深度长文+技术短文,涵盖大厂案例、论文解读与工程实践。拒绝水文,只讲干货。关注我,与一线架构师共同探索技术本质。 2020

STM32实战:用定时器触发ADC+DMA双缓冲实现电机电流采样(附避坑指南)

本文详细介绍了如何利用STM32的定时器触发ADC注入组采样,结合DMA双缓冲机制实现电机电流的高效采样。通过PWM触发和双缓冲架构,解决了开关噪声干扰、实时性要求和数据一致性等核心挑战,显著降低CPU负载并提升采样精度。附有完整的代码示例和避坑指南,适用于无人机电调、工业伺服驱动器等高精度电机控制场景。

weixin_33737134的博客 520

大模型微调过程中如何避免灾难性遗忘?【大模型行业应用落地系列】

灾难性遗忘现象是在连续学习多个任务的过程中,学习新知识的过程会迅速破坏之前获得的信息,而导致模型性能在旧任务中急剧下降。由于大模型的研究应用逐渐往微调等增量学习的方向深入,灾难性遗忘的问题开始被人们所认识和关注,在业界进行了不少研究和实验,可以总结出一些经验。暂时来看,经过实验验证的方法有如下几个:1.低秩适应LoRA方法是一种高效的微调方法,其原理是保留大模型的原始权重不变,从新数据中学习的知识只更新到小得多的附加权重矩阵中。只是目前来看也常常出现灾难性遗忘的现象。

xxue345678的博客 3846

Vue3 - Element Plus 表格组件 el-table “表格行数据中又嵌套了二维对象数组“,按平级循环渲染(嵌套数组视为同级行数据), 对嵌套的数组循环展示为表格,智能合并行或列详细教程

vue3,nuxt3,element-plus,table表格组件,el-table,vue3element表格组件,数据中有二维数组怎么遍历循环显示,表格数据带二级数组怎么循环渲染显示,表格数据中存在一个数组要怎么才能显示到表格,el-table表格合并详细教程示例,table表格如果对象里面还有对象数组那该怎么去渲染,平常都是数组中一个对象渲染成一行,每行中还有嵌套数组怎么办,每个行数据下还有一个数组怎么显示,怎么把表格相同的数据合并为一行,合并上下两行相同数据单元格,合并行或列如果遇到相同单元格就合

🏆 前端领域优质创作者 1万+

基于深度学习的野生菌菇检测识别分类系统(YOLOv8 + UI界面 + 数据集)

随着深度学习技术的迅猛发展,计算机视觉领域的应用得到了广泛的关注。野生菌菇的检测与识别是一个复杂而又有趣的问题,涉及到物体检测、图像分类以及自然语言处理等技术。本文将介绍如何基于YOLOv8模型,结合自定义UI界面与数据集,构建一个高效且精确的野生菌菇检测识别分类系统。首先,我们将介绍YOLOv8的原理与特点,然后详细描述如何构建和训练野生菌菇识别模型,并介绍如何为该系统设计UI界面,最终形成一个完整的系统。本文内容包括代码实现、模型训练及数据集准备等,旨在为有类似需求的开发者提供参考和帮助。目录摘要目录。

YOLO 1549

AI大模型在连续学习中真的遗忘了吗?重新审视基于预训练语言模型的增量学习

增量学习(IL)一直是计算机视觉和自然语言处理(NLP)领域长期存在的问题。近年来,随着大语言模型(Large Language Model, LLM)在各种 NLP 下游任务中取得了显著进展,将 LLMs 作为骨干网络在 NLP 领域的增量学习研究中已成为一种常见做法。 大多数研究假设灾难性遗忘是实现优越增量学习性能的最大障碍,并提出了各种技术来克服这一问题。然而,我们发现这一假设存在问题。 具体而言,我们回顾了在四个分类任务(文本分类、意图分类、关系抽取和命名实体识别)下的表现,并在两种最流行的增量学习

嘴巴吃糖了 1181

樽海鞘优化算法详解:原理、实现与应用

本文详细介绍了樽海鞘优化算法(SSA)的原理、实现与应用。该算法模拟樽海鞘链式群体行为,将优化问题解空间映射为群体移动空间,通过领导者引导和追随者跟随的协作机制寻找最优解。文章从生物特性、数学模型到Python代码实现进行了系统阐述,包括种群初始化、位置更新公式和收敛因子等核心要素,并展示了算法在函数优化等领域的应用潜力。该算法具有结构简单、参数少、实现容易等特点,在多种优化问题上表现良好。

qq_42212808的博客 647

灾难性遗忘:神经网络持续学习的核心挑战与解决方案

灾难性遗忘(Catastrophic Forgetting)是机器学习领域长期存在的一个重要问题,它指的是神经网络在学习新任务时快速丢失已获得的旧任务知识的现象。这一问题最早由认知心理学家Michael McCloskey和Neal J. Cohen于1989年在研究人类记忆机制时提出,后来被引入到神经网络领域。灾难性遗忘不仅影响了模型在持续学习(Continual Learning)环境下的性能,也对实际应用中模型的适应性和稳定性构成了严峻挑战。

拒绝AI玄学,只聊真技术▲ 2291

深入理解 DDR5 Bank Group 与并行调度机制

Bank Group架构和并行调度机制,是DDR5性能跃升的核心秘密!理解它们才能写出高效调度程序,设计出性能强劲又稳定的DDR5系统。🎯记住:Bank Group不是简单的分组,而是高速并行的“魔法钥匙”,巧用它,你的DDR5设计将爆发惊人性能!

weixin_43199439的博客 318

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【AI算法工程师面试指北】大模型微调中的灾难性遗忘该如何避免?

在大模型微调(Fine-tuning)过程中,**灾难性遗忘(Catastrophic Forgetting)**是一个关键挑战,尤其当模型需要在保留预训练阶段所学通用知识的同时,适应新任务或领域时。对于数十亿到数千亿参数的大模型,这种更新方式风险极高——即使是微小的参数变化,也可能通过深层网络的传播效应,对全局知识产生连锁破坏。微调时,若对参数进行大范围更新,可能会“覆盖”或“破坏”旧知识的存储,导致模型“遗忘”原始能力。当模型在微调(学习新任务)时,过度修改了预训练阶段学到的核心知识,导致其在。

专注:太空算力、AI infra、异构调度、大模型成本工程 989

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

大模型在连续学习中真的遗忘了吗?重新审视基于预训练语言模型的增量学习

增量学习(IL)一直是计算机视觉和自然语言处理(NLP)领域长期存在的问题。近年来,随着大语言模型(Large Language Model, LLM)在各种 NLP 下游任务中取得了显著进展,将 LLMs 作为骨干网络在 NLP 领域的增量学习研究中已成为一种常见做法。大多数研究假设灾难性遗忘是实现优越增量学习性能的最大障碍,并提出了各种技术来克服这一问题。然而,我们发现这一假设存在问题。

m0_63171455的博客 1155

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

灾难性遗忘

我将非常详细地解释**灾难性遗忘(Catastrophic Forgetting)**的机制、成因以及其在深度学习中的具体表现。当前LLM的高效调参技术(如LoRA、MoE)均与此问题密切相关,建议结合代码实践(如Hugging Face PEFT库)加深理解。这一概念最早由McCloskey & Cohen(1989)在研究人类记忆时提出,后来被广泛应用于神经网络领域。灾难性遗忘(Catastrophic Forgetting)是指神经网络在学习新任务时,灾难性遗忘的本质是神经网络在。

dingxingdi的博客 825

大模型在连续学习中真的遗忘了吗?重新审视基于预训练语言模型的增量学习...

论文题目:Learn or Recall? Revisiting Incremental Learning with Pre-trained Language Models收录会议:ACL 2024, Long Paper, Oral论文链接:https://aclanthology.org/2024.acl-long.794/背景增量学习(IL)一直是计算机视觉和自然语言处理(NLP)领域长期存...

Paper weekly 850

最新综述 | 万字长文带你入门增量学习

作者|派派星 编辑|CVHub点击下方卡片,关注“自动驾驶之心”公众号ADAS巨卷干货,即可获取点击进入→自动驾驶之心【全栈算法】技术交流群导读增量学习(Incremental Learning),亦称为持续学习(Continual Learning)或终身学习(Life-Long Learning),是一种机器学习方法,它允许模型通过对新数据进行持续学习而不是重头训练整个模型。这种方法允...

CV_Autobot的博客 2万+

灾难性遗忘?大模型持续学习与多任务训练方案:平衡任务冲突与知识保留的实战方法

灾难性遗忘指的是神经网络在学习新任务时,表现出无法有效保留旧任务的能力。换句话说,模型在适应新任务时会忘记之前学到的东西,从而导致原本已经学得很好的任务性能急剧下降。这在深度学习中尤为严重,因为神经网络通常具有较强的任务特定性,它们对于新任务的快速适应可能以牺牲已有任务的表现为代价。大规模模型的持续学习和多任务训练面临的灾难性遗忘和任务冲突问题,需要从模型架构、正则化策略、任务管理等多方面进行综合考虑。

一碗黄焖鸡三碗米饭的博客 1730

【大模型预训练】25-领域自适应训练:垂直领域数据的增量预训练策略

领域自适应训练的核心优势在于其高效性和灵活性。相比于从头开始训练一个全新的模型,增量预训练可以节省大量的计算资源和时间。同时,它还能够避免模型在获取新知识的过程中,遗忘原有的知识,即所谓的"灾难性遗忘"问题。

rengang66的博客 1014
上一篇: LLamaFactory:当下最容易上手的大模型微调工具
下一篇: 本地运行自己的OpenAI-大模型sllama3.1来了
爱喝白开水a
博客等级 码龄3年 6793粉丝 763原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值