大语言模型(LLM)是基于自监督学习预训练的深度学习模型,训练数据量庞大、训练时间长,并且包含大量的参数。LLM在过去两年中彻底改变了自然语言处理领域,展现了在理解和生成类人文本方面的卓越能力。

然而,这些通用模型的开箱即用性能并不总能满足特定的业务需求或领域要求。LLM单独使用时无法回答依赖于公司专有数据或封闭环境的问题,这使得它们在应用中显得相对通用。

由于从零开始训练一个LLM模型需要大量的训练数据和资源,这对于中小型团队来说基本不可行。因此,近年来开发了多种LLM定制策略,以便针对需要专业知识的不同场景调优模型。

定制策略大致可以分为两种类型:

  1. 使用冻结模型:这些技术不需要更新模型参数,通常通过上下文学习或提示工程来实现。由于它们通过改变模型的行为而不需要大量训练成本,因此具有成本效益,广泛应用于工业界和学术界,每天都有新的研究论文发表。

  2. 更新模型参数:这是一种相对资源密集的方法,需要使用为特定目的设计的自定义数据集来调优预训练的LLM。这包括如微调(Fine-Tuning)和基于人类反馈的强化学习(RLHF)这些流行的技术。

这两种定制范式进一步分化为各种专门的技术,包括LoRA微调、思维链(Chain of Thought)、检索增强生成(RAG)、ReAct和Agent框架等。每种技术在计算资源、实现复杂度和性能提升方面提供了不同的优势和权衡。

如何选择LLM?

定制LLM的第一步是选择合适的基础模型作为基准。例如Huggingface这些基于社区的平台,提供了由顶级公司或社区贡献的各种开源预训练模型,如Meta的Llama系列和Google的Gemini。Huggingface还提供了例如Open LLM Leaderboard这样的排行榜,可以根据行业标准的指标和任务(如MMLU)来比较LLM。

云服务提供商如AWS(亚马逊)和AI公司(如OpenAI和Anthropic)也提供访问专有模型的服务,这些通常是付费服务,且访问受限。

选择LLM时需要考虑以下几个因素:

  1. 开源模型还是专有模型:开源模型允许完全定制和自托管,但需要技术专业知识,而专有模型则提供即时访问,通常可以提供更好的响应质量,但成本较高。

  2. 任务和指标:不同的模型在不同任务上表现出色,包括问答、总结、代码生成等。通过比较基准指标并在特定领域任务上进行测试,来确定合适的模型。

  3. 架构:一般来说,仅解码器模型(如GPT系列)在文本生成方面表现更好,而编码-解码模型(如T5)在翻译任务上表现优秀。现在有更多的架构出现并展现出良好的结果,例如专家混合模型(MoE)DeepSeek。

  4. 参数数量和模型大小:较大的模型(70B-175B参数)通常提供更好的性能,但需要更多的计算资源。较小的模型(7B-13B)运行更快且更便宜,但可能在能力上有所减少。

在确定了基础LLM之后,让我们来看一下六种最常见的LLM定制策略,按资源消耗从最少到最多的顺序排列:

  1. 提示工程(Prompt Engineering)

  2. 解码与采样策略(Decoding and Sampling Strategy)

  3. 检索增强生成(Retrieval Augmented Generation)

  4. Agent

  5. 微调(Fine Tuning)

  6. 基于人类反馈的强化学习(Reinforcement Learning from Human Feedback)

提示工程

提示(Prompt)是发送给LLM的输入文本,用于引发AI生成的响应,它可以由指令、上下文、输入数据和输出指示符组成。

  • 指令:这是为模型如何执行任务提供的描述或指示。

  • 上下文:这是外部信息,用于指导模型在特定范围内进行响应。

  • 输入数据:这是你希望模型生成响应的输入。

  • 输出指示符:这指定了输出的类型或格式。

提示工程(Prompt Engineering)涉及有策略地设计这些提示组件,以塑造和控制模型的响应。基本的提示工程技术包括零次提示(zero shot prompting)、一次提示(one shot prompting)和少量提示(few shot prompting)。用户可以在与LLM互动时直接实现这些基本提示工程技术,从而高效地使模型的行为与新目标对齐。API实现也是一种选择。

