Llama 3.1 如何革新 AI 合成数据生成技术
最近,Meta 公司发布了功能强大的开放型大型语言模型Llama 3.1 405B。该模型既适用于批量处理也适用于在线推理,并且可以作为特定领域预训练或微调的基础。考虑到模型的规模及其训练所使用的数据量,它非常适合用于合成数据的生成。本文将探讨合成数据生成的几个应用案例,并深入讨论其中之一。
合成数据技术概述
合成数据技术并不是创造全新的信息,而是通过转换现有信息来生成不同的变体。在过去的十多年里,合成数据技术已被广泛应用于提升各类模型的精确度——无论是通过变换图像来优化物体检测模型,还是加强信用卡欺诈检测,亦或是提升 BERT 模型在自动问答方面的表现。
随着大型语言模型(LLMs)的出现,生成合成数据的动力和技术都得到了极大的加强。各行各业的企业正在利用合成数据来微调基础 LLMs,以满足各种应用场景的需求,例如:
- 金融领域: 改善风险评估,模拟极端市场条件下的交易行为。
- 零售供应链: 优化库存预测,生成多样化的客户咨询记录。
- 电信领域: 提升客户服务自动化水平,模拟复杂的网络故障场景。
- 医疗保健: 提高病人护理水平,在保护隐私的前提下生成医疗对话数据。
利用 LLM 生成的合成数据来提升语言模型
在调整模型时,业界主要有两种广泛采用的方法——知识蒸馏和自我提升。
知识蒸馏 (Knowledge Distillation)
知识蒸馏是将一个大型模型的能力转移到一个小型模型的过程。这不仅仅是让两个模型在相同的数据集上训练,因为小型模型可能无法学习到底层数据最准确的表示。在这种情况下,我们可以使用大型模型来解决问题,然后用这些数据让小型模型模仿大型模型的行为。这种方法特别适用于将 Llama 3.1 405B 的推理能力迁移到资源受限的边缘设备上。
自我提升 (Self-Improvement)
自我提升则是利用同一个模型来评估和改进自己的推理过程,这种方法通常用于进一步提升模型的能力。这两种方法都可以利用 Llama 3.1 模型来优化更小型的 LLMs,从而在保持性能的同时降低计算成本。
接下来,让我们看看如何实现这一过程。训练一个 LLM 通常包括三个步骤:预训练、微调和校准。
1. 预训练 (Pre-training)
这一步骤涉及使用一个庞大的信息库来训练模型,使其了解语言的通用结构是如何组织的。对于通用的 LLM,这通常是通过互联网规模的数据来完成的;而对于特定领域的 LLM,我们需要将该领域的具体情况融入其中(例如,针对几何学、放射学或电信的 LLM)。这被称为领域自适应预训练(DAPT)。在预训练阶段应用合成数据的另一个例子是 Phi-1.5 模型,该模型使用大型模型来合成数据,以便在预训练阶段培养逻辑推理能力。
2. 微调 (Fine-tuning)
一旦模型经过通用语言结构的训练,下一步就是对其进行微调,使其能够遵循特定的指令。例如,提高模型在阅读理解型问题、逻辑推理、代码生成和函数调用方面的表现,都属于这一类。Self-Instruct、WizardCoder、Alpaca 等技术利用这些方法来创建特定任务的微调数据。通过合成数据,我们可以构建覆盖长尾分布的指令数据集,解决真实数据稀缺的问题。
3. 校准 (Calibration)
最后,我们需要确保 LLM 的响应风格和语调符合用户的期望,比如听起来更会话化,具有适当的详细程度、复杂性、连贯性和其他用户定义的属性。这可以通过使用一个包含指令模型和奖励模型的流程来实现。聊天模型会创建多个响应,然后奖励模型会就响应的质量给出反馈。这种技术属于人工智能反馈的强化学习(RLAIF)范畴。结合 Llama 3.1 和 NVIDIA Nemotron-4 340B 奖励模型,可以生成高质量的模型校准合成数据。
合成数据评估 RAG
由于合成数据的应用范围非常广泛,本文将以合成 RAG 检索生成评估数据进行具体的案例说明。
检索增强生成(RAG)结合了嵌入模型来检索相关信息和 LLM 来生成答案。嵌入模型为文本的语义生成数学表示。我们可以使用 LLMs 来分析底层文档并合成数据,用于评估和微调嵌入模型。
与 RAG 类似,任何代理流程都可以被评估,其组件模型也可以被微调。这可以通过构建 LLM 驱动的代理来进行模拟来实现。这些模拟还可以用来研究行为模式。此外,可以将角色引入 LLMs 以大规模生成特定任务的数据。
为了具体化上述讨论,让我们思考一下上述用例之一的基本流程——为检索生成评估数据。策划评估检索流程的数据的主要挑战包括:




