关于生成式人工智能训练的综合指南 原创

发布于 2025-2-28 08:27
浏览
0收藏

本文讲述LLM开发生命周期的详细技术指南,涉及原始文本预训练、指令调整及人类校准。

大语言模型(LLM)通过引入文本生成、摘要和会话式人工智能等高级应用程序,对自然语言处理(NLP)产生了影响。像ChatGPT这样的模型使用一种叫做“Transformer”的特定神经结构来预测序列中的下一个单词,通过自注意(Self-attention)机制从大量的文本数据集中学习。

本指南分解了训练生成式人工智能模型的逐步建立过程,包括预训练,微调,对齐和实际考虑因素。

训练管道概述

关于生成式人工智能训练的综合指南-AI.x社区

图1:LLM训练管道概述

LLM的训练管道是一个结构化的、多阶段的过程,旨在提高语言理解、执行特定任务的能力,并与人类偏好保持一致。

  • 数据收集和预处理。收集、清理、标记和规范化来自不同来源的大量文本数据,以确保质量。高质量、特定领域的数据提高了事实的准确性,减少了幻觉。
  • 预训练(Pre-training)。这是模型通过自监督学习——一种模型在不需要标记示例的情况下自学文本模式的技术——学习通用语言模式的基础阶段。以下一个令牌预测为例,这一阶段依赖于大量数据集和Transformer架构来构建广泛的语言能力。
  • 指令微调。该模型在较小的、高质量的输入-输出数据集上进行训练,以专注于特定的任务或领域。此指令调优步骤可确保输出更准确且符合上下文。
  • 模型对齐。基于人类反馈的强化学习(RLHF)改进了模型的行为:

a. 奖励模型训练。人类评估人员对输出进行排序以训练奖励模型。

b. 策略优化。LLM需要迭代优化,以配合人类的偏好,道德考虑和用户的期望。

  • 评估和迭代微调。该模型在未见过的数据上进行测试,以评估准确性和一致性等指标。随后可能会进一步微调,以调整超参数或合并新数据。
  • 下游应用程序适应。通过额外的微调或与特定任务框架的集成,训练有素的LLM可以适应现实世界的应用(例如,聊天机器人,内容生成)。

该管道将LLM从通用模型转换为能够有效处理各种任务的专用工具。

1.预训练

预训练是LLM开发的基础阶段,在这个阶段,模型从大量的文本数据中学习通用的语言模式和表示。此阶段教授模型语法规则、上下文单词关系和基本逻辑模式(例如,文本中的因果关系),从而形成其执行各种下游任务的能力的基础。

如何进行预训练

关于生成式人工智能训练的综合指南-AI.x社区

图2:预训练阶段的高级概述

目标

预训练的主要目标是使模型能够预测序列中的下一个标记。这是通过因果语言建模(CLM)实现的,这是一种教授模型预测句子中接下来会出现什么的方法。在这一步中,模型学习仅通过查看过去的标记来生成连贯且与上下文相关的文本。

数据集

预训练需要大量不同的数据集,这些数据集来自书籍、文章、网站和其他公开可用的内容。流行的数据集包括Common Crawl、Wikipedia、The Pile和BookCorpus。这些数据集经常被清理和规范化,以确保在预处理期间使用重复数据删除和标记化等技术进行高质量的输入。长上下文数据被整理以增加模型的上下文长度。

预训练过程

  • 该模型通过因果语言建模来学习预测序列中的下一个标记。
  • 使用交叉熵损失函数(Cross-entropy Loss Function)将模型预测与实际的下一个单词进行比较。
  • 模型参数不断调整,以尽量减少预测误差或损失,直到模型达到可接受的精度水平。
  • 预训练阶段需要大量的计算资源,通常在分布式系统中使用数千小时的GPU来处理有效训练所需的大量数据集。

这是一种自监督学习方法,模型直接从原始文本中学习模式,而不需要手动标记。因此,通过让模型预测下一个标记来消除昂贵的人工注释。

在下面的例子中,我们使用了一个GPT 2模型,该模型以一种自监督的方式在一个非常大的英语数据语料库上进行了预训练,没有人以任何方式对它们进行标记。

Python 
1 import torch
2 from transformers import AutoModelForCausalLM, AutoTokenizer
3
4 # Load the model and tokenizer
5 model = AutoModelForCausalLM.from_pretrained("gpt2")
6 tokenizer = AutoTokenizer.from_pretrained("gpt2")
7
8 input_text = "The capital of France is"
9
10 # Tokenize the input text
11 model_inputs = tokenizer([input_text], return_tensors="pt")
12
13 # Run inference on the pretrained model and decode the output
14 generated_ids = model.generate(**model_inputs, max_new_tokens=25, do_sample=True)
15 print(tokenizer.batch_decode(generated_ids)[0])

