英语轻松读发新版了,欢迎下载、更新

6常见的LLM自定义策略简要解释|迈向数据科学

2025-02-24 19:27:50 英文原文

作者:Destin Gong

为什么要自定义LLM?

大语言模型(LLMS)是基于自学学习的学习模型进行的深度学习模型,需要大量的培训数据,培训时间和持有大量参数的资源。LLM彻底改变了自然语言处理,尤其是在过去的两年中,在理解和产生类似人类的文本方面表现出了显着的能力。但是,这些通用模型的业绩可能并不总是满足特定的业务需求或领域需求。仅LLMS不能回答依赖专有公司数据或闭幕设置的问题,从而使其在其应用程序中相对通用。由于大量的培训数据和资源的需求,从头到尾的训练LLM模型在很大程度上是不可行的。因此,近年来开发了广泛的LLM自定义策略,以调整需要专业知识的各种情况的模型。

自定义策略可以广泛分为两种类型:

  • 使用冷冻模型:这些技术不需要更新模型参数,通常是通过文本学习或及时工程来完成的。它们具有成本效益,因为它们改变了模型的行为而没有产生广泛的培训成本,因此在该行业和学术上都广泛探讨了新的研究论文,每天发表新的研究论文。
  • 更新模型参数:这是一种相对较大的资源密集型方法,需要使用为预期目的设计的自定义数据集对预训练的LLM进行调整。这包括流行技术,例如从人类反馈(RLHF)中进行微调和加强学习。

这两个广泛的自定义范式分为各种专业技术,包括洛拉微调,思想链,检索增强生成,反应和代理框架。每种技术都为计算资源,实施复杂性和绩效提高提供了不同的优势和权衡。

如何选择LLM?

自定义LLMS的第一步是选择适当的基础模型作为基线。基于社区的平台,例如Huggingface提供了由顶级公司或社区贡献的广泛的开源预培训模型,例如Meta的Llama系列和Google的Gemini。拥抱面提供排行榜,例如打开LLM排行榜â€比较基于行业标准的指标和任务(例如MMLU)的LLM。云提供商(例如,AWS)和AI公司(例如OpenAI和Anthropic)还提供了通常是有限访问权限的付费服务的专有模型。选择LLM时要考虑以下因素是必不可少的。

开源或专有模型:开源模型允许完全自定义和自我托管,但需要技术专业知识,而专有模型则可以立即访问,并且通常会提供更好的质量响应,但成本更高。

任务和指标:模型在不同的任务中表现出色,包括提问,摘要,代码生成等。比较基准指标和针对特定领域任务的测试以确定适当的模型。

建筑学:通常,仅解码器模型(GPT系列)在文本生成方面的表现更好,而编码器模型(T5)手柄转换很好。出现了更多的建筑并显示出令人鼓舞的结果,例如专家(MOE)模型的混合物。

参数数量和大小:较大的型号(70b-175b参数)提供了更好的性能,但需要更多的计算能力。较小的型号(7b-13b)运行速度更快,更便宜,但功能可能会降低。

在确定基本LLM之后,让我们探索6种最常见的LLM自定义策略,按照资源消费从最少到最密集的方式排名:

  • 及时的工程
  • 解码和采样策略
  • 检索增强产生
  • 代理人
  • 微调
  • 从人类反馈中学习的强化

如果您更喜欢这些概念的视频演练,请在我的视频中查看我的视频6常见的LLM自定义策略简要解释

LLM自定义技术

1。及时的工程

提示是发送到LLM的输入文本以引发AI生成的响应,并且可以由指令,上下文,输入数据和输出指标组成。

指示:这提供了有关模型应如何执行的任务说明或指令。

语境:这是指导模型在特定范围内做出响应的外部信息。

输入数据:这是您想要响应的输入。

输出指示器:这指定输出类型或格式。

及时的工程涉及策略性地制定这些及时组件以塑造和控制模型的响应。基本的及时工程技术包括零射门,一枪和很少的射击提示。用户可以在与LLM互动时直接实现基本的及时工程技术,从而使其成为一种有效的方法,可以使模型的行为与新颖的目标相结合。API实施也是一种选项,我以前的文章中介绍了更多详细信息'将LLM提示与知识图集成的简单管道

