使用合成指令对 LLM 进行预训练

文摘   2024-08-05 10:43   新加坡  

本文涉及到的详细测试代码和测试步骤放置于:

https://github.com/davidsajare/david-share.git

下的:DeepLearning/Pretrain-on-Synthetic-Instructions,本文中不再赘述代码实现。

欢迎给repo点亮Star,您的点赞是作者持续创作的动力。

一、指令预训练”(Instruction Pre-Training)

https://huggingface.co/instruction-pretrain/instruction-synthesizer

微软提出的一种新的预训练方法,称为“指令预训练”(Instruction Pre-Training),并详细解释了如何生成和使用合成的指令-响应对来预训练大型语言模型(LLMs)。以下是主要内容的总结:

  1. 指令预训练的概念

  • 传统的预训练方法是直接在原始语料上进行预训练,而指令预训练则是通过一个指令合成器生成指令-响应对来增强原始文本。

  • 微软的评估显示,经过指令预训练的LLMs在各种任务上的表现显著优于仅经过标准预训练的LLMs。

  • 指令合成器的工作原理

    • 给定原始文本,指令合成器生成成对的指令和响应,可以生成一对一或少量示例。

    • 微软使用了多个数据集来微调指令合成器,这些数据集涵盖了非常多样的任务和领域。

  • 生成指令的过程

    • 微软从RefinedWeb数据集中抽取了200M片段(200B tokens)的文本样本。

    • 使用指令合成器生成指令-响应对,并将这些对作为原始文本再次输入指令合成器生成更多的示例。

    • 最终生成了200M对指令-响应对,并将其与原始样本混合进行预训练。

  • 实验结果

    • 微软在不同大小的LLMs上进行了预训练实验,结果显示,使用指令预训练的模型在公共基准测试中的表现优于仅使用原始文本预训练的模型。

    • 他们还进行了继续预训练的实验,结果显示指令预训练的优势因任务而异。

  • 使用指令合成器生成数据

    • 微软在Hugging Face Hub上发布了指令合成器,并提供了代码示例。

    • 文章展示了如何使用该代码为金融领域的数据集生成指令-响应对,并将这些对用于训练或继续预训练模型。

  • 结论

    • 微软提出的这种合成指令-响应对的方法目前是最好的,比之前的Ada-instruct方法效果更好。

    • 未来可以通过微调更大的模型来进一步改进指令合成器。目前合成器的模型如下。这个模型的是基于 Mistral-7B 模型构建的。
             

    指令预训练是否可以依据未打标签的数据生成打标签的数据

    微软的指令预训练方法可以用于基于未打标签的数据生成打标签的数据。具体来说,指令合成器可以将原始的未打标签文本转换为成对的指令和响应,从而生成带标签的数据。这种方法可以用于各种任务和领域,包括但不限于问答、文本分类、命名实体识别等。

    以下是一个简要的步骤说明,展示如何使用指令合成器生成打标签的数据:

    1. 准备原始数据

    • 收集未打标签的原始文本数据。例如,金融新闻、社交媒体帖子、技术文档等。

  • 加载指令合成器模型

    • 使用微软发布的指令合成器模型,可以在Hugging Face Hub上找到并下载。

    • 安装必要的依赖库,如vLLM。

  • 生成指令-响应对

    • 使用指令合成器模型对原始文本进行处理,生成成对的指令和响应。这些指令和响应对可以视为打标签的数据。

    • 例如,对于一个金融新闻片段,指令合成器可能生成一个问题(指令)和对应的答案(响应),从而为该片段打上标签。

  • 保存生成的数据

  • 将生成的指令-响应对保存为一个新的数据集,可以用于后续的模型训练或评估。

    三、指令预训练是不是可以完全替代人工打标签

    虽然微软的指令预训练方法可以生成大量的问答对,从而减少了人工数据打标签的需求,但完全不需要人工数据打标签的情况还是不太现实的。以下是一些需要考虑的因素:

    1.生成数据的质量和准确性

    自动生成的数据可能不如人工标注的数据准确。生成的问答对可能包含错误或不准确的信息,特别是在处理复杂或模糊的文本时。因此,人工审核和校正生成的数据仍然是必要的。

    2.领域特定知识

    某些领域可能需要特定的专业知识,自动生成的问答对可能无法完全捕捉到这些细节。例如,医学、法律等领域的文本可能需要专业人员进行标注,以确保数据的准确性和可靠性。

    3.模型的局限性

    尽管指令合成器模型可以生成高质量的问答对,但它们仍然有局限性。例如,模型可能会生成重复的问答对,或者在处理长文本时表现不佳。人工干预可以帮助识别和纠正这些问题。

    4.多样性和覆盖率

    自动生成的问答对可能在多样性和覆盖率上有所欠缺。人工标注可以确保数据集涵盖更广泛的场景和问题类型,从而提高模型的泛化能力。

    5.道德和法律问题

    在某些情况下,自动生成的数据可能涉及道德和法律问题。例如,生成的问答对可能包含敏感信息或侵犯隐私。人工审核可以帮助识别和处理这些问题。

    6.模型训练和评估

    即使使用自动生成的数据进行初步训练,仍然需要人工标注的数据进行模型的评估和验证。这样可以确保模型在真实世界中的表现。

     因此,最佳的做法是结合自动生成和人工标注的方法,以获得高质量的训练数据。这样可以既利用自动生成的效率,又确保数据的准确性和可靠性。

    大魏分享
    https://github.com/davidsajare/david-share.git
     最新文章