由于提示工程的高效性和有效性,人们也探索和开发出了越来越多的用于提升提示的逻辑结构的复杂方法。

  • 思维链(Chain of Thought,CoT)要求LLM将复杂的推理任务分解为逐步的思维过程,从而提高多步骤问题的表现。每个步骤都会明确暴露其推理结果,并作为后续步骤的前置上下文,直到得出最终答案。

  • 思维树(Tree of Thought,ToT)是CoT的扩展,通过考虑多条不同的推理分支并自我评估选择,决定下一步最佳行动。它对于涉及初步决策、未来策略和多种解决方案探索的任务更为有效。

  • 自动推理和工具使用(Automatic Reasoning and Tool use,ART)在CoT的基础上构建,它解构复杂任务,并允许模型使用预定义的外部工具(如搜索和代码生成)从任务库中选择少量示例。

  • 协同推理与行动(Synergizing Reasoning and Acting,ReAct)结合了推理轨迹与行动空间,模型在行动空间中搜索,并基于环境观察确定下一步最佳行动。

像CoT和ReAct这样的技术通常与Agent工作流结合使用,以增强其能力。这些技术将在接下来的Agent部分中详细介绍。

解码与采样策略

解码策略可以通过推理参数(例如temperature、top_p、top_k)在模型推理时进行控制,从而决定模型响应的随机性和多样性。贪婪搜索、束搜索和采样是三种常见的自回归模型生成的解码策略。

在自回归生成过程中,LLM根据前一个token的条件,基于候选token的概率分布逐个输出token。

默认情况下,使用贪婪搜索来生成概率最高的下一个token。

与此不同,束搜索解码会考虑多个下一个最佳token的假设,并选择在整个文本序列中具有最高综合概率的假设。以下代码片段使用transformers库,在模型生成过程中指定束搜索路径的数量(例如,num_beams=5表示考虑5个不同的假设):

from transformers import AutoModelForCausalLM, AutoTokenizer``   ``tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)``inputs = tokenizer(prompt, return_tensors="pt")``   ``model = AutoModelForCausalLM.from_pretrained(model_name)``outputs = model.generate(**inputs, num_beams=5)

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

  1. 温度(Temperature):降低温度会使概率分布变得更加尖锐,从而增加生成高概率词语的可能性,减少生成低概率词语的可能性。当温度 = 0 时,相当于贪婪搜索(最不具创意);当温度 = 1 时,会生成最具创意的输出。

  2. Top K采样:这种方法筛选出K个最可能的下一个token,并在这些token之间重新分配概率。模型从这个筛选出的token集合中进行采样。

  3. Top P采样:与从K个最可能的token中采样不同,top-p采样从最小的token集合中选择,该集合的累积概率超过阈值p。

以下示例代码片段从累积概率大于0.95(top_p=0.95)的前50个最可能的token中进行采样(top_k=50):

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

RAG

检索增强生成(Retrieval Augmented Generation,简称RAG),最初在论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出,已被证明是一种有前景的解决方案,能够将外部知识集成进来,并在处理领域特定或专业查询时减少常见的LLM幻觉问题。RAG允许动态地从知识领域中提取相关信息,并且通常不涉及更新LLM参数的大规模训练,使其成为一种用于将通用LLM适配到特定领域的成本效益高的策略。

RAG系统可以分为检索和生成两个阶段。

检索过程的目标是通过对外部知识进行切块、创建嵌入、索引和相似性搜索,找到与用户查询密切相关的知识库内容。

  1. 切块(Chunking):将文档划分为较小的段落,每个段落包含一个独立的信息单元。

  2. 创建嵌入(Create embeddings):嵌入模型将每个信息块压缩为向量表示。用户查询也通过相同的向量化过程转换为向量表示,这样用户查询就可以在相同的维度空间中进行比较。

  3. 索引(Indexing):这一过程将这些文本块及其向量嵌入存储为键值对,从而实现高效且可扩展的搜索功能。对于超出内存容量的大型外部知识库,向量数据库提供高效的长期存储。

  4. 相似性搜索(Similarity search):计算查询嵌入与文本块嵌入之间的相似性分数,用于搜索与用户查询高度相关的信息。

RAG系统的生成过程则将检索到的信息与用户查询结合,形成增强的查询,并将其传递给LLM,以生成丰富上下文的响应。

以下代码片段首先指定LLM和嵌入模型,然后执行步骤将外部知识库文档切块为文档集合。接着从文档创建索引,基于索引定义查询引擎,并使用用户提示查询查询引擎。