正如预期的那样,该模型能够根据其预训练迭代预测下一个标记来完成句子“法国首都是……”。

输出:

The capital of France is the city of Paris which is more prosperous than the other capitals in .(法国的首都是巴黎,它比世界其他首都都繁华。)

然而,当以问题的形式表达时,例如,“法国的首都是什么?”模型无法产生正确的结果,因为在训练的这个阶段,它还不能遵循指令。

Python 
1 text2 = "What is the capital of France?"
2 
3 model_inputs = tokenizer([text2], return_tensors="pt")
4 generated_ids = model.generate(**model_inputs, max_new_tokens=25, do_sample=True)
5 print(tokenizer.batch_decode(generated_ids)[0])

输出:

What is the capital of France? In our opinion we should be able to count the number of people in France today. The government has made this a big priority(法国的首都是哪里?在我们看来,我们应该能够计算出今天法国的人数。政府已将此作为重中之重。)

预训练的好处

  • 广泛的语言理解能力。通过在不同的数据上进行训练,预训练的模型可以全面掌握语言结构和模式,使它们能够在各种任务中进行推广。
  • 效率。预训练的模型可以用更小的标记数据集对特定任务进行微调,与为每个任务从头开始训练模型相比,节省了时间和资源。
  • 性能。由于能够利用大规模数据集的知识,经过预训练然后进行微调的模型始终优于仅在特定任务数据上训练的模型。

2. 指令微调

指令微调是一种专门的训练技术,可将通用LLM转换为响应灵敏的指令遵循系统。在这里,模型在特定的任务上训练,比如回答问题或总结文本。通过在精心挑选的对(指令、输出)上训练模型,该方法将LLM的文本生成能力与人类定义的任务和会话模式相结合。

训练(指令,输出)样本看起来像这样:

Instruction: What is the capital of Germany?(指令:德国的首都是哪里?)

Response: The capital of Germany is Berlin.(输出:德国的首都是柏林。)

关于生成式人工智能训练的综合指南-AI.x社区

图3:指令微调阶段概述

在下面的示例中,我们从谷歌加载Gemma 2 LLM模型,该模型针对各种文本生成任务(包括问答、摘要和推理)进行指令调优。

Python 
1 from transformers import AutoTokenizer, AutoModelForCausalLM
2 import torch
3
4 # Load Gemma 2 2b instruct model
5 tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-2b-it")
6 model = AutoModelForCausalLM.from_pretrained("google/gemma-2-2b-it")
7
8 # Tokenize input
9 input_text = "What is the capital of France?"
10 input_ids = tokenizer(input_text, return_tensors="pt")
11
12 # Run model inference and decode output
13 outputs = model.generate(**input_ids, max_new_tokens=25, do_sample=True)
14 print(tokenizer.decode(outputs[0]))

这个经过微调的模型能够遵循以下指令:

What is the capital of France? The capital of France is Paris.(法国的首都是哪里?法国的首都是巴黎。)

如何进行指令微调

目标

指令微调通过教学模型来理解和遵循自然语言指令,弥合了LLM基本的下一个单词预测能力和实际任务执行之间的关键缺口。这个过程将通用LLM转换为响应式的、遵循指令的系统,这些系统始终遵循用户命令,如“总结本文”或“为x编写Python函数”。

监督式学习

与预训练不同,预训练在未标记的数据上使用自监督学习,而指令微调则使用带有标记的指令输出对进行监督学习。这个过程包括:

  • 使用明确的指令-反应对进行训练;
  • 更新模型权重以优化后续指令;
  • 在调整响应模式的同时维护模型的基础知识。

数据集

该指令数据集由三个关键部分组成:

  • 指令——自然语言命令或请求。
  • 上下文——可选的上下文或示例。
  • 输出——显示正确执行任务的期望响应。

Instruction: Find the solution to the quadratic equation.(指令:求二次方程的解。)

Context: 3x² + 7x - 4 = 0(上下文:3x²+ 7x - 4 = 0)

Response: The solution of the quadratic equation is x = -4 and x = 1/3.(输出:二次方程的解为x = -4, x = 1/3。)

这些数据集可以通过领域专家的手动管理、使用其他LLM的合成生成或将现有标记数据集转换为指令格式来创建。

微调技术

以下两种主要方法主导着指令微调:

  • 全模型微调更新所有模型参数,以更高的计算要求为代价,为特定任务提供更好的性能。
  • 轻量级适应方法(如LoRA)修改模型的一小部分,而不是重新训练所有内容,从而显著降低内存需求。

