网站设计师培训图片,怎么做买东西的网站,免费域名注册平台大全,做电影网站模板教学设计在大语言模型#xff08;LLM#xff09;快速发展的今天#xff0c;如何让通用的预训练模型适应特定领域和任务成为了关键挑战。微调技术正是解决这一挑战的核心手段。本文将详细介绍五种主流的大模型微调方法#xff1a;**全量微调、Adapter、LoRA/QLoRA和前缀微调#xf…在大语言模型LLM快速发展的今天如何让通用的预训练模型适应特定领域和任务成为了关键挑战。微调技术正是解决这一挑战的核心手段。本文将详细介绍五种主流的大模型微调方法**全量微调、Adapter、LoRA/QLoRA和前缀微调指令微调**涵盖原理详解、代码实例、方法选择和原理图示。全量微调彻底的模型重塑原理与过程全量微调是最传统、最彻底的微调方法。其核心思想是使用领域特定数据更新预训练模型中的所有参数。工作原理加载预训练模型权重准备目标任务训练数据在整个训练过程中更新模型的所有层和参数保存完整的微调后模型代码实例from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer一、加载模型和分词器model_name “bert-base-uncased”tokenizer AutoTokenizer.from_pretrained(model_name)model AutoModelForSequenceClassification.from_pretrained(model_name, num_labels2)二、准备训练参数training_args TrainingArguments(output\_dir./full\_finetuning\_results, learning\_rate2e-5, per\_device\_train\_batch\_size16, num\_train\_epochs3, weight\_decay0.01,)三、创建Trainer并开始训练trainer Trainer(modelmodel, argstraining\_args, train\_datasettrain\_dataset, eval\_dataseteval\_dataset, tokenizertokenizer,)四、执行全量微调trainer.train()trainer.save_model(“./full_tuned_model”)优缺点分析优点性能潜力最大能深度适配目标任务方法简单直接无需复杂配置缺点计算资源和显存需求极高训练时间长碳足迹大容易发生过拟合和灾难性遗忘存储成本高每个任务保存完整模型五、Adapter微调模块化插件方案原理与过程Adapter方法通过在Transformer模块中插入小型神经网络层实现参数高效微调。原始模型参数被冻结只训练新增的Adapter层。工作原理在Transformer的每个FFN层后插入Adapter模块冻结预训练模型的所有参数只训练新添加的Adapter层通过残差连接保持信息流通代码实例from transformers import AutoTokenizer, AutoModelForSequenceClassificationfrom transformers.adapters import AdapterConfig加载模型model AutoModelForSequenceClassification.from_pretrained(“bert-base-uncased”, num_labels2)配置并添加Adapteradapter_config AdapterConfig.load(“pfeiffer”)model.add_adapter(“sentiment_adapter”, configadapter_config)激活Adapter并冻结基础模型model.train_adapter(“sentiment_adapter”)model.freeze_model()训练Adaptertraining_args TrainingArguments(output\_dir./adapter\_results, learning\_rate1e-4, per\_device\_train\_batch\_size16, num\_train\_epochs3,)trainer Trainer(modelmodel, argstraining\_args, train\_datasettrain\_dataset,)trainer.train()model.save_adapter(“./saved_adapter”, “sentiment_adapter”)优缺点分析优点参数效率高仅训练1-3%参数支持多任务学习轻松切换适配器保持原始模型知识减少灾难性遗忘缺点增加模型推理延迟需要修改模型结构性能可能略低于全量微调LoRA/QLoRA低秩适配的革新原理与过程LoRA基于低秩适应假设通过分解权重更新矩阵来高效微调模型。QLoRA在此基础上引入量化进一步降低资源需求。核心数学原理h W₀x ΔWx W₀x BAx其中W₀冻结的预训练权重B和A可训练的低秩矩阵r秩控制适配器大小核心原理总结LoRA 的数学基础LoRA 的核心思想基于低秩适应假设其数学表达式为texth W₀x ΔWx W₀x BAx其中W₀预训练的权重矩阵冻结ΔW权重更新矩阵B和A低秩分解矩阵可训练r秩r ≪ d控制适配器大小参数效率计算对于维度为 d×d 的权重矩阵原始参数数量d²LoRA 参数数量2dr参数比例2r/d示例d768, r8 → 参数比例 16/768 ≈ 2.08%训练参数减少约 50 倍代码实例from peft import LoraConfig, get_peft_model, TaskTypefrom transformers import AutoTokenizer, AutoModelForSequenceClassification加载模型model AutoModelForSequenceClassification.from_pretrained(“bert-base-uncased”, num_labels2)配置LoRAlora_config LoraConfig(task\_typeTaskType.SEQ\_CLS, inference\_modeFalse, r8, # 秩 lora\_alpha32, lora\_dropout0.1, target\_modules[query, value])包装模型lora_model get_peft_model(model, lora_config)lora_model.print_trainable_parameters() # 输出可训练参数占比训练LoRAtraining_args TrainingArguments(output\_dir./lora\_results, learning\_rate1e-3, per\_device\_train\_batch\_size16, num\_train\_epochs3,)trainer Trainer(modellora\_model, argstraining\_args, train\_datasettrain\_dataset,)trainer.train()保存适配器文件很小trainer.save_model(“./lora_adapter”)优缺点分析优点极高的参数效率0.1-1%参数无推理延迟权重可合并QLoRA使得单卡微调超大模型成为可能性能接近全量微调缺点需要理解低秩适应概念超参数秩r需要调优QLoRA可能带来轻微精度损失前缀微调提示工程的进阶原理与过程前缀微调通过在输入序列前添加可训练的虚拟令牌来引导模型行为整个原始模型保持冻结。工作原理在输入文本前添加可训练的前缀令牌冻结整个预训练模型仅优化前缀令牌的嵌入向量通过注意力机制影响模型输出代码实例from peft import PrefixTuningConfig, get_peft_modelfrom transformers import AutoTokenizer, AutoModelForSequenceClassification加载模型model AutoModelForSequenceClassification.from_pretrained(“bert-base-uncased”, num_labels2)配置前缀微调prefix_config PrefixTuningConfig(task\_typeTaskType.SEQ\_CLS, num\_virtual\_tokens10, # 虚拟令牌数量)包装模型prefix_model get_peft_model(model, prefix_config)prefix_model.print_trainable_parameters()训练前缀training_args TrainingArguments(output\_dir./prefix\_results, learning\_rate1e-2, per\_device\_train\_batch\_size16, num\_train\_epochs5,)trainer Trainer(modelprefix\_model, argstraining\_args, train\_datasettrain\_dataset,)trainer.train()优缺点分析优点参数效率极高0.01-0.1%参数完全保持原始模型不变训练速度最快缺点性能可能低于其他方法前缀长度和初始化对效果影响大可解释性较差指令微调训练专业助手核心概念传统预训练模型擅长补全文本给定今天天气很好“可能续写适合出去玩”但不擅长遵循特定指令指令微调后的模型理解指令给定请把这句话翻译成英文今天天气很好会输出The weather is nice today能够执行分类、总结、翻译、对话等多种任务基础指令微调代码import torchfrom transformers import (AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, DataCollatorForLanguageModeling)from datasets import Datasetimport json1. 加载模型和分词器model_name “microsoft/DialoGPT-medium” # 以DialoGPT为例tokenizer AutoTokenizer.from_pretrained(model_name)tokenizer.pad_token tokenizer.eos_token # 设置pad tokenmodel AutoModelForCausalLM.from_pretrained(model_name)2. 准备指令数据格式def format_instruction_data(example):将指令数据格式化为模型输入 instruction example[instruction] input\_text example.get(input, ) output example[output]构建训练文本指令 输入 响应if input\_text: prompt f指令: {instruction}\n输入: {input\_text}\n响应: else: prompt f指令: {instruction}\n响应: 训练时我们需要prompt output作为完整序列full\_text prompt output return {text: full\_text, prompt: prompt}3. 示例数据instruction_data [{ instruction: 将以下中文翻译成英文, input: 今天天气很好, output: The weather is nice today }, { instruction: 情感分析, input: 这部电影太精彩了, output: 正面 }, { instruction: 总结以下文本, input: 人工智能是计算机科学的一个分支..., output: 人工智能是计算机科学的分支致力于创造智能机器。 },更多指令数据…]4. 数据处理def tokenize_function(examples):# 对文本进行分词 tokenized tokenizer( examples[text], truncationTrue, paddingFalse, max\_length512, return\_tensorsNone )对于因果语言模型标签就是输入本身移位后tokenized[labels] tokenized[input\_ids].copy() return tokenized创建数据集formatted_data [format_instruction_data(ex) for ex in instruction_data]dataset Dataset.from_list(formatted_data)tokenized_dataset dataset.map(tokenize_function, batchedTrue)5. 训练参数training_args TrainingArguments(output\_dir./instruction\_tuned\_model, overwrite\_output\_dirTrue, num\_train\_epochs3, per\_device\_train\_batch\_size4, save\_steps500, save\_total\_limit2, prediction\_loss\_onlyTrue, remove\_unused\_columnsFalse, learning\_rate5e-5, logging\_dir./logs,)6. 创建Trainertrainer Trainer(modelmodel, argstraining\_args, train\_datasettokenized\_dataset, data\_collatorDataCollatorForLanguageModeling( tokenizertokenizer, mlmFalse, # 不使用掩码语言模型 ),)7. 开始训练print(“开始指令微调…”)trainer.train()trainer.save_model()结合LoRA的指令微调推荐from peft import LoraConfig, get_peft_model, TaskType在基础代码上添加LoRA配置lora_config LoraConfig(task\_typeTaskType.CAUSAL\_LM, # 因果语言模型 inference\_modeFalse, r8, lora\_alpha32, lora\_dropout0.1, target\_modules[q\_proj, v\_proj] # 针对LLaMA等模型)应用LoRA到模型model get_peft_model(model, lora_config)model.print_trainable_parameters()然后使用相同的训练流程…指令微调优点听话好用从此模型能听懂人话你说它做告别答非所问一专多能一个模型搞定翻译、总结、问答无需为每个任务单独训练举一反三学会指令模式后遇到新指令也能智能应对输出精准回答简洁到位不再啰嗦跑题直接给你想要的结果开发省心统一接口处理多任务大大降低部署复杂度缺点数据挑剔需要大量高质量的指令数据收集清洗成本高表达敏感换个说法下指令效果可能天差地别记忆衰退学了新技能可能忘了旧知识需要反复平衡资源大户训练过程依然烧钱烧显卡成本不容小觑过度适应容易变成“应试专家”对奇葩指令束手无策方法选择总结与建议综合对比表方法训练参数存储开销推理速度性能表现易用性适用场景全量微调100%大完整模型正常★★★★★简单资源充足追求极致性能Adapter1-3%小适配器略慢★★★★中等多任务学习需要模块化LoRA0.1-1%极小适配器正常★★★★☆简单大多数场景的首选QLoRA0.1-1%极小适配器正常★★★★简单资源受限单卡微调大模型前缀微调0.01-0.1%极小前缀正常★★★中等极低资源快速实验选择决策指南如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】