from llama_index.llms.openai import OpenAI``from llama_index.embeddings.openai import OpenAIEmbedding``from llama_index.core import VectorStoreIndex``   ``Settings.llm = OpenAI(model="gpt-3.5-turbo")``Settings.embed_model="BAAI/bge-small-en-v1.5"``   ``document = Document(text="\\n\\n".join([doc.text for doc in documents]))``index = VectorStoreIndex.from_documents([document])`                                    `query_engine = index.as_query_engine()``response = query_engine.query(`    `"Tell me about LLM customization strategies."``)
  

上述示例展示了一个简单的RAG系统。基于此,改进后的高级RAG引入了预检索和后检索策略,以减少检索和生成过程之间的协同作用有限等问题。例如,重新排序技术使用能够理解双向上下文的模型对检索到的信息进行重新排序,并与知识图谱集成,用于高级查询路由。更多技巧可以参考《高阶RAG技巧:探索提升RAG系统性能的不同技巧》。

Agent

LLM Agent是2024年的热门话题,并且可能在2025年继续成为生成AI领域的主要关注点。

推荐阅读:

如何构建与未来并肩的Agentic AI:从基础到高级应用的全景指南

从AI Agent到Agentic Workflow:技术焦点的转变与未来发展

2025如何学习Agent?谷歌重磅发布Agent白皮书

免费,中文!微软推出面向初学者的AI Agent课程啦

与RAG相比,Agent在创建查询路径和规划基于LLM的工作流方面表现更为出色,具有以下优势:

  1. 维护先前模型生成响应的记忆和状态。

  2. 根据特定标准利用各种工具。这种工具使用能力使得Agent与基本的RAG系统不同,因为它赋予LLM独立选择工具的控制权。

  3. 将复杂任务分解为更小的步骤,并规划一系列动作。

  4. 与其他Agent协作,形成一个协调的系统。

可以通过Agent框架实现如CoT、ReAct这几种上下文学习技术,我们将详细讨论ReAct。ReAct代表Synergizing Reasoning and Acting in Language Models(在语言模型中协同推理与行动),由三个关键元素组成——行动、思考和观察。

这个框架由Google Research在普林斯顿大学提出,基于思维链(Chain of Thought)构建,将推理步骤与一个行动空间结合,使得工具使用和函数调用成为可能。此外,ReAct框架强调根据环境观察来确定下一个最佳行动。

以下是原始论文中的一个示例,展示了ReAct的内部工作过程,其中LLM生成第一个思考并通过调用“Search [Apple Remote]”函数进行行动,然后观察其第一次输出的反馈。第二个思考基于先前的观察,从而引导到不同的行动“Search [Front Row]”。这个过程会反复进行,直到达到目标。研究表明,ReAct通过与简单的Wikipedia API交互,克服了在链式推理中常见的幻觉和错误传播问题。此外,通过决策痕迹的实施,ReAct框架还增强了模型的可解释性、可信度和诊断能力。

下面使用llamaindex展示了一个基于ReAct的Agent实现。首先,它定义了两个函数(multiply和add)。其次,这两个函数被封装为FunctionTool,形成了Agent的行动空间,并根据其推理执行。

from llama_index.core.agent import ReActAgent``from llama_index.core.tools import FunctionTool``   ``# 创建基本的函数工具``def multiply(a: float, b: float) -> float:`    `return a * b``   ``multiply_tool = FunctionTool.from_defaults(fn=multiply)``   ``def add(a: float, b: float) -> float:`    `return a + b``   ``add_tool = FunctionTool.from_defaults(fn=add)``agent = ReActAgent.from_tools([multiply_tool, add_tool], llm=llm, verbose=True)
  

当结合自我反思或自我修正时,Agent工作流的优势更加显著。这是一个日益增长的领域,目前正在探索各种Agent架构。

微调

微调(Fine-tuning)是向LLM输入特定的领域和专业数据集,以修改模型,使其更好地与某一目标对齐的过程。它不同于提示工程和RAG,因为它允许更新LLM的权重和参数。完全微调指的是通过反向传播更新预训练LLM的所有权重,这需要大量的内存来存储所有权重和参数,并可能导致模型在其他任务上的能力显著下降(即灾难性遗忘)。

