专栏名称: 新智元
智能+中国主平台,致力于推动中国从互联网+迈向智能+新纪元。重点关注人工智能、机器人等前沿领域发展,关注人机融合、人工智能和机器人革命对人类社会与文明进化的影响,领航中国新智能时代。
目录
相关文章推荐
防骗大数据  ·  妈!你还在跟着炒股导师赚钱吗? ·  昨天  
城事导航  ·  男子连续开车10小时,差点截肢! ·  昨天  
中国安全生产网  ·  2月!这些安全新规标准开始实施 ·  3 天前  
51好读  ›  专栏  ›  新智元

英伟达最新技术分享:手把手教你用Llama 3.1合成数据改进模型!附代码

新智元  · 公众号  ·  · 2024-07-29 13:15

正文



新智元报道

编辑:乔杨 好困
【新智元导读】 适逢Llama 3.1模型刚刚发布,英伟达就发表了一篇技术博客,手把手教你如何好好利用这个强大的开源模型,为领域模型或RAG系统的微调生成合成数据。

Epoch AI上个月刚刚发文 预言「数据墙」迫近 ,结果 英伟达转头就甩出了340B开源巨兽Nemotron

真实数据稀缺可能不再是问题了,Nemotron 9T token的预训练预料中,98%都是合成数据。

也许你还对合成数据存在顾虑,或者不知道如何应用LLM驱动数据生成。或许,英伟达的这篇博客可以提供答案。

原文地址:https://developer.nvidia.com/blog/creating-synthetic-data-using-llama-3-1-405b/?linkId=100000275486093

首先我们需要理解,用LLM合成数据的本质究竟是什么?

合成数据并不是「从无到有」地创造新信息,而是对现有信息进行转换,生成不同的变体。

实际上,合成数据在AI领域的应用已经有十多年的历程,比如物体检测或分类系统中曾经的数据增强技术。

那么,LLM带来了什么新变化呢?

从「需求端」来看,由于模型需要大量训练语料,合成数据的动机被大大增强。

而在「供给端」,生成式语言模型也为合成数据技术带来了质的改变。

用合成数据微调基座模型,可以更好地应用于实际场景。例如,在金融领域改进风险评估、在零售领域优化供应链、在电信领域提升客户服务,以及在医疗领域改善患者护理等等。

尤其是405B开源巨兽Llama 3.1最近正式上线,既可用于批处理和在线推理,也可以作为基座模型,进行特定领域的专门预训练或微调。

尤其是考虑到Llama 3.1有如此大的参数规模,加上丰富的15.6T token训练数据,非常适合用于数据生成。

这篇博客文章将介绍几个合成数据的生成与应用案例,并就其中一个进行深入探讨。

  • 合成数据的生成是推动GenAI在特定领域应用的关键工作流程

  • 将最新的Llama 3.1与英伟达Nemotron-4 340B奖励模型配合使用,非常适用于生成合成数据

  • 要让LLM生成基于最新信息的有根据的响应,构建RAG流程十分重要,而且模型响应的准确性取决于流程的质量。

LLM合成数据如何应用于GenAI

改进语言模型

要通过合成数据来微调模型,大致有两种方法——知识蒸馏(knowledge distillation)和自我改进(self-improvement)。

知识蒸馏是将大模型的能力转移到较小模型的过程,但不是简单地在同一个数据集上训练两个模型,因为较小模型很难学习到底层数据的准确表征。

在这种情况下,我们可以先让大模型完成任务,再使用这些数据指导小模型进行。

自我改进则是让同一个模型评判自己的推理过程,常被用于进一步磨练模型的能力。

让我们来看看如何实现这一目标。训练语言模型通常包括三个步骤:预训练、微调和对齐(alignment)。

预训练

预训练通常需要极其庞大的语料库,使模型了解语言的一般结构。

