最近,一篇名为《To Code, or Not To Code? Exploring Impact of Code in Pre-training》的论文引起了广泛关注。该论文深入研究了在大型语言模型(LLMs)的预训练过程中,包含代码数据的影响。论文的主要观点是,即使对于非专门设计用于代码的模型,在预训练数据中包含代码也已成为一种常见的做法,并且对模型的总体性能有着显著的影响。
论文首先回顾了当前的实践情况,指出在LLMs的预训练中,代码数据通常被视为一种重要的数据源。然而,尽管业界普遍认为代码数据对模型性能至关重要,但关于其具体影响的研究却相对有限。因此,论文的作者决定系统地研究代码数据对模型性能的影响,特别是对非代码任务的影响。
为了进行这项研究,作者进行了广泛的消融实验,并评估了各种自然语言推理任务、世界知识任务、代码基准测试以及不同参数规模(从470M到2.8B)的模型在LLM-as-a-judge赢得率方面的性能。结果显示,在所有设置中,代码数据都被证明是实现超越编码任务的泛化能力的关键构建块。
具体而言,与仅使用文本数据进行预训练相比,添加代码数据导致自然语言(NL)推理性能相对提高了8.2%,世界知识性能提高了4.2%,生成赢得率提高了6.6%,代码性能提高了12倍。这些结果表明,在预训练过程中投资于代码质量和保留代码数据具有积极的影响。
然而,尽管这些结果令人鼓舞,但也有一些潜在的局限性需要考虑。首先,该研究主要关注的是代码数据对模型性能的积极影响,而没有充分探讨可能存在的负面影响。例如,如果代码数据的质量较差或与模型的预期用途不相关,它可能会对模型的性能产生负面影响。
其次,该研究主要关注的是预训练过程中代码数据的影响,而没有充分考虑其他因素,如模型架构或训练策略,也可能对模型性能产生影响。因此,未来的研究可能需要更全面地考虑这些因素,以更全面地了解代码数据在LLMs预训练中的作用。