作者:Destin Gong
大语言模型(LLMS)是基于自学学习的学习模型进行的深度学习模型,需要大量的培训数据,培训时间和持有大量参数的资源。LLM彻底改变了自然语言处理,尤其是在过去的两年中,在理解和产生类似人类的文本方面表现出了显着的能力。但是,这些通用模型的业绩可能并不总是满足特定的业务需求或领域需求。仅LLMS不能回答依赖专有公司数据或闭幕设置的问题,从而使其在其应用程序中相对通用。由于大量的培训数据和资源的需求,从头到尾的训练LLM模型在很大程度上是不可行的。因此,近年来开发了广泛的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的输入文本以引发AI生成的响应,并且可以由指令,上下文,输入数据和输出指标组成。
指示:这提供了有关模型应如何执行的任务说明或指令。
语境:这是指导模型在特定范围内做出响应的外部信息。
输入数据:这是您想要响应的输入。
输出指示器:这指定输出类型或格式。
及时的工程涉及策略性地制定这些及时组件以塑造和控制模型的响应。基本的及时工程技术包括零射门,一枪和很少的射击提示。用户可以在与LLM互动时直接实现基本的及时工程技术,从而使其成为一种有效的方法,可以使模型的行为与新颖的目标相结合。API实施也是一种选项,我以前的文章中介绍了更多详细信息'将LLM提示与知识图集成的简单管道。
由于迅速工程的效率和有效性,探索和开发了更复杂的方法,以提高提示的逻辑结构。
思想链(COT)要求LLMS将复杂的推理任务分解为分步思考过程,从而改善多步问题的性能。每个步骤都明确地揭示了其推理结果,这是其后续步骤的前身上下文,直到得出答案。
思想树通过考虑多个不同的推理分支和自我评估选择来决定下一个最佳动作,从COT延伸。对于涉及初始决策,未来策略和探索多种解决方案的任务更有效。
自动推理和工具使用(ART)建立在COT过程的基础上,它可以解构复杂的任务,并允许模型使用搜索和代码生成等预定义外部工具从任务库中选择几个示例。
协同推理和行动(反应)将推理轨迹与动作空间相结合,在该空间中,该模型通过动作空间进行搜索,并根据环境观察确定下一个最佳动作。
COT和REACT等技术通常与代理工作流相结合,以增强其能力。这些技术将在“代理”部分中更详细地介绍。
进一步阅读
可以通过推理参数(例如温度,顶部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)
抽样策略是通过调整这些推论参数来控制模型响应随机性的第三种方法:
示例代码片段以下来自前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,)
进一步阅读
最初在论文中引入的检索增强发电(或抹布)已被证明是一种有前途的解决方案,该解决方案已被证明是一种有希望的解决方案,可以整合外部知识并减少常见的LLM幻觉。处理特定域或专业查询时的问题。RAG允许从知识领域动态提取相关信息,并且通常不涉及大量培训以更新LLM参数,从而使其成为一种经济高效的策略,可以适应专用域的通用LLM。
抹布系统可以分解为检索和发电阶段。目的检索过程是通过在外部知识,创建嵌入,索引和相似性搜索的情况下找到与用户查询密切相关的知识库中的内容。
生成过程然后,抹布系统将检索到的信息与用户查询相结合,以形成增强查询,该查询被解析到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网站。
进一步阅读
LLM代理在2024年是一个流行的话题,2025年在Genai领域的主要重点。与RAG相比,Agent擅长创建查询路线和计划基于LLM的工作流程,并具有以下好处:
可以通过代理框架实现几种内部文化学习技术(例如COT,React),我们将通过更多详细信息讨论React。反应,代表在语言模型中协同推理和作用,由三个关键要素组成行动,,,,想法和观察。普林斯顿大学的Google Research介绍了该框架,该框架通过将推理步骤与能够使用工具使用和功能调用的动作空间整合到思想链上。此外,React框架强调基于环境观察确定下一个最佳动作。
原始论文中的这个示例证明了内部工作过程,其中LLM在其中生成了第一个思想,并通过将函数调用搜索[Apple Remote]来行动,然后观察其第一个输出中的反馈。第二个想法是基于先前的观察结果,因此导致了不同的动作搜索[前排]。这个过程迭代直到达到目标。研究表明,通过与简单的Wikipedia API相互作用,反应克服了幻觉和错误传播的普遍问题。此外,通过实施决策轨迹,React框架还提高了模型的解释性,可信度和诊断性。
代码段
这证明了基于反应的代理实现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自我验证。
进一步阅读
微调是喂养利基市场和专业数据集以修改LLM的过程,以使其与某个目标更加一致。它与及时的工程和抹布有所不同,因为它可以更新到LLM权重和参数。完整的微调是指通过逆转来更新验证的LLM的所有权重,这需要大量内存来存储所有权重和参数,并且可能会大大降低其他任务的能力(即灾难性遗忘)。所以,PEFT(或参数有效的微调)在节省模型培训的时间和成本的同时,更广泛地用于减轻这些警告。PEFT方法有三类:
微调过程类似于深度学习培训过程。需要以下输入:
代码段
以下是使用变压培训师实施微调的示例。
从变形金刚进口培训师,培训师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专门研究特定的知识领域。
进一步阅读
从人类反馈或RLHF中学习的强化是一种增强学习技术,可以根据人类的偏好微调LLM。RLHF通过培训奖励模型基于人类的反馈,并将此模型用作奖励功能,通过PPO(近端策略优化)优化增强学习政策。该过程需要两组培训数据:偏好数据集用于培训奖励模型,提示数据集用于加固学习循环。
让我们将其分解为步骤:
{input_text,cantidate1,cantidate2,human_preference}
,指示哪种候选响应是首选。{提示,响应,奖励}
。代码段
开源库TRLX广泛应用于实现RLHF,并提供了一个模板代码,显示基本的RLHF设置:
ppoconfig
喜欢学习率,时代和批量大小ppotrainer
通过组合模型,令牌和培训数据步()
迭代更新模型以优化的方法奖励
根据询问
和模型回复
#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_collator =碰撞器)#ppo_trainer通过奖励进行迭代更新PPO_TRAINER.STEP(QUERY_TENSORS,RENSTYS_TENSORS,奖励)
RLHF广泛用于与人类偏好的模型响应。常见用例涉及降低反应毒性和模型幻觉。但是,它确实具有需要大量人类注释数据以及与策略优化相关的计算成本的缺点。因此,引入了诸如AI反馈和直接偏好优化(DPO)之类的替代方案,以减轻这些限制。
进一步阅读
本文简要说明了六种基本LLM自定义策略,包括及时工程,解码策略,抹布,代理,微调和RLHF。希望您对了解每种策略的利弊以及如何根据实际示例实施它们有帮助。