Skip to content

如何对Llama3进行持续预训练以提升其中文能力

1. 背景与问题

近年来,大语言模型(LLM)在人工智能领域取得了显著进展。然而,由于大多数LLM主要在英语语料上进行预训练,因此在处理中文任务时表现欠佳。此外,Llama3作为一个通用模型,虽然在多项任务中表现优异,但在中文领域和特定科学领域的能力仍有不足。为了解决这些问题,可以通过持续预训练(Continual Pre-training, CPT)来增强Llama3的中文能力,同时保留其原有的其他能力。

2. 持续预训练的总体策略

持续预训练的核心在于通过特定的数据选择和课程设计 (Data Curriculum),提升模型在中文和科学推理方面的能力。具体来说,预训练过程分为两个主要阶段:双语适应阶段合成数据增强阶段

2.1 双语适应阶段

在这个阶段,我们主要通过引入大量高质量的中文语料,使Llama3在保持原有英文能力的同时,增强其在中文任务上的表现。

  1. 数据选择与混合策略

    • 为了平衡中文和英文的能力,设计了基于主题的数据混合策略,将中文和英文的比例设为2:8。
    • 通过训练分类器识别不同语料的主题,结合现有的中文评测标准,如CMMLU和C-Eval,确保模型能够在各个主题领域均衡发展。
  2. 课程设计 (Data Curriculum)

    • 采用基于困惑度(Perplexity, PPL)的数据课程策略,将简单到复杂的中文数据逐步引入训练过程中,确保模型能够稳定地学习中文知识,减少在其他任务上的能力丧失。

2.2 合成数据增强阶段

在完成双语适应训练后,模型的中文能力已经得到显著提升。接下来,我们通过引入合成数据来进一步提升模型在多学科科学领域的推理能力。

  1. 科学推理合成数据生成

    • 基于现有的科学文献和网络资源,生成跨学科的科学问答(QA)对,覆盖数学、物理、化学、生物等九大领域。
    • 这些合成数据通过精心设计的提示模板生成,确保数据的结构和复杂性与实际科学问题相匹配,从而增强模型的科学推理能力。
  2. 代码合成数据生成

    • 在预训练过程中发现,Llama3的编程能力容易受到持续预训练的影响。为此,我们使用了类似的合成数据生成方法,扩展LeetCode数据集,生成新的编程问题及其解决方案,确保模型的代码生成能力得以保留。

3. 实验与效果评估

通过对Llama3的持续预训练,实验结果表明,模型在中文理解和科学推理能力上均取得了显著提升,且在原有的英文任务上表现保持稳定。

  1. 中文能力的提升

    • 在C-Eval和CMMLU评测中,Llama3的性能较原模型提升了8.81分和6.31分,表明经过持续预训练后,其中文理解能力大幅提高。
  2. 科学推理能力的增强

    • 在涉及数学和科学推理的多项评测中,模型的性能也有显著提升,如在MATH和SciEval评测中分别提升了12.00分和4.13分。
  3. 平衡新旧能力

    • 尽管引入了大量中文和合成数据,模型在原有的英文任务上表现依旧稳定,成功避免了灾难性遗忘问题。

4. 实践建议

对于希望提升模型中文能力的初学者,可以参考以下建议:

  1. 数据收集与清洗

    • 从多种来源收集高质量的中文语料,如网页、书籍和论坛,并进行严格的清洗,确保数据的准确性和多样性。
  2. 数据混合与课程设计

    • 使用基于主题和困惑度的混合策略和课程设计,使模型逐步适应新的中文任务,并保持其在其他任务上的表现。
  3. 合理使用合成数据

    • 在科学领域,合成数据可以有效提升模型的推理能力。通过生成高质量的科学和编程问答对,可以增强模型在这些领域的表现。

5. 总结

持续预训练是提升Llama3中文能力的有效方法。通过精心设计的数据策略和课程设计,可以在不影响原有能力的情况下,显著提升模型在中文和科学领域的表现。