新一代模型微调方案LLama-Pro ,快来围观!!!

❝ 大家好,我是 Bob! 😊 一个想和大家慢慢变富的 AI 程序员💸 分享 AI 前沿技术、项目经验、面试技巧! 欢迎关注我,一起探索,一起破圈!💪

Y

LLAMA PRO论文笔记

直达链接:

摘要

这篇论文介绍了一种名为LLAMA PRO的新型后预训练方法,用于增强大型语言模型(LLMs)在特定领域的性能,同时保持其原有的通用能力。通过扩展Transformer块来增加模型的深度,从而在不牺牲原有性能的情况下,提升模型在编程、数学和一般语言任务中的表现。LLAMA PRO模型是在LLAMA2-7B的基础上通过块扩张方法构建的,并在编程、代码和数学方面表现出色。此外,本文还介绍了一种指令版的LLAMA PRO-INSTRUCT,它在各种基准上达到了先进的性能。实验结果表明,LLAMA PRO不仅在通用语言任务上保持了高水平的表现,而且在编程和数学任务上的性能也得到了显著提升。

先前微调方法的不足

之前的微调方法,如指令调优(Instruction Tuning)和参数高效调优(Parameter-Efficient Fine-Tuning),如LoRA,虽然能够增强大型语言模型(LLMs)在特定领域的性能,但也存在一些缺点:

  • 指令调优(Instruction Tuning):这种方法通常需要大量的指令数据来进行调优,以产生高质量的输出。但是这种方法需要很高的计算资源。
  • 参数高效调优(Parameter-Efficient Fine-Tuning):如LoRA等方法虽然能够以较低的计算成本适应预训练模型到新的领域,但这些方法通常在预训练阶段之后应用,可能会导致模型在适应新领域的同时,损失一部分原有的通用能力。

LLAMA PRO 架构

LLaMA PRO通过在现有的LLM中添加额外的Transformer块来增加模型的深度,这些块在初始化时被设置为零,并在domain-specific语料库上进行微调。这种方法使得模型能够在学习新知识的同时,避免了对原有知识的遗忘。

此外,LLaMA PRO还采用了指令跟随(Instruction Following)技术,通过大约80M tokens的supervised instruction tuning,进一步增强了模型的能力。这种技术使得模型能够更好地理解和执行人类的指令,从而在各种任务中表现出更好的性能。

image

如图(a)所示,从一个大型的语言模型(LLM)开始,该模型在庞大的未标注语料库上进行了预训练,从而获得了强大的通用能力。为了方便起见,文章选择了现成的LLaMA2。(b) 采用了骨干扩展,并使用特定领域语料库对扩展的身份块进行了微调,同时冻结了从基础模型继承的块。经过后预训练的模型可以像往常一样用于指令调优。

具体实现

image

  1. 模型扩展:在现有的LLaMA模型中,每组Transformer块之后添加一个Identity Block(身份块,如上图)。这些块在初始化时被设置为零,以确保模型在扩展后保持相同的输出。
  2. 分组和复制:将原始模型的Transformer块分成多个组,对于每个组,创建原始块的上层副本(即身份块),并将其堆叠在原始组之上。这个过程是逐层进行的,以保持Transformer模型的结构特性。
  3. 身份块定义:身份块被定义为恒等函数,即对于任何输入,身份块输出的值与输入相同。这样可以确保在添加新块后,模型的输出行为不会改变。
  4. 初始化:新添加的块中的线性层被初始化为零,以实现身份映射。这样,在训练过程中,这些新块可以学习新的知识,而不会影响或覆盖原有的知识。
  5. 微调:在添加新块之后,只对新增的块进行微调,而保持原始的块冻结。这样可以确保模型在增强特定领域能力的同时,不会牺牲其原有的通用能力。
  6. 训练和优化:使用domain-specific的语料库对扩展后的模型进行微调。在这个过程中,只更新新添加的块,而原始的块保持不变。

image

效率和效果

image

如图所示,横轴为Code Tasks Avg,纵轴为Language Tasks Avg,圆点的尺寸与训练的令牌数量成正比。

不同训练策略评估结果的比较,报告了在通用任务和法律特定任务上的表现。可以看出Add 8 Block这个超参数下平局分数最高。

Bob 的产品

1.【Bob 的 AI 成长陪伴群】

🔴AI 变现项目、AI 前沿技术、NLP 知识技术分享、前瞻思考、面试技巧、找工作等

🔴 个人 IP 打造、自媒体副业、向上社交、以及我的日常生活所见所闻,所思所想。

相关推荐
yzzzzzzzzzzzzzzzzz1 小时前
leetcode热题——组合
算法·回溯·组合问题
RTC老炮1 小时前
webrtc弱网-QualityScaler 源码分析与算法原理
人工智能·算法·webrtc
码破苍穹ovo6 小时前
堆----1.数组中的第K个最大元素
java·数据结构·算法·排序算法
愤怒的小鸟~~~6 小时前
c语言创建的一个队列结构(含有这个头指针和这个尾指针的结构具有一定的参考价值)
c语言·开发语言·算法
Joker-01118 小时前
深入 Go 底层原理(十二):map 的实现与哈希冲突
算法·go·哈希算法·map
金融小师妹8 小时前
AI量化模型解析黄金3300关口博弈:市场聚焦“非农数据”的GRU-RNN混合架构推演
大数据·人工智能·算法
金融小师妹9 小时前
基于LSTM-GRU混合网络的动态解析:美联储维稳政策与黄金单日跌1.5%的非线性关联
大数据·人工智能·算法
白日梦想家-K9 小时前
题单【模拟与高精度】
开发语言·c++·算法
重生之我是Java开发战士9 小时前
【C语言】内存函数与数据在内存中的存储
c语言·开发语言·算法
roman_日积跬步-终至千里10 小时前
【机器学习】“回归“算法模型的三个评估指标:MAE(衡量预测准确性)、MSE(放大大误差)、R²(说明模型解释能力)
算法·机器学习·回归