Llama 3.1、GPT-4这种通用LLM,一般需要互联网规模的数据。而特定领域的LLM(如几何学、放射学、电信行业等)则需要注入相关的领域信息,这个过程被称为领域自适应预训练(Domain Adaptive Pretraining,DAPT)。

除了要贴近相关领域,另一种在预训练阶段使用合成数据的例子当属Phi-1.5模型,目的是注入逻辑推理能力。

微调

掌握了语言的一般结构后,下一步就是微调,让模型更好地遵循指令、完成特定任务。

比如,要让模型提高逻辑推理能力、实现更好的代码生成和函数调用,或者提升阅读理解类任务的表现,都可以通过微调来实现。

Self-Instruct、WizardCoder、Alpaca等模型都通过创建特定领域的数据并进行微调,来定向提升模型能力。

对齐

最后,我们希望确保模型响应的风格和语气与用户期望一致,例如听起来像对话、具有适当的详细程度、复杂性、一致性等。

可以创建一个包含指令模型(instruct model)和奖励模型(reward model)的流水线来实现这个需求。

先让模型对同一问题创建多个响应,然后让奖励模型对这些相应的质量进行反馈。这种方法属于从AI反馈中进行强化学习(Reinforcement Learning from AI Feedback, RLAIF)。

改进其他模型和系统

除了改善语言模型本身,合成数据还可以应用于LLM邻接模型(LLM-adjacent model)以及LLM驱动的流水线。

最经典的例子就是检索增强生成(Retrieval Augmented Generation,RAG),先用嵌入模型来检索相关信息,再让语言模型生成最终答案。

在这个过程中,我们可以使用LLM来解析底层文档和合成数据,从而评估并微调嵌入模型。

类似于RAG,任何智能体(Agentic)流水线都可以被评估,其组件模型也可以被微调,实现方式就是用LLM驱动的智能体来构建模拟。

这些模拟还可以用于研究行为模式,此外,也可以在LLM中设定特定角色,以针对特定任务进行大规模数据生成。

使用合成数据评估RAG

为了更好地理解上述讨论,我们来思考一个基本的流程,应用于一个具体的用例——为检索过程生成评估数据。

下述流程的实现代码已经上传至GitHub。

项目地址:https://github.com/NVIDIA/NeMo-Curator/tree/main/tutorials/synthetic-retrieval-evaluation

要创建用于评估检索流程的数据,主要面临以下2个挑战:

  • 多样性:问题不应只关注信息的单一方面或仅包含提取性问题

  • 复杂性:生成的问题应需要一些推理或多个证据来回答

我们将重点关注多样性,但 为了探索复杂性角度——关键是找到具有重叠信息点的内容块。找到重叠信息的几种方法包括计算句子级语义的Jaccard相似度,并利用长上下文模型找到同一文档的不同块之间的关联。

多样性源自不同的视角,比如考虑如下文本:

对于同一篇文档,金融分析师可能对两家公司合并前后的财务状况感兴趣,法律专家可能关注公司面临的来自FTC、欧盟和其他方的法律审查,记者则希望了解事实要点。

所有这些都是有效的视角和用户角色。由于他们以不同的视角看待相同的信息,因此评估流程也需要适应这些视角。

因此,让我们设计一个评估流程,该流程以文档和用户角色作为输入,并以符合角色的语气输出问题。

图1. 三步流程的概述:生成用于评估检索过程的合成数据

如图1所示,这个评估流程有三个主要步骤。

步骤1:生成所有可能的问题

这些问题都是用户角色可能感兴趣的。

步骤2:筛选出相关的问题

从生成的问题中筛选出最相关和有价值的问题。

步骤3:引入用户角色的写作风格

将筛选出的问题转换为符合用户角色写作风格的形式。

通过这三个步骤,可以确保不同用户角色获得他们所需的信息,并以他们熟悉的方式呈现。

步骤1:生成问题

在生成问题之前,我们需要先读取文档并将其分成若干块(chunk)。

然后,让LLM从给定的文本块中,为每个用户角色提取感兴趣的点。







请到「今天看啥」查看全文