论文题目:LLAMA PRO: Progressive LLaMA with Block Expansion
论文链接:https://arxiv.org/pdf/2401.02415.pdf
Github:https://github.com/TencentARC/LLaMA-Pro
概要
研究背景:
大型语言模型(LLMs)在自然语言处理领域表现出色,但在特定领域(如编程、数学、生物医学或金融)的应用中仍存在局限性。为了解决这一问题,需要提出一种有效可扩展的办法,同时能避免灾难性遗忘,即在引入新知识时不损害原有能力。
模型设计:
研究者提出了一种名为“块扩展”(Block Expansion)的方法,通过在预训练的LLM中添加新的Transformer块,并仅使用新语料库来调整这些扩展块,从而有效地改善模型的知识库。在实践中,研究者将预训练的LLaMA2-7B扩展了8个块,创建了LLAMA PRO,这是一个具有8.3亿参数的基础模型,它在编程、编码和推理任务上表现优异。
实验结论:
- 评估和测试:
- LLAMA PRO和LLAMA PRO - INSTRUCT在多个基准测试中进行了评估,包括一般语言任务、编程任务(HumanEval)和数学任务(GSM8K)。
- 评估结果表明,LLAMA PRO在保持通用性能的同时,显著提升了在特定领域的性能。
- 消融研究:
- 为了验证块扩展方法的有效性,研究者还进行了消融研究,比较了不同的训练策略,包括LoRA、顺序微调和块扩展训练。
- 结果显示,块扩展训练在保留原有知识的同时,对新任务的适应性更强。
讨论
1、块扩展方法如何避免灾难性遗忘?
答案: 块扩展方法通过冻结预训练模型中的原始块,仅对新添加的块进行调整。这样,原始块保持其在预训练阶段学到的知识和能力,而新块则专门针对特定领域进行微调。这种方法允许模型在不损害其在一般任务上的性能的同时,增强其在特定领域的能力。
2、 LLAMA PRO的块扩展方法在跨领域应用中的潜力如何?
答案: LLAMA PRO的块扩展方法展示了在跨领域应用中的潜力,特别是在法律领域。通过在法律文档数据集上进行预训练,LLAMA PRO在法律相关的任务上也显示出了良好的性能。这表明块扩展方法不仅适用于编程和数学领域,而且可以扩展到其他专业领域,为开发多领域应用的高级语言代理提供了一种有前景的方法。
3、LLAMA PRO具体训练过程?
答案:
- 预训练基础模型:
- 研究者首先选择了一个预训练的大型语言模型(LLaMA2-7B)作为基础模型。这个模型是在大量未标记的通用语料库上预训练的,因此具有强大的通用能力。
- 预训练过程包括了大规模的无监督学习,这使得模型能够学习到丰富的语言知识和模式。
- 块扩展:
- 在预训练的基础上,研究者通过复制Transformer块来扩展模型。这种扩展是通过在原始模型的每个块后面添加一个身份块(identity block)来实现的,这些新块的线性层被初始化为零,以启用恒等映射。
- 这种设计确保了扩展后的模型在输出上与原始模型保持一致,同时增加了模型的深度。
- 领域特定语料库的微调:
- 研究者使用代码和数学领域的特定语料库来微调新添加的块。这个过程是在冻结原始模型块的情况下进行的,以保持模型的通用能力。
- 微调过程使用了大约80亿个标记,训练了大约2830个GPU小时(使用16个NVIDIA H800 GPU大约7天)。
- 指令遵循训练(SFT) :
-
在块扩展和领域特定微调之后,研究者对LLAMA PRO进行了指令遵循训练(SFT),这是一种全监督的微调方法,涉及到对所有块的完全微调。
-
SFT使用了大约80M个标记,产生了LLAMA PRO - INSTRUCT版本,这个版本在遵循指令方面表现出色。
推荐阅读
- • TinyGPT-V:小而强大,轻量级骨架打造高效多模态大语言模型
- • 2024:ToB、Agent、多模态
- • TA们的RAG真正投产了吗?(上)
- • 2023年最新LLM发展时间线一览(ChatGPT、LLaMA等)
欢迎关注我的公众号“ PaperAgent ”, 每天一篇大模型(LLM)文章来锻炼我们的思维,简单的例子,不简单的方法,提升自己。