“ 标题有点厉害
https://arxiv.org/pdf/2401.02415.pdf
https://github.com/TencentARC/LLaMA-Pro
随着大型语言模型(LLMs)在自然语言处理领域的广泛应用,研究人员正努力提高这些模型在特定领域的性能。本文提出了一种名为“LLAMA PRO”的新型后续预训练方法,通过扩展Transformer块来有效地将新知识注入到LLMs中,同时保留其原有的通用能力。
首先,我们从已有的LLaMA2-7B模型出发,通过增加8个Transformer块 ,构建了一个具有8.3亿参数的基础模型LLAMA PRO。该模型在通用任务、编程和数学方面表现出色。接下来,我们使用开源代码和数学数据对扩展块进行预训练,耗时约2830 GPU小时。最后,我们对LLAMA PRO进行监督指令调整,得到了LLAMA P O- INSTRUCT模型。
如何加transformer块呢? Suppose we have an initial model with L blocks that needs to be expanded to L′ blocks. First, we partition the original L blocks into N groups, with each group containing L/N blocks. For each group, we create identity copies of the top P blocks and stack them on top of each group.
把正常的结构分组,在每个组最顶上堆叠新的transformer block。然后这里有个技巧,初始化的时候让输出对原始的大模型没有影响,如下图,讲linear替换成 zero-linear。
又有新的问题了,反向传播的时候,RMSNorm梯度就变成0了
实验结果表明,LLAMA PRO- INSTRUCT在各种基准测试中取得了优异的成绩,包括通用任务、编程任务(如HumanEval)和数学任务(如GSM8K)。此外,我们还评估了LLAMA P RO- INSTRUCT作为智能代理在各种场景下的表现,重点关注其工具使用能力和对环境及人类反馈的适应性。我们还利用GPT-4自动评估来评估LLAMA P RO作为有效助手的能力。
本文的主要贡献有三个方面:首先,我们提出了一种新颖的后续预训练方法,通过扩展Transformer块实现新知识的注入和原有能力的保留;其次,我们引入了LLAMA PRO和LLAMA PRO- INSTRUCT这两个多功能的大型语言模型,实现了自然语言和编程语言的高效融合;最后,我们在广泛的数据集上对LLAMA PRO系列进行了基准测试,证明了其在传统任务和智能代理任务中的优越性以及在更广泛复杂应用中的巨大潜力。
总之,本文提出的LLAMA PRO方法为整合自然语言和编程语言提供了有价值的见解,为开发能够在各种环境中高效运行的先进语言代理奠定了坚实的基础。
