资讯动态

大语言模型应用基石:预训练、微调与上下文学习深度解析

发布时间:2026/8/22 7:09:44 来源:尧图企业网站定制
1. 项目概述大语言模型能力构建的三块基石最近和不少刚入行的朋友聊天发现大家一提到大语言模型脑子里蹦出来的就是“ChatGPT”、“文心一言”这些可以直接对话的应用。这当然没错但如果你真想搞懂它、甚至想自己动手“调教”一个模型那有三个词你必须得掰开揉碎了理解预训练、微调和上下文学习。这三个概念就像是盖房子的三块基石决定了模型最终能干什么、干得有多好。简单来说你可以把大语言模型想象成一个刚毕业的博士生。预训练就是他在大学里长达数年的通识教育他阅读了海量的互联网文本论文、书籍、网页学会了人类的语言规则、语法逻辑和世界常识成了一个“博学”但“不专精”的通才。微调则是他进入一家具体公司比如一家律所或医院后的岗前培训用这个领域特有的、高质量的数据如法律条文、病历报告对他进行针对性训练让他迅速成为该领域的专家。而上下文学习更像是他在处理具体任务时你临时给他的一份“任务简报”和“参考范例”他不需要改变自己固有的知识模型参数不变就能根据这份简报和范例立刻调整回答的风格和内容完成特定指令。为什么了解这三者如此重要因为无论你是想低成本地在本地部署一个模型来处理公司文档还是想基于开源模型打造一个专属的客服机器人你的技术路线选择都绕不开这三者。比如直接用预训练模型对话它可能答非所问只做微调每次新任务都要重新训练成本太高而巧妙利用上下文学习往往能用最小的代价让模型在特定场景下表现惊艳。接下来我们就花点时间把这“三块基石”彻底讲透。2. 预训练赋予模型“通识”与“语言本能”预训练是大语言模型一切能力的起点也是最耗资源、最决定模型“天花板”的阶段。这个过程的目标不是让模型学会做某件具体的事而是让它掌握最底层的语言规律和世界知识。2.1 核心目标与训练数据预训练的核心目标可以概括为“下一个词预测”。给模型输入一段文本的前面部分让它预测接下来最可能出现的词是什么。通过在海量文本上反复进行这个练习模型逐渐内化了词汇之间的统计关联、语法结构、甚至逻辑推理能力。训练数据通常是一个超大规模的、多样化的文本语料库可能包含网页数据如Common Crawl项目抓取的数十亿网页覆盖新闻、论坛、百科等。书籍与学术论文提供深度、连贯的长文本和专业知识。代码仓库如GitHub上的公开代码帮助模型理解编程逻辑。注意数据的质量和多样性至关重要。如果数据中噪音太多如大量广告、乱码或领域严重偏斜训练出的模型就会带有相应的“偏见”或缺陷。2.2 核心架构与训练过程目前主流的大语言模型如GPT系列、LLaMA系列都采用Transformer架构特别是其中的Decoder-only结构。这种结构在预训练时采用“自回归”的方式即模型在预测下一个词时只能看到它之前的词上文而不能看到之后的词下文。训练过程可以简化为以下步骤文本分词将原始文本分割成模型能理解的子词单元如通过Byte-Pair Encoding算法。构建输入将分词后的序列输入模型并添加位置编码让模型知道词的顺序。前向计算模型通过多层Transformer块进行计算每一层都进行自注意力机制和前馈神经网络运算逐步提取和融合信息。计算损失将模型预测的下一个词的概率分布与真实的“下一个词”进行对比计算交叉熵损失。这个损失衡量了预测的错误程度。反向传播与优化通过反向传播算法将损失值沿着网络反向传递计算每个参数的梯度然后使用优化器如AdamW更新模型的权重参数让模型下次预测得更准。这个过程会持续进行数万亿乃至数十万亿次的词元预测消耗数千甚至上万张GPU卡月如GPT-3的训练最终得到一个拥有数千亿参数的“基础模型”。这个模型就像一个掌握了语言“元技能”的超级大脑但它还不知道如何礼貌地对话、如何安全地回答、如何遵循指令。2.3 预训练模型的局限性与常见误区很多初学者会误以为下载一个预训练好的模型如LLaMA-7B就能直接用了。实际上直接使用预训练模型进行对话体验往往很差原因如下缺乏指令遵循能力你问“写一首关于春天的诗”它可能会继续续写“写一首关于春天的诗首先……”而不是执行指令。内容不可控它可能生成有害、偏见或不安全的文本因为它只是在模仿训练数据中的模式。格式不规范它的回答可能是散乱的、冗长的不符合人类对话的习惯。因此预训练模型更像是一块“原材料”或“毛坯房”虽然具备了坚固的结构和基础但离舒适入住投入实际应用还有很大距离。这就需要接下来的“精装修”环节——微调。3. 微调从“通才”到“专才”的定向锻造微调就是在预训练好的“基础模型”之上使用特定领域或任务的数据进行额外的训练让模型适应新的需求。这是让大模型真正落地到千行百业的关键一步。3.1 微调的核心思想与类型微调的核心思想是“迁移学习”。我们不再从零开始训练模型而是利用预训练模型已经学到的强大语言表征能力通过相对少量的新数据引导其参数进行小幅调整从而快速适应新任务。根据目标和数据形式的不同微调主要分为以下几类指令微调这是让模型学会“听懂人话”的关键。使用大量指令期望输出的配对数据来训练模型。例如指令“将以下英文翻译成中文Hello, world!”期望输出“你好世界” 经过指令微调的模型才能理解“翻译”、“总结”、“写邮件”等人类指令的意图。对齐微调目标是让模型的输出符合人类的价值观和偏好使其有用、诚实、无害。常用技术是基于人类反馈的强化学习。简单理解就是让人类对模型的多个回答进行排序打分然后训练一个“奖励模型”来模拟人类的偏好再用这个奖励模型去指导基础模型的微调。领域适应微调使用某个垂直领域如医疗、法律、金融的专业数据对模型进行微调使其在该领域的知识深度和术语使用上达到专家水平。例如用医学教科书和病历微调后的模型在回答医学问题时会更精准。3.2 全参数微调与高效微调技术传统的微调会更新模型的所有参数这被称为全参数微调。虽然效果通常最好但它要求巨大的显存来存储优化器状态、梯度和参数副本成本极高。例如微调一个70B参数的模型可能需要超过1TB的GPU显存这几乎只有大型机构才能承担。因此一系列高效微调技术应运而生它们只更新模型的一小部分参数从而大幅降低资源需求。目前最主流的是LoRA。LoRALow-Rank Adaptation低秩适应的聪明之处在于它认为模型在适应新任务时权重矩阵的变化是“低秩”的。它不直接更新原始的大权重矩阵例如W尺寸为d×k而是训练两个小得多的矩阵A和B。其中A的尺寸是d×rB是r×k这个r秩远小于d和k通常为4、8、16。在前向传播时将原始权重和低秩矩阵的乘积相加h Wx BAx。微调时只训练A和B这两个小矩阵而冻结原始的W。这样做的好处极其明显显存占用剧降假设W是 4096×4096参数量约1680万。如果r8则A和B的总参数量只有 40968 84096 65536个仅为原来的0.39%这意味着用消费级显卡如24G显存的RTX 4090就能微调大模型。便于切换与部署对于不同的任务只需要保存和加载对应的A和B小矩阵通常只有几MB到几十MB原始的大模型几个GB到几十GB可以共享。切换任务就像换一张“技能卡”。效果接近全微调在很多任务上LoRA能达到全参数微调90%以上的效果。除了LoRA还有像QLoRA量化LoRA进一步降低显存、Adapter在Transformer块中插入小型神经网络模块等技术共同构成了高效微调的生态。3.3 微调实战以LoRA微调Qwen1.5为例假设我们想用LoRA微调一个Qwen1.5-7B模型让它擅长写科技类新闻稿。以下是基于transformers和peft库的核心步骤框架from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments from peft import LoraConfig, get_peft_model, TaskType from datasets import load_dataset import torch # 1. 加载基础模型和分词器 model_name Qwen/Qwen1.5-7B tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name, torch_dtypetorch.float16, device_mapauto) # 2. 配置LoRA lora_config LoraConfig( task_typeTaskType.CAUSAL_LM, # 因果语言模型任务 r8, # LoRA的秩 lora_alpha32, # 缩放参数 lora_dropout0.1, target_modules[q_proj, v_proj] # 针对Transformer中的Q, V投影矩阵应用LoRA ) model get_peft_model(model, lora_config) model.print_trainable_parameters() # 可查看可训练参数占比通常不到1% # 3. 准备数据 # 假设我们有一个JSONL格式的数据集每行如{instruction: 写一篇关于AI芯片的新闻稿, output: 近日某公司发布...} def format_func(example): text f指令{example[instruction]}\n回答{example[output]} return {text: text} dataset load_dataset(json, data_filestech_news_data.jsonl)[train] dataset dataset.map(format_func) # 4. 定义训练参数 training_args TrainingArguments( output_dir./qwen-lora-technews, per_device_train_batch_size4, gradient_accumulation_steps4, num_train_epochs3, logging_steps10, save_steps100, learning_rate2e-4, fp16True, # 使用混合精度训练节省显存 ) # 5. 使用Trainer进行训练 trainer Trainer( modelmodel, argstraining_args, train_datasetdataset, data_collatorDataCollatorForLanguageModeling(tokenizer, mlmFalse), ) trainer.train()实操心得target_modules的选择对效果有影响。对于大多数Decoder-only模型选择注意力机制中的q_proj查询和v_proj值通常是个不错的起点。训练时学习率不宜过大一般在1e-4到5e-4之间。数据质量比数量更重要几百条精心构造的高质量指令数据可能比几万条噪音数据效果更好。4. 上下文学习不更新参数的“情境化”智能如果说微调是给模型做“长期培训”那么上下文学习就是“临场发挥指南”。它不需要修改模型的任何参数仅仅通过在输入给模型的提示词中提供任务描述和几个示例就能引导模型完成新任务。这是大语言模型展现出的最神奇的能力之一。4.1 基本原理利用预训练中的模式匹配上下文学习之所以有效根植于模型在预训练阶段养成的强大能力。在预训练时模型见过互联网上各种文本格式比如问答对“问珠穆朗玛峰多高答8848.86米。”翻译对照“英文Hello。中文你好。”情感分析“这部电影太精彩了- 正面”当你在提示词中给出类似的格式即“上下文”模型就会自动激活预训练时学到的对应模式从而“照葫芦画瓢”地生成符合格式的答案。其核心公式可以概括为[任务描述] [少数示例] [待处理输入] [模型输出]。4.2 关键技术提示工程与思维链要让上下文学习发挥最大威力关键在于构建高质量的提示词这催生了提示工程这一领域。零样本学习只给出任务描述不给示例。提示词“请将以下英文翻译成中文Artificial Intelligence is changing the world.”模型依靠对“翻译”一词的通用理解来完成任务。少样本学习给出任务描述和少量示例通常1-5个。提示词请判断句子情感是正面还是负面。 示例1句子“这家餐厅的服务太棒了” 情感正面 示例2句子“我等了一个小时才上菜。” 情感负面 现在请判断句子“产品性价比很高非常推荐。” 情感模型通过类比示例来推断答案。思维链这是提升复杂推理任务准确率的革命性技术。不是直接让模型给出答案而是引导它输出推理的中间步骤。普通提示“小明有5个苹果吃了2个又买了3个他现在有几个苹果”思维链提示“小明有5个苹果吃了2个所以剩下5-23个。然后又买了3个所以现在有336个。因此他现在有6个苹果。”通过在少样本示例中展示这种逐步推理的过程模型在回答新问题时也会模仿输出推理步骤从而大幅提升数学、逻辑问题的正确率。4.3 上下文学习的优势、局限与应用场景优势零成本无需训练立即使用。灵活快速可以随时通过修改提示词来切换任务。可解释性模型的推理过程如果使用思维链在一定程度上是可见的。局限上下文长度限制模型能处理的提示词长度有限如4K、8K、128K tokens限制了能提供的示例数量和任务复杂度。稳定性问题对提示词的格式、示例顺序、甚至措辞敏感有时微小的改动会导致输出差异很大。知识无法更新模型的知识截止于其预训练数据无法通过上下文学习注入新知识它只是在调动已有知识。典型应用场景临时性、探索性任务快速测试模型在某个新任务上的潜力。构建AI应用原型在投入资源微调前用上下文学习验证产品思路。辅助复杂问题解决通过思维链提示让模型帮我们拆解和分析问题。5. 三者对比与联合使用策略预训练、微调和上下文学习不是互斥的而是相辅相成、根据需求分层使用的工具。5.1 核心差异对比表特性预训练微调上下文学习目标学习通用语言表征和世界知识适应特定任务或领域在推理时快速适应新任务数据需求海量、无标注文本TB/PB级中等规模、高质量标注数据千/万条少量通常10个高质量示例计算成本极高千卡/月级别中到高全微调高高效微调低极低仅推理成本参数更新初始化所有参数更新全部或部分参数不更新任何参数输出灵活性固定基于训练数据分布针对特定任务优化通过提示词高度灵活可调知识更新注入训练数据中的知识注入领域特定知识无法注入新知识仅调用已有知识典型耗时数周至数月数小时至数天实时秒级5.2 如何选择从场景出发的决策路径在实际项目中你可以遵循以下决策路径任务是否明确、固定且高频是- 优先考虑微调。例如打造一个永不休息的、风格固定的法律合同审核助手。微调后的模型性能稳定、响应质量高长期来看平均成本更低。否- 进入第2步。任务是否多变或需要快速验证是- 优先使用上下文学习。例如一个内部工具需要时不时让模型以不同格式总结会议纪要有时要列表有时要段落。用提示词调整最灵活。否- 任务可能过于复杂或新颖需要重新评估。是否需要模型掌握全新的、预训练数据中没有的知识是-微调是唯一选择。上下文学习无法让模型“记住”新知识。例如让模型掌握你公司2024年才发布的产品手册细节。否- 可以继续使用上下文学习或基础模型。一个经典的联合使用范式基础使用经过指令微调和对齐微调的开源模型如Qwen1.5-Chat、Llama 3 Instruct作为起点。这已经是一个“听话且安全”的模型。专业化如果该模型在你的专业领域如医疗诊断报告生成表现不足则使用该领域的专业数据对其进行LoRA微调得到专属专家模型。场景化在实际部署的应用程序中针对具体的用户请求在调用微调后的模型时依然可以结合上下文学习在提示词中提供当次对话的历史、用户的个性化要求或几个参考样例以获得更精准的响应。6. 常见问题与实战避坑指南在实际操作中无论是微调还是使用上下文学习都会遇到各种“坑”。这里分享一些高频问题和处理经验。6.1 微调过程中的典型问题问题1训练损失不下降或波动剧烈。可能原因学习率设置不当过高或过低数据质量差噪声大target_modules选择不合适。排查技巧绘制损失曲线。如果曲线平稳不降尝试将学习率提高一个数量级例如从1e-4调到5e-4或降低调到5e-5。检查数据格式。确保你的指令和输出格式是模型在预训练或指令微调阶段见过的。一个技巧是先用ChatGPT生成几百条高质量数据作为“种子”。尝试更换target_modules。对于某些模型对k_proj,o_proj或全连接层fc等模块应用LoRA可能效果更好。问题2模型“遗忘”了原有通用知识或输出乱码。可能原因这就是所谓的“灾难性遗忘”。微调数据量太少或领域太窄过度拟合了新数据导致原有知识被覆盖。也可能是训练步数太多。解决方案混合数据在微调数据中混入一部分通用指令数据如Alpaca格式的数据让模型在学习新技能的同时不忘旧本领。早停法密切监控模型在验证集上的表现当通用能力开始下降时及时停止训练。降低LoRA的alpha值alpha控制新学知识的权重适当调低可以减轻对原始模型的覆盖。问题3资源不足如何微调超大模型首选QLoRA使用4-bit量化将模型加载再结合LoRA。这能让你在单张24G显存的消费卡上微调30B甚至70B的模型。参数高效微调组合拳除了LoRA还可以考虑gradient checkpointing梯度检查点用计算时间换显存和fsdp完全分片数据并行多卡训练大模型神器。6.2 上下文学习的使用技巧与陷阱技巧1示例的顺序和数量有讲究。顺序把最典型、质量最高的示例放在最前面。模型对靠近输入末尾的示例更敏感。数量并非越多越好。受限于上下文窗口和模型注意力机制通常3-5个高质量示例效果最佳。太多示例可能导致模型性能下降或混淆。技巧2指令描述要清晰明确。差“处理一下这段文本。”好“请将以下用户评论进行情感分类只输出‘正面’、‘负面’或‘中性’三个词之一。”陷阱幻觉问题在上下文学习中依然存在。模型可能会根据你提供的示例“编造”一个符合格式但内容错误的答案。例如你给了一个“北京-中国东京-日本”的示例然后问“巴黎-”模型很可能根据“首都-国家”的模式正确输出“法国”。但如果你问一个它不知道的城市它依然会强行编造一个国家。永远不要完全信任模型的输出特别是涉及事实性内容时必须进行核实。6.3 模型选择与评估如何选择基础模型追求最佳效果考虑GPT-4、Claude 3等闭源商业API但成本高且可控性差。追求可控与定制选择开源模型。当前以我的经验看Qwen1.5/2.5系列和Llama 3系列是综合表现最好的开源基座。Qwen对中文支持更原生Llama 3的英文逻辑推理能力极强。资源极度受限考虑更小的模型如Phi-3 Mini (3.8B)、Gemma (2B/7B)它们在特定任务上经过精调后也能有不错表现。如何评估微调后的模型不要只看损失值。设计一个小而精的评估集包含你的核心任务场景进行人工或自动化评估。自动化指标对于文本生成可以使用BLEU、ROUGE评估摘要、准确率评估分类等。人工评估制定清晰的评分标准如相关性、流畅度、信息准确性、安全性让多人进行盲评。这是最可靠但成本最高的方法。最后我想分享一点个人体会大模型技术迭代飞快但预训练、微调、上下文学习这三块基石相对稳固。理解它们你就抓住了大模型应用的主脉络。不必盲目追求最新最大的模型很多时候用一个7B模型加上高质量的领域数据做LoRA微调再配合精心设计的提示词其产生的业务价值可能远超直接调用一个不受控的通用大模型。关键在于想清楚你的场景到底需要什么然后选择最经济、最直接的技术组合拳。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价