因此,PEFT(Parameter Efficient Fine Tuning,参数高效微调)被更广泛地应用,以减轻这些问题,同时节省模型训练的时间和成本。PEFT方法主要分为三类:

  1. 选择性微调(Selective):选择初始LLM参数的一个子集进行微调,相较于其他PEFT方法,这种方法在计算上可能更加密集。

  2. 重参数化(Reparameterization):通过训练低秩表示的权重来调整模型权重。例如,低秩适应(Lower Rank Adaptation,LoRA)就是这一类方法之一,通过用两个较小的矩阵表示权重更新,从而加速微调。

  3. 加性微调(Additive):向模型中添加额外的可训练层,包括适配器(adapters)和软提示(soft prompts)等技术。

微调过程与深度学习训练过程类似,需要以下输入:

  • 训练和评估数据集

  • 训练参数,定义超参数(例如学习率、优化器)

  • 预训练LLM模型

  • 计算度量和算法应优化的目标函数

以下是使用transformers Trainer实现微调的示例:

from transformers import TrainingArguments, Trainer``   ``training_args = TrainingArguments(`    `output_dir=output_dir,`    `learning_rate=1e-5,`    `eval_strategy="epoch"``)``   ``trainer = Trainer(`    `model=model,`    `args=training_args,`    `train_dataset=train_dataset,`    `eval_dataset=eval_dataset,`    `compute_metrics=compute_metrics,``)``   ``trainer.train()
  

微调有广泛的应用场景。例如,指令微调(instruction fine-tuning)通过在prompt-completion(提示-完成)对上进行训练,优化LLM进行对话和遵循指令的能力。另一个例子是领域适应(domain adaptation),这是一种无监督的微调方法,帮助LLM在特定的知识领域中专门化。

RLHF

**RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)**是一种强化学习技术,通过基于人类偏好的方式来微调LLM。RLHF的工作原理是通过人类反馈训练一个奖励模型,并将该模型用作奖励函数,通过PPO(Proximal Policy Optimization,近端策略优化)优化强化学习策略。这个过程需要两组训练数据:一组用于训练奖励模型的偏好数据集,和一组用于强化学习循环中的提示数据集。

让我们将其分解成几个步骤:

  1. 收集偏好数据集,由人工标注员对模型生成的不同回答进行评分,标注哪些回答符合人类偏好。偏好数据集的一个示例格式为{input_text, candidate1, candidate2, human_preference},表示哪个候选答案更受偏好。

  2. 使用偏好数据集训练奖励模型,该奖励模型本质上是一个回归模型,输出一个标量,表示模型生成回答的质量。奖励模型的目标是最大化优胜候选答案与失败候选答案之间的分数。

  3. 在强化学习循环中使用奖励模型对LLM进行微调。目标是更新策略,使得LLM能够生成最大化奖励模型所产生奖励的回答。这个过程使用提示数据集,提示数据集的格式为{prompt, response, rewards}。

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

# trl: Transformer Reinforcement Learning library``from trl import PPOTrainer, PPOConfig, AutoModelForSeq2SeqLMWithValueHead``from trl import create_reference_model``from trl.core import LengthSampler``   ``# 初始化预训练的模型和分词器``model = AutoModelForCausalLMWithValueHead.from_pretrained(config.model_name)``tokenizer = AutoTokenizer.from_pretrained(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,`     `model=ppo_model,`     `tokenizer=tokenizer,`     `dataset=dataset["train"],`    `data_collator=collator``)`                      `   ``# 通过奖励逐步更新ppo_trainer``ppo_trainer.step(query_tensors, response_tensors, rewards)

RLHF广泛应用于使模型的回答与人类偏好对齐。常见的使用场景包括减少回答的有害性和模型的幻觉现象。然而,它的缺点是需要大量人工标注的数据,并且与策略优化相关的计算成本较高。因此,为了缓解这些限制,提出了如 AI反馈强化学习(Reinforcement Learning from AI feedback)和 直接偏好优化(Direct Preference Optimization,DPO)等替代方法。

https://towardsdatascience.com/6-common-llm-customization-strategies-briefly-explained/

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

基于此,我用做产品的心态来打磨这份大模型教程,深挖痛点并持续修改了近70次后,终于把整个AI大模型的学习门槛,降到了最低!

在这个版本当中:

第一您不需要具备任何算法和数学的基础
第二不要求准备高配置的电脑
第三不必懂Python等任何编程语言

您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型教程已经给大家整理并打包,现在将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

五、AI产品经理大模型教程

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

Logo

科技之力与好奇之心,共建有温度的智能世界

更多推荐