由于迅速工程的效率和有效性,探索和开发了更复杂的方法,以提高提示的逻辑结构。

思想链(COT)要求LLMS将复杂的推理任务分解为分步思考过程,从而改善多步问题的性能。每个步骤都明确地揭示了其推理结果,这是其后续步骤的前身上下文,直到得出答案。

思想树通过考虑多个不同的推理分支和自我评估选择来决定下一个最佳动作,从COT延伸。对于涉及初始决策,未来策略和探索多种解决方案的任务更有效。

自动推理和工具使用(ART)建立在COT过程的基础上,它可以解构复杂的任务,并允许模型使用搜索和代码生成等预定义外部工具从任务库中选择几个示例。

协同推理和行动(反应)将推理轨迹与动作空间相结合,在该空间中,该模型通过动作空间进行搜索,并根据环境观察确定下一个最佳动作。

COT和REACT等技术通常与代理工作流相结合,以增强其能力。这些技术将在“代理”部分中更详细地介绍。

进一步阅读

2。解码和采样策略

可以通过推理参数(例如温度,顶部P,顶部K)在模型推理时间进行解码策略,以确定模型响应的随机性和多样性。贪婪的搜索,梁搜索和抽样是自动回归模型生成的三种常见解码策略。****

在自回归生成过程中,LLM一次将一个令牌输出,该令牌是基于由Pervious代币调节的候选令牌的概率分布。默认情况下,贪婪的搜索应用以产生最高概率的接下来令牌。

相比之下,梁搜索解码考虑了次要令牌的多个假设,并选择了文本序列中所有令牌中所有令牌中最高组合概率的假设。下面的代码段使用变形金刚库来指定在模型生成过程中的梁路径数(例如num_beams = 5考虑5个不同的假设)。

从变形金刚导入AutomodelForCausAllm,AutoTokenizertokenizer = autotokenizer.from_pretaining(tokenizer_name)输入= tokenizer(提示,return_tensors =“ pt”)型号= automodelforcausallm.from_pretaining(model_name)输出= model.generate(**输入,num_beams = 5)

抽样策略是通过调整这些推论参数来控制模型响应随机性的第三种方法:

  • 温度:降低温度通过增加产生高概率单词并降低产生低概率单词的可能性的可能性,从而使概率分布更加尖锐。当温度= 0时,它就等同于贪婪的搜索(最不创意);当温度= 1时,它会产生最具创造性的输出。
  • 顶部K采样:该方法过滤K最可能的近隔令,并重新分布这些令牌之间的概率。然后,该模型从此过滤后的令牌集中采样。
  • 顶部Pampling:Top-P采样不是从k最可能的令牌中取样的,而是从最小可能的令牌集中选择,其累积概率超过阈值p。

示例代码片段以下来自前50名最有可能的令牌(top_k = 50),累积概率高于0.95(top_p = 0.95)

sample_outputs = model.generate(** model_inputs,max_new_tokens = 40,do_sample = true,top_k = 50,top_p = 0.95,num_return_sequences = 3,)

进一步阅读

3。抹布

最初在论文中引入的检索增强发电(或抹布)已被证明是一种有前途的解决方案,该解决方案已被证明是一种有希望的解决方案,可以整合外部知识并减少常见的LLM幻觉。处理特定域或专业查询时的问题。RAG允许从知识领域动态提取相关信息,并且通常不涉及大量培训以更​​新LLM参数,从而使其成为一种经济高效的策略,可以适应专用域的通用LLM。