指令微调的好处

  • 增强任务泛化。模型开发了元学习(Meta-learning)能力,在没有特定训练的情况下提高新任务的表现。
  • 减少提示工程。经过微调的模型需要更少的提示示例,从而提高部署效率。
  • 控制输出:允许精确定制响应格式和样式。
  • 更好的指令遵循。在模型功能和用户期望之间架起桥梁。

3. 对齐调优

对齐(Alignment)或偏好调优是训练大语言模型(LLM)的关键阶段,以确保模型避免有害或有偏差的响应。这一步超越了提高特定任务的性能——它的重点是通过结合人类反馈或预定义的指导方针,使模型更安全、更有帮助,并与用户保持一致。

为什么对齐很重要

预训练的LLM是在来自互联网的大量数据集上进行训练的,这些数据集可能包含偏见、有害内容或相互矛盾的信息。如果缺乏一致性,这些模型可能会给出令人反感和误导的答案。对齐调优使用人工反馈来过滤有害输出(例如,有偏见或危险的内容),以确保响应符合安全准则。

以下是OpenAI的GPT-4 系统卡(System Card)的一个示例,展示了未对齐的“GPT-4(早期)”模型所带来的安全挑战。

关于生成式人工智能训练的综合指南-AI.x社区

图4:“GPT-4早期”模型的预校准版本的安全风险

GPT-4系统卡强调了使用RLHF对模型进行微调的重要性,以使模型响应与人类对有益和无害的偏好保持一致。它缓解了不安全的行为,并防止模型产生有害的内容和偏见。

对齐的关键方法

DPO论文中的下图说明了最常用的对齐方法:

关于生成式人工智能训练的综合指南-AI.x社区

图5:(左)RLHF工作流显示了人类反馈集成。(右)DPO跳过奖励建模来直接调整响应

基于人类反馈的强化学习(RLHF)

RLHF是一种机器学习技术,旨在使LLM与人类的价值观、偏好和期望保持一致。通过将人类反馈纳入训练过程,RLHF增强了模型产生连贯、有用、合乎道德并与用户意图一致的输出的能力。这种方法有助于ChatGPT和谷歌Gemini等生成模型更安全、更可靠。

RLHF过程包括三个主要步骤:

步骤

描述

结果

人类反馈

注释者根据相关性/伦理对输出进行排序

偏好数据集创建

奖励模型

被训练来预测人类的偏好

质量评分系统

策略优化

通过强化学习进行微调的LLM(例如,PPO)

对齐响应生成

  • 收集人类反馈。人类注释者通过基于相关性、一致性和准确性等标准对模型生成的输出进行排名或评分来评估它们。通常使用两两比较,注释者在两个选项中选择更好的响应。这些反馈形成了反映人类判断的“偏好数据集”。
  • 训练奖励模型。使用偏好数据集训练奖励模型,以预测给定反应与人类偏好的一致程度。奖励模型根据人类偏好为输出分配一个标量奖励分数(比如0到10),以训练LLM优先考虑得分高的响应。
  • 通过强化学习进行微调。LLM使用诸如近端策略优化(PPO)之类的强化学习算法进行微调,该算法教导人工智能逐步改进,而不是一次做出巨大的改变。奖励模型通过对生成的输出提供反馈来指导这一过程,使LLM能够优化其策略,以产生高回报的响应。

直接偏好优化(DPO)

直接偏好优化(DPO)是一种新兴的训练方法,旨在使LLM与人类偏好保持一致。它是RLHF的一种更简单、更有效的替代方案,绕过了复杂的强化学习算法,如近端策略优化(PPO)。相反,DPO通过直接训练LLM对人类排名的反应来跳过奖励建模。

首选项数据生成过程保持不变,如上面的RLHF方法所强调的那样。DPO流程包括:

  • 直接优化。与RLHF不同,RLHF训练奖励模型并使用强化学习,DPO直接微调LLM以产生与排名偏好最大一致的输出。这是通过直接训练模型来支持高排名的响应并避免低排名的响应来实现的。
  • 模型训练。优化过程调整模型的参数,以优先生成符合人类偏好的响应,而不需要像RLHF那样迭代更新策略。

模型对齐已经成功地应用于下述领域:

  • 会话式AI。使聊天机器人符合用户对语气、相关性和道德标准的期望。
  • 内容生成。基于用户定义的质量指标,为诸如总结或创造性写作之类的任务优化模型。
  • 伦理人工智能发展。确保模型遵循公平性、安全性和包容性的指导方针,而不会产生大量的计算成本。

结语

本指南向你展示了LLM训练的具体细节。你准备好开始了吗?许多开源模型和数据集正在等待你进行实验并调整它们以解决你的特定问题。

原文标题:​A Comprehensive Guide to Generative AI Training​​,作者:​Vashishtha Patil​ 

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-2-28 08:32:41修改
收藏
回复
举报
回复
相关推荐