抹布系统可以分解为检索和发电阶段。目的检索过程是通过在外部知识,创建嵌入,索引和相似性搜索的情况下找到与用户查询密切相关的知识库中的内容。

  1. 块:文档分为较小的细分市场,每个段包含一个不同的信息单位。
  2. 创建嵌入:嵌入模型将每个信息块压缩到向量表示。用户查询还通过相同的矢量化过程将用户查询转换为其向量表示,因此可以在相同的维空间中比较用户查询。
  3. 索引:此过程将这些文本块及其向量嵌入作为键值对,从而实现高效且可扩展的搜索功能。对于超过内存容量的大型外部知识库,向量数据库提供有效的长期存储。
  4. 相似性搜索:计算查询嵌入和文本块嵌入之间的相似性分数,这些分数用于搜索与用户查询高度相关的信息。

生成过程然后,抹布系统将检索到的信息与用户查询相结合,以形成增强查询,该查询被解析到LLM以生成上下文丰富的响应。

代码段

代码段首先指定LLM和嵌入模型,然后执行缩小外部知识库的步骤文件纳入文档。创造指数文档,定义query_engine基于指数并查询query_engine使用用户提示。

来自llama_index.llms.openai进口Openai来自llama_index.embeddings.openai进口openaiembedding来自llama_index.core导入vectorstoreindexsettings.llm = OpenAi(型号=“ gpt-3.5-turbo”)settings.embed_model =“ baai/bge-small-en-v1.5”document = document(text =“ \\ n \\ n”。index = vectorstoreindex.from_documents([[document])query_engine = index.as_query_engine()响应= query_engine.query(Query)(“告诉我有关LLM自定义策略的信息。”)

上面的示例显示了一个简单的抹布系统。基于此的Advanced RAG通过引入退缩前和后恢复后的策略来改进,以减少陷阱,例如检索和发电过程之间的协同作用有限。例如,Rerank Technique使用能够理解双向上下文的模型将检索到的信息重新定位,并与知识图集成以进行高级查询路由。可以在Llamaindex网站。

进一步阅读

4。代理

LLM代理在2024年是一个流行的话题,2025年在Genai领域的主要重点。与RAG相比,Agent擅长创建查询路线和计划基于LLM的工作流程,并具有以下好处:

  • 保持记忆和先前模型的状态产生的响应。
  • 根据特定标准利用各种工具。通过对LLM独​​立控制工具选择,该工具使用能力将代理与基本抹布系统区分开。
  • 将复杂的任务分解为较小的步骤,并计划一系列动作。
  • 与其他代理商合作形成精心策划的系统。

可以通过代理框架实现几种内部文化学习技术(例如COT,React),我们将通过更多详细信息讨论React。反应,代表在语言模型中协同推理和作用,由三个关键要素组成行动,,,,想法观察。普林斯顿大学的Google Research介绍了该框架,该框架通过将推理步骤与能够使用工具使用和功能调用的动作空间整合到思想链上。此外,React框架强调基于环境观察确定下一个最佳动作。

原始论文中的这个示例证明了内部工作过程,其中LLM在其中生成了第一个思想,并通过将函数调用搜索[Apple Remote]来行动,然后观察其第一个输出中的反馈。第二个想法是基于先前的观察结果,因此导致了不同的动作搜索[前排]。这个过程迭代直到达到目标。研究表明,通过与简单的Wikipedia API相互作用,反应克服了幻觉和错误传播的普遍问题。此外,通过实施决策轨迹,React框架还提高了模型的解释性,可信度和诊断性。

反应的示例:在语言模型中协同推理和作用(Yu等,2022)

代码段

这证明了基于反应的代理实现Llamaindex。首先,它定义了两个函数(添加)。其次,这两个功能被封装为功能工具,形成代理的行动空间并根据其推理执行。

来自llama_index.core.gagent导入reactagent来自llama_index.core.tools import functionTool#创建基本功能工具def倍数(a:float,b:float) - > float:返回A * Bpultiply_tool = functionTool.from_defaults(fn =倍数)def add(a:float,b:float) - > float:返回A + Badd_tool = functionTool.from_defaults(fn = add)agent = reactagent.from_tools([suptry_tool,add_tool],llm = llm,verbose = true)

与自我反射或自我纠正相结合时,代理工作流的优势更为实质。这是一个日益增长的领域,正在探索各种代理体系结构。例如,反射框架通过提供环境中的口头反馈并将反馈存储在模型的记忆中来促进迭代学习;评论家Framework通过与代码解释器和API调用等外部工具进行交互来赋予冷冻LLMS自我验证。

进一步阅读

5。微调

微调是喂养利基市场和专业数据集以修改LLM的过程,以使其与某个目标更加一致。它与及时的工程和抹布有所不同,因为它可以更新到LLM权重和参数。完整的微调是指通过逆转来更新验证的LLM的所有权重,这需要大量内存来存储所有权重和参数,并且可能会大大降低其他任务的能力(即灾难性遗忘)。所以,PEFT(或参数有效的微调)在节省模型培训的时间和成本的同时,更广泛地用于减轻这些警告。PEFT方法有三类:

  • 选择性:选择初始LLM参数的子集进行微调,与其他PEFT方法相比,它可以更加计算。
  • 重新聚集:通过训练低级表示的权重调整模型权重。例如,较低的排名适应(LORA)是通过用两个较小的矩阵来表示重量更新来加速微调的类别之一。
  • 添加剂:在模型中添加其他可训练的层,包括适配器和软提示等技术

微调过程类似于深度学习培训过程。需要以下输入:

  • 培训和评估数据集
  • 培训论点定义了超参数,例如学习率,优化器
  • 验证的LLM模型
  • 计算指标和目标功能应优化算法

代码段

以下是使用变压培训师实施微调的示例。

从变形金刚进口培训师,培训师triending_args = triencharguments(output_dir = output_dir,Learning_rate = 1E-5,eval_strategy =“ epoch”)培训师=教练(模型=模型,args =训练_args,train_dataset = train_dataset,eval_dataset = eval_dataset,compute_metrics = compute_metrics,)Trainer.Train()

微调具有广泛的用例。例如,指令微调优化LLM进行对话和以下说明,通过及时完成对训练。另一个示例是域适应性,这是一种无监督的微调方法,可帮助LLMS专门研究特定的知识领域。

进一步阅读

6。rlhf

从人类反馈或RLHF中学习的强化是一种增强学习技术,可以根据人类的偏好微调LLM。RLHF通过培训奖励模型基于人类的反馈,并将此模型用作奖励功能,通过PPO(近端策略优化)优化增强学习政策。该过程需要两组培训数据:偏好数据集用于培训奖励模型,提示数据集用于加固学习循环。

让我们将其分解为步骤:

  1. 收集偏好数据集由人类标记的注释,这些标签会评估模型基于人类偏好产生的不同完成。偏好数据集的示例格式是{input_text,cantidate1,cantidate2,human_preference},指示哪种候选响应是首选。
  2. 训练奖励模型使用偏好数据集,奖励模型本质上是一个回归模型,该模型输出标量表示模型生成的响应的质量。奖励模型的目的是最大程度地提高获胜候选人与失去候选人之间的分数。
  3. 在加固学习循环中使用奖励模型来微调LLM。目的是更新了政策,以便LLM可以产生响应,从而最大程度地提高奖励模型产生的奖励。这个过程利用了提示数据集这是以{提示,响应,奖励}

代码段

开源库TRLX广泛应用于实现RLHF,并提供了一个模板代码,显示基本的RLHF设置:

  1. 初始化基本模型和令牌从验证的检查点初始化
  2. 配置PPO超参数ppoconfig喜欢学习率,时代和批量大小
  3. 创建PPO培训师ppotrainer通过组合模型,令牌和培训数据
  4. 训练循环使用步()迭代更新模型以优化的方法奖励根据询问和模型回复
#TRL:变压器加固学习库来自TRL导入PPOTRAINER,PPOCONFIG,AUTOMODELFORSEQ2SEQLMWITHVALUEHEAD来自TRL导入create_reference_model来自trl.core intimpt length sampler#启动验证的模型和令牌仪model = automodelforcausallmwithvaluehead.from_pretrataining(config.model_name)tokenizer = autotokenizer.from_pretrataining(config.model_name)#定义PPO算法的超参数config = ppoconfig(model_name = model_name,Learning_rate = Learning_rate,ppo_epochs = max_ppo_epochs,mini_batch_size = mini_batch_size,batch_size = batch_size)#参考模型启动PPO培训师ppo_trainer = ppotrainer(config = config,型号= ppo_model,tokenizer = tokenizer,dataset = dataset [“ train”],data_collat​​or =碰撞器)#ppo_trainer通过奖励进行迭代更新PPO_TRAINER.STEP(QUERY_TENSORS,RENSTYS_TENSORS,奖励)

RLHF广泛用于与人类偏好的模型响应。常见用例涉及降低反应毒性和模型幻觉。但是,它确实具有需要大量人类注释数据以及与策略优化相关的计算成本的缺点。因此,引入了诸如AI反馈和直接偏好优化(DPO)之类的替代方案,以减轻这些限制。

进一步阅读

带回家的消息

本文简要说明了六种基本LLM自定义策略,包括及时工程,解码策略,抹布,代理,微调和RLHF。希望您对了解每种策略的利弊以及如何根据实际示例实施它们有帮助。

关于《6常见的LLM自定义策略简要解释|迈向数据科学》的评论


暂无评论

发表评论

摘要

###摘要:自定义大型语言模型(LLMS)本文概述了定制大型语言模型(LLM)的六种基本策略,以更好地适合特定用例和要求:1。**提示工程**:制作提示,使用令牌化,前缀调整,软提示令牌和人类在循环的反馈中,从LLM中引起LLM的所需响应。2。**解码策略**:修改推理期间的解码过程(例如,光束搜索,顶部K采样)来控制输出长度,多样性和相关性。3。**检索提升的生成(RAG)**:通过集成外部知识源(文档或数据库)来增强模型性能,使用诸如跨编码器评分的技术来进行文档检索和动态的上下文感知提示。4。**基于代理的自定义**:利用代理来管理与LLMS的交互,处理任务,诸如任务分解,及时优化和基于特定于代理的要求进行微调。5。**微调**:使用培训数据集,超参数和评估指标将预训练的模型调整为特定领域或任务。讨论了教学微调和域适应性等技术。6。**从人类反馈(RLHF)学习的强化学习**:通过使用偏好数据集和奖励模型,通过增强学习基于人类偏好的微调LLM。RLHF有助于将模型响应与人类价值保持一致,但需要大量注释的数据和计算资源。###关键要点 - 每个策略都有独特的优势和缺点。 - 实施这些策略涉及选择正确的工具和库(例如,拥抱Face的微调变压器,用于rlhf的TRL库)。 - 提供了实际示例来说明如何有效地应用每种自定义方法。###实施示例1。**提示工程**: - 令牌化:将提示分解为令牌序列。 - 前缀调整:仅对模型的及时层进行微调。 - 软提示令牌:推理过程中动态修改提示令牌。2。**解码策略**: - 光束搜索:生成多个候选输出,并根据评分函数选择最佳的输出。 - TOP-K采样:根据其概率从顶部K中选择接下来的单词。3。**检索演说一代(抹布)** - 跨编码器评分:使用跨编码器模型在查询和文档之间获得相关性。 - 动态提示生成:使用检索的文档创建上下文感知提示。4。**基于代理的自定义**: - 任务分解:将复杂的任务分解为更简单的子任务,以通过LLMS有效处理。 - 及时优化:针对特定于特定域或应用程序的性能的微调特定提示。5。**微调**: - 使用拥抱Face的“ Trainer”课程通过培训数据集,超参数(例如学习率)和评估指标来实施微调。6。**从人类反馈(RLHF)学习的强化**: - 利用TRL库的RLHF的PPO培训师,包括设置基本模型和令牌,配置PPO超级参数以及迭代用奖励更新模型。###实用应用 - 了解这些策略有助于根据特定项目需求选择最合适的方法。 - 组合多种自定义技术可以导致针对各种用例量身定制的更强大,有效的LLM应用程序。通过探索和实施这些自定义,开发人员可以增强LLMS与预期目的的性能和一致性,从而使其更有效地用于广泛的应用程序。