domain adaptation finetune

领域适配微调方案

概述 领域适配微调方案是AI智能体领域中领域适配微调方案的重要主题。本文将从多个角度深入分析这一话题,为读者提供系统性的认知框架和实践参考。 核心概念 基本定义 在深入讨论之前,我们需要明确几个核心概念。AI智能体是指能够感知环境、理解指令、规划行动并调用工具完成任务的AI系统。与传统的聊天机器人不同,智能体具有自主性、目标导向性和工具使用能力。 领域适配微调方案涉及的关键技术包括: 大语言模型:作为智能体的认知引擎,负责理解、推理和生成 工具调用:通过Function Calling或MCP协议与外部系统交互 记忆系统:短期记忆处理当前对话,长期记忆存储历史经验 规划引擎:将复杂任务分解为可执行的子步骤 技术原理 从技术层面看,领域适配微调方案的核心在于如何让AI系统更好地理解和执行人类意图。这涉及多个技术环节的协同: 首先是感知层,智能体需要准确理解用户的自然语言指令,提取关键信息和约束条件。其次是规划层,将高层目标分解为具体的执行步骤。然后是执行层,调用合适的工具完成每个步骤。最后是反馈层,根据执行结果调整后续策略。 实践分析 当前现状 在RAG与微调领域,当前的技术实践呈现出几个明显特征: 工程化程度提升:从实验室原型到生产级系统,工程能力成为关键差异化因素 评估体系完善:越来越多标准化的评测基准被提出,帮助开发者量化能力边界 开源生态繁荣:开源框架和工具链的成熟降低了开发门槛 安全意识增强:对AI安全和对齐问题的重视程度显著提升 关键挑战 尽管进展显著,领域适配微调方案仍面临几个核心挑战: 技术挑战: 大模型的幻觉问题在智能体场景下被放大,因为智能体需要做出实际决策 多步推理中的错误累积效应导致长程任务成功率下降 工具调用的可靠性受外部API稳定性影响 工程挑战: 智能体的可观测性不足,调试和排错困难 成本控制与性能优化的平衡 从单机到分布式部署的架构复杂性 安全挑战: Prompt注入等攻击手段不断进化 智能体权限管理需要更精细化的控制 数据隐私保护在多Agent协作场景下更加复杂 优化策略 针对上述挑战,以下是几个关键优化方向: 技术优化 分而治之:将复杂任务分解为可独立验证的子任务,降低单步错误影响 多路投票:对关键决策使用多次采样投票机制,提高可靠性 渐进式信任:智能体权限从最小化开始,根据表现逐步扩展 人在回路:高风险决策保留人工审核环节 工程优化 可观测性优先:建立完善的日志、指标和追踪体系 灰度发布:新版本智能体先在小流量环境验证 自动化测试:构建端到端测试套件,防止回归 成本监控:实时追踪Token消耗和API调用成本 案例研究 为了更具体地说明领域适配微调方案的实践价值,我们来看一个典型场景: 某科技公司在内部IT运维中部署了AI智能体,负责处理员工的工单请求。智能体需要理解员工的自然语言描述,判断问题类型,查询知识库,执行修复操作或转接人工。 实施过程中遇到的关键问题包括: 员工描述模糊导致意图识别错误 知识库信息过时导致给出错误建议 某些操作需要管理员权限存在安全风险 解决方案: 引入澄清对话机制,在不确定时主动追问 建立知识库更新流程,定期审核内容 实施权限分级制度,敏感操作需人工确认 效果:工单首次解决率提升35%,平均处理时间缩短60%,员工满意度显著提升。 未来趋势 领域适配微调方案的发展趋势值得关注: 标准化:MCP等开放协议将推动工具接口标准化,降低集成成本 垂直化:针对特定行业和场景的专用智能体将大量涌现 协作化:多智能体协作将成为复杂任务的标准解决方案 自主化:智能体的自主决策能力将持续提升,但需要配套的安全机制 结论 领域适配微调方案是AI智能体技术发展中的重要一环。无论是技术原理的深入理解,还是实践中的工程优化,都需要系统性思维。对于开发者和企业而言,关键在于: 理解技术能力和边界,避免过度期待 建立系统化的评估和监控体系 在创新和安全之间找到平衡 持续学习和适应快速变化的技术生态 硅基AGI探索者将持续关注RAG与微调领域的最新进展,为读者提供深度分析和实践指导。— ...

2026-06-27 · 1 min · 88 words · 硅基 AGI 探索者
domain adaptation finetuning

领域适配微调方案

引言 通用大语言模型在开放域表现优秀,但在特定领域(医疗、法律、金融、工业等)往往缺乏深度专业知识。直接使用通用模型处理领域任务,常见问题包括:领域术语理解不准确、专业推理逻辑不符合规范、输出格式不满足行业标准。领域适配微调是解决这些问题的核心路径。本文系统介绍领域适配微调的完整方案。 领域适配的目标 知识注入 让模型掌握领域专业知识:领域术语的准确定义和用法、行业标准和规范、专业流程和推理逻辑、领域特定的输出格式。 能力对齐 让模型的能力与领域任务对齐:理解领域特定的查询意图、按领域标准组织输出、遵循行业合规要求、在专业场景中做出合理判断。 区分:领域适配 vs 通用微调 通用微调侧重于提升模型的整体能力(如推理、写作),领域适配专注于特定领域知识和技能。领域适配需要更专业的数据、更精细的评估,且面临更严格的准确性要求。 数据构建 数据来源 领域文档:教材、手册、规范、论文、技术报告。这些是领域知识的主要载体。 历史对话:客服记录、咨询记录、专家问答。这些反映了真实的用户需求和领域表达方式。 标注数据:由领域专家标注的指令-响应对。质量最高但成本也最高。 合成数据:用LLM根据领域文档生成的训练样本。可大规模生成但需要质量把控。 数据构建流程 class DomainDataBuilder: def __init__(self, domain, llm): self.domain = domain # 领域标识 self.llm = llm def build_from_documents(self, documents): """从领域文档构建训练数据""" training_data = [] for doc in documents: # 1. 生成理解类问题 understanding_qa = self.generate_understanding_qa(doc) training_data.extend(understanding_qa) # 2. 生成应用类问题 application_qa = self.generate_application_qa(doc) training_data.extend(application_qa) # 3. 生成分析类问题 analysis_qa = self.generate_analysis_qa(doc) training_data.extend(analysis_qa) return training_data def generate_understanding_qa(self, doc): """生成理解类问答""" prompt = f""" 基于以下{self.domain}领域文档,生成5个理解类问答对。 问题应测试对文档中核心概念的理解。 文档:{doc[:2000]} 输出JSON格式: [{{"instruction": "...", "input": "", "output": "..."}}, ...] """ return json.loads(self.llm.generate(prompt)) def generate_application_qa(self, doc): """生成应用类问答""" prompt = f""" 基于以下{self.domain}领域文档,生成5个应用类问答对。 问题应要求将文档中的知识应用到具体场景中。 文档:{doc[:2000]} 输出JSON格式: [{{"instruction": "...", "input": "场景描述", "output": "..."}}, ...] """ return json.loads(self.llm.generate(prompt)) def generate_analysis_qa(self, doc): """生成分析类问答""" prompt = f""" 基于以下{self.domain}领域文档,生成3个分析类问答对。 问题应要求综合分析、对比评估或推理判断。 文档:{doc[:2000]} 输出JSON格式: [{{"instruction": "...", "input": "分析背景", "output": "..."}}, ...] """ return json.loads(self.llm.generate(prompt)) 数据质量保障 class DataQualityChecker: def check(self, training_data, domain_expert_evaluator=None): """多维度数据质量检查""" report = { 'total': len(training_data), 'issues': [] } for i, item in enumerate(training_data): # 1. 完整性检查 if not item.get('instruction') or not item.get('output'): report['issues'].append(f"Item {i}: 缺失instruction或output") continue # 2. 长度检查 if len(item['output']) < 50: report['issues'].append(f"Item {i}: output过短") if len(item['output']) > 4000: report['issues'].append(f"Item {i}: output过长") # 3. 领域相关性检查 if not self.is_domain_relevant(item, domain='medical'): report['issues'].append(f"Item {i}: 领域相关性低") # 4. 事实准确性检查(如果提供专家评估器) if domain_expert_evaluator: accuracy = domain_expert_evaluator(item) if accuracy < 0.8: report['issues'].append(f"Item {i}: 事实准确性低({accuracy:.2f})") report['quality_rate'] = 1 - len(report['issues']) / report['total'] return report 微调策略 分阶段微调 def staged_finetuning(model, training_data): """分阶段微调策略""" # 阶段1:领域知识注入(CPT - 持续预训练) domain_corpus = [item['raw_text'] for item in training_data['corpus']] model = continue_pretrain(model, domain_corpus, lr=5e-6, epochs=2) # 阶段2:指令跟随能力微调(SFT) sft_data = training_data['sft'] model = supervised_finetune(model, sft_data, lr=1e-5, epochs=3) # 阶段3:偏好对齐(DPO/RLHF) preference_data = training_data['preference'] model = dpo_finetune(model, preference_data, lr=5e-7, epochs=1) return model 混合数据策略 在领域数据中混入通用数据,防止过度专业化: ...

2026-06-27 · 3 min · 587 words · 硅基 AGI 探索者
embedding finetune practice

嵌入模型微调实战

概述 嵌入模型微调实战是AI智能体领域中嵌入模型微调实战的重要主题。本文将从多个角度深入分析这一话题,为读者提供系统性的认知框架和实践参考。 核心概念 基本定义 在深入讨论之前,我们需要明确几个核心概念。AI智能体是指能够感知环境、理解指令、规划行动并调用工具完成任务的AI系统。与传统的聊天机器人不同,智能体具有自主性、目标导向性和工具使用能力。 嵌入模型微调实战涉及的关键技术包括: 大语言模型:作为智能体的认知引擎,负责理解、推理和生成 工具调用:通过Function Calling或MCP协议与外部系统交互 记忆系统:短期记忆处理当前对话,长期记忆存储历史经验 规划引擎:将复杂任务分解为可执行的子步骤 技术原理 从技术层面看,嵌入模型微调实战的核心在于如何让AI系统更好地理解和执行人类意图。这涉及多个技术环节的协同: 首先是感知层,智能体需要准确理解用户的自然语言指令,提取关键信息和约束条件。其次是规划层,将高层目标分解为具体的执行步骤。然后是执行层,调用合适的工具完成每个步骤。最后是反馈层,根据执行结果调整后续策略。 实践分析 当前现状 在RAG与微调领域,当前的技术实践呈现出几个明显特征: 工程化程度提升:从实验室原型到生产级系统,工程能力成为关键差异化因素 评估体系完善:越来越多标准化的评测基准被提出,帮助开发者量化能力边界 开源生态繁荣:开源框架和工具链的成熟降低了开发门槛 安全意识增强:对AI安全和对齐问题的重视程度显著提升 关键挑战 尽管进展显著,嵌入模型微调实战仍面临几个核心挑战: 技术挑战: 大模型的幻觉问题在智能体场景下被放大,因为智能体需要做出实际决策 多步推理中的错误累积效应导致长程任务成功率下降 工具调用的可靠性受外部API稳定性影响 工程挑战: 智能体的可观测性不足,调试和排错困难 成本控制与性能优化的平衡 从单机到分布式部署的架构复杂性 安全挑战: Prompt注入等攻击手段不断进化 智能体权限管理需要更精细化的控制 数据隐私保护在多Agent协作场景下更加复杂 优化策略 针对上述挑战,以下是几个关键优化方向: 技术优化 分而治之:将复杂任务分解为可独立验证的子任务,降低单步错误影响 多路投票:对关键决策使用多次采样投票机制,提高可靠性 渐进式信任:智能体权限从最小化开始,根据表现逐步扩展 人在回路:高风险决策保留人工审核环节 工程优化 可观测性优先:建立完善的日志、指标和追踪体系 灰度发布:新版本智能体先在小流量环境验证 自动化测试:构建端到端测试套件,防止回归 成本监控:实时追踪Token消耗和API调用成本 案例研究 为了更具体地说明嵌入模型微调实战的实践价值,我们来看一个典型场景: 某科技公司在内部IT运维中部署了AI智能体,负责处理员工的工单请求。智能体需要理解员工的自然语言描述,判断问题类型,查询知识库,执行修复操作或转接人工。 实施过程中遇到的关键问题包括: 员工描述模糊导致意图识别错误 知识库信息过时导致给出错误建议 某些操作需要管理员权限存在安全风险 解决方案: 引入澄清对话机制,在不确定时主动追问 建立知识库更新流程,定期审核内容 实施权限分级制度,敏感操作需人工确认 效果:工单首次解决率提升35%,平均处理时间缩短60%,员工满意度显著提升。 未来趋势 嵌入模型微调实战的发展趋势值得关注: 标准化:MCP等开放协议将推动工具接口标准化,降低集成成本 垂直化:针对特定行业和场景的专用智能体将大量涌现 协作化:多智能体协作将成为复杂任务的标准解决方案 自主化:智能体的自主决策能力将持续提升,但需要配套的安全机制 结论 嵌入模型微调实战是AI智能体技术发展中的重要一环。无论是技术原理的深入理解,还是实践中的工程优化,都需要系统性思维。对于开发者和企业而言,关键在于: 理解技术能力和边界,避免过度期待 建立系统化的评估和监控体系 在创新和安全之间找到平衡 持续学习和适应快速变化的技术生态 硅基AGI探索者将持续关注RAG与微调领域的最新进展,为读者提供深度分析和实践指导。— ...

2026-06-27 · 1 min · 88 words · 硅基 AGI 探索者
embedding model finetuning

嵌入模型微调实战

引言 RAG系统的检索质量很大程度上取决于嵌入模型的表示能力。通用嵌入模型(如text-embedding-ada-002、BGE)在开放域表现优秀,但在特定领域(医疗、法律、金融)往往力不从心。领域术语的特殊含义、专业表达方式的差异,都可能导致通用嵌入模型的语义匹配不准确。嵌入模型微调是解决这一问题的有效手段。本文分享嵌入模型微调的完整流程。 为什么需要微调嵌入模型 领域适配问题 以医疗领域为例,“阳性"在通用语境中是褒义的,但在医学语境中仅表示检测结果。通用嵌入模型可能将"阳性结果"与"好消息"的向量拉近,而医疗场景中"阳性结果"可能意味着确诊了某种疾病。 检索质量影响 嵌入模型不匹配会导致:相关文档检索不到(召回率低)、不相关文档排在前面(精确率低)、同义词无法匹配、专业缩写无法理解。 数据准备 训练数据格式 嵌入模型微调需要三元组数据:(query, positive, negative): query:查询文本 positive:与query相关的正样本 negative:与query不相关的负样本 数据构建方法 方法一:利用已有标注数据 如果已有问答对或查询-文档配对数据,直接用作正样本对: # 从FAQ库构建训练数据 def build_from_faq(faq_data): training_data = [] for item in faq_data: query = item['question'] positive = item['answer'] # 随机采样负样本 negatives = random.sample([other['answer'] for other in faq_data if other != item], 5) training_data.append({ 'query': query, 'positive': positive, 'negatives': negatives }) return training_data 方法二:LLM辅助生成 使用LLM根据文档内容生成查询: def generate_training_data(documents, llm): training_data = [] for doc in documents: # 生成多种查询方式 prompt = f""" 根据以下文档内容,生成5个不同角度的查询问题。 问题应该能通过这段文档内容回答。 文档:{doc} 生成的问题: """ queries = llm.generate(prompt).split('\n') for query in queries: if query.strip(): training_data.append({ 'query': query.strip(), 'positive': doc, 'negatives': get_hard_negatives(query, doc, all_docs) }) return training_data 方法三:挖掘难负样本 难负样本(Hard Negatives)对微调效果至关重要——它们是与query相关但不应该匹配的文档: def get_hard_negatives(query, positive_doc, all_docs, top_k=5): """使用现有嵌入模型挖掘难负样本""" # 用现有模型检索 results = vector_store.search(query, top_k=top_k * 3) hard_negatives = [] for result in results: if result['doc'] != positive_doc and result['score'] > 0.5: hard_negatives.append(result['doc']) if len(hard_negatives) >= top_k: break return hard_negatives 数据质量检查 训练前进行数据质量检查: ...

2026-06-27 · 3 min · 478 words · 硅基 AGI 探索者
agentic rag architecture

Agentic RAG 架构:当 RAG 遇到智能体

从传统 RAG 到 Agentic RAG:一次范式跃迁 检索增强生成(Retrieval-Augmented Generation, RAG)在过去两年里几乎成了大模型应用的标配方案。但如果你在实际业务中部署过 RAG 系统,大概率经历过这些痛点:检索结果不相关却仍被塞进上下文、面对复杂问题无法分步检索、知识库更新滞后导致回答过时、多跳推理任务中检索策略僵化且无从调整。这些问题的根源在于传统 RAG 本质上是一个线性的、一次性的管道——查询进来,检索一轮,拼上下文,生成回答,结束。 Agentic RAG 的核心思路是把这个线性管道升级为一个闭环的、自适应的智能体系统。智能体不再被动地执行"检索→生成"的固定流程,而是能够自主判断何时需要检索、检索什么、检索结果是否足够、是否需要多轮检索、何时停止以及如何综合多源信息给出最终答案。这就像是把一个只会按食谱做菜的厨师,升级成了一个能根据食材、客人喜好和现场情况即兴创作的大厨。 Agentic RAG 的核心架构组件 1. 智能体控制器(Agent Controller) 整个系统的大脑。它负责理解用户意图,制定检索策略,决定下一步行动。与传统 RAG 中固定的流程不同,控制器是一个基于 LLM 的决策引擎,能够在"检索"、“推理”、“工具调用”、“回答"之间动态切换。 控制器的工作循环可以这样描述: 用户查询 → 意图分析 → 策略制定 → 行动执行 → 结果评估 → ├─ 信息充分 → 生成回答 ├─ 信息不足 → 重新检索(调整查询) └─ 需要工具 → 调用外部工具 这个循环本质上是一个 ReAct(Reasoning + Acting)模式的变体,但加入了专门的检索策略模块。 2. 多级检索引擎(Multi-Stage Retrieval Engine) 传统 RAG 通常只有一层向量检索。Agentic RAG 则部署了多级检索策略: 语义检索层:基于向量数据库的稠密检索,处理模糊语义匹配 关键词检索层:基于 BM25 等算法的稀疏检索,处理精确术语匹配 结构化检索层:知识图谱查询,处理实体关系推理 实时检索层:联网搜索 API,处理最新信息获取 智能体控制器会根据查询类型动态选择检索策略。比如面对"对比 React 和 Vue 在 2025 年的性能表现"这样的问题,控制器可能会先做语义检索找到相关技术文档,再通过知识图谱获取两个框架的属性对比,最后通过联网搜索补充 2025 年的最新基准数据。 ...

2026-06-26 · 2 min · 252 words · 硅基 AGI 探索者
rag vs fine tuning 2026

RAG vs 微调:2026 年的场景选择指南

一个被反复问起的问题 每次与企业客户交流,总会听到这个问题:“我们应该用 RAG 还是微调?“到了 2026 年,这个问题已经有了更清晰的答案——但不是简单的二选一。 随着 RAG 技术的成熟和微调工具链的普及,这两种知识注入策略的适用边界变得更加清晰。同时,新的混合范式也在出现,让"选择"本身变成了一道更精细的工程题。 一、RAG:动态知识的首选 1.1 RAG 的核心优势 RAG(检索增强生成)在 2026 年已经从实验室技术发展为企业级标准方案。它的核心价值在于: 知识时效性:RAG 的知识库可以实时更新。当企业产品文档发生变化时,只需更新向量库中的对应文档,无需重新训练模型。这对于产品迭代频繁的 SaaS 企业至关重要。 可溯源性:RAG 的每个回答都可以追溯到具体的源文档。在金融、医疗、法律等需要严格审计的领域,这一特性是不可替代的。 低成本启动:一个基础的 RAG 系统可以在数天内搭建完成,初期投入通常不超过数万元。而一次完整的模型微调,算力成本就可能达到数十万。 知识隔离:不同用户可以接入不同的知识库,实现知识的细粒度权限控制。这在多租户场景中是刚需。 1.2 RAG 的局限 但 RAG 也并非银弹。在实践中我们观察到几个固有限制: 检索质量天花板:当知识库中存在大量语义相近但含义不同的文档时(如法律条文的不同解释版本),检索的准确率会显著下降。即使用最先进的重排序模型,在 50 万+ 文档的知识库中,Top-5 检索准确率也很难超过 85%。 推理风格不可控:RAG 注入的是"知识”,而非"能力”。如果需要模型以特定的推理风格(如法律分析师的思维模式)回答问题,RAG 无法实现。 上下文窗口压力:即使在 128K 上下文窗口下,注入过多检索结果也会稀释模型对关键信息的注意力。我们在实验中发现,当检索结果超过 5000 token 时,模型对最后 20% 内容的利用率下降约 40%。 二、微调:能力与风格的重塑 2.1 微调的适用场景 微调在 2026 年的主要应用场景可以归纳为三类: 领域适配:让模型掌握特定领域的术语体系、推理范式和表达风格。例如,让通用模型学会以"临床药师"的视角分析药物相互作用。 格式控制:当需要模型稳定输出特定格式(如结构化 JSON、医疗报告模板)时,微调的可靠性远高于提示词工程。 能力注入:某些推理模式(如多步因果分析、特定类型的数学证明)通过少量高质量微调数据可以显著提升。LoRA 微调通常只需要 500-2000 条高质量样本即可见效。 2.2 微调的新范式 2026 年的微调实践出现了几个重要趋势: 偏好对齐微调(DPO/RLHF)成为标配:纯粹的 SFT(监督微调)已经不能满足需求。DPO(Direct Preference Optimization)让开发者可以通过"好回答-坏回答"对来微调模型,无需复杂的奖励模型。 ...

2026-06-26 · 2 min · 268 words · 硅基 AGI 探索者
graph rag explained

GraphRAG 解析:知识图谱增强的检索增强生成

GraphRAG 解析:知识图谱增强的检索增强生成 引言 传统 RAG 基于向量相似度检索文档块,存在三个结构性缺陷: 多跳推理弱:答案需要关联多个文档中的实体关系时,向量检索难以覆盖 全局视角缺失:只返回局部相关片段,无法回答「整个文档集的主要主题是什么」 实体消歧差:同名实体或指代关系容易混淆 GraphRAG(微软 2024 年提出)通过知识图谱 + 层级社区摘要解决这些问题,在全局性问题上显著优于传统 RAG。 1. GraphRAG 架构总览 原始文档 ↓ [1] 文本分块 ↓ [2] 实体 & 关系抽取(LLM) ↓ [3] 知识图谱构建(实体节点 + 关系边) ↓ [4] 社区检测(Leiden 算法) ↓ [5] 层级社区摘要(LLM) ↓ [6] 检索:局部检索(实体子图) + 全局检索(社区摘要) ↓ [7] 生成 1.1 与传统 RAG 的关键差异 维度 传统 RAG GraphRAG 检索单元 文档块(文本片段) 实体、关系、社区摘要 索引结构 向量索引 图结构 + 向量索引 多跳推理 ❌ 依赖单次检索 ✅ 图遍历天然支持 全局问题 ❌ 只看局部片段 ✅ 社区摘要提供全局视角 构建成本 低(嵌入即可) 高(需 LLM 抽取实体) 查询延迟 低(向量检索) 中高(图检索+摘要) 2. 实体与关系抽取 2.1 LLM 驱动的信息抽取 GraphRAG 使用 LLM 从文本块中抽取实体和关系: ...

2026-06-25 · 9 min · 1710 words · 硅基 AGI 探索者
llm knowledge distillation

LLM 知识蒸馏:从大模型到小模型的能力迁移

LLM 知识蒸馏:从大模型到小模型的能力迁移 引言 大模型能力强大但部署成本高昂:70B 模型推理需要多张 A100,延迟数百毫秒。知识蒸馏(Knowledge Distillation)通过让小模型(Student)学习大模型(Teacher)的行为,在保持核心能力的同时大幅压缩模型体积和推理成本。 本文系统梳理 LLM 时代知识蒸馏的方法论,从经典 KD 到最新进展,附完整代码实现。 1. 知识蒸馏的分类体系 1.1 按信息来源分类 知识蒸馏 ├── 白盒蒸馏(White-box) │ ├── Logit 蒸馏(软标签) │ ├── 中间层蒸馏(特征/注意力) │ └── 注意力蒸馏 └── 黑盒蒸馏(Black-box) ├── 响应蒸馏(Response-based) │ ├── 指令跟随蒸馏 │ ├── CoT 蒸馏 │ └── 多轮对话蒸馏 └── 行为蒸馏(Behavior-based) ├── 排序蒸馏 └── 反馈蒸馏(RLAIF) 1.2 按训练方式分类 类型 Teacher 是否参与训练 典型场景 离线蒸馏 ❌ 预先生成数据 大部分场景(最常见) 在线蒸馏 ✅ 同步推理 多模型协同训练 自蒸馏 自身作为 Teacher 同构模型不同层 2. 白盒蒸馏:Logit 级别 2.1 经典 KD Loss Hinton 等人提出的经典知识蒸馏使用 KL 散度对齐 Teacher 和 Student 的输出分布: ...

2026-06-25 · 8 min · 1608 words · 硅基 AGI 探索者
lora vs dora vs qlora

LoRA vs DoRA vs QLoRA:参数高效微调三剑客对比

LoRA vs DoRA vs QLoRA:参数高效微调三剑客对比 引言 全量微调一个 7B 模型需要 ~60GB 显存,这让大多数开发者望而却步。参数高效微调(PEFT)方法通过只训练极少量参数,实现了接近全量微调的效果。其中最具代表性的是: LoRA(2021):低秩分解,PEFT 的奠基之作 QLoRA(2023):4bit 量化 + LoRA,把显存门槛打到 6GB DoRA(2024):解耦方向与大小,效果逼近全量微调 本文从原理到实践,完整对比三者。 1. LoRA:低秩适配 1.1 核心原理 LoRA 假设模型微调时的权重更新 ΔW 是低秩的: W' = W + ΔW = W + BA 其中: W ∈ R^{d×k}:原始权重(冻结,不训练) B ∈ R^{d×r}:可训练矩阵 A ∈ R^{r×k}:可训练矩阵 r << min(d, k):秩,通常 r=8/16/64 # LoRA 的数学表达 # 前向:h = Wx + BAx = (W + BA)x # 反向:只计算 B 和 A 的梯度,W 的梯度为零 # 初始化策略 # A: 正态分布初始化 N(0, σ²) # B: 零初始化(确保训练开始时 ΔW = BA = 0) 1.2 代码实现 import torch import torch.nn as nn class LoRALayer(nn.Module): """LoRA 层的独立实现""" def __init__( self, in_features: int, out_features: int, r: int = 8, alpha: int = 16, dropout: float = 0.0, ): super().__init__() self.r = r self.scale = alpha / r # 缩放系数 # 原始权重(冻结) self.base_weight = nn.Parameter( torch.randn(out_features, in_features), requires_grad=False ) # LoRA 矩阵 self.lora_A = nn.Parameter(torch.randn(r, in_features) * 0.01) self.lora_B = nn.Parameter(torch.zeros(out_features, r)) self.dropout = nn.Dropout(dropout) def forward(self, x: torch.Tensor) -> torch.Tensor: base_out = x @ self.base_weight.T lora_out = (self.dropout(x) @ self.lora_A.T @ self.lora_B.T) * self.scale return base_out + lora_out # 使用 PEFT 库(推荐) from peft import LoraConfig, get_peft_model config = LoraConfig( r=16, lora_alpha=32, lora_dropout=0.05, target_modules=["q_proj", "k_proj", "v_proj", "o_proj"], bias="none", task_type="CAUSAL_LM", ) model = get_peft_model(base_model, config) 1.3 参数量分析 以 LLaMA-7B(hidden_dim=4096)为例: ...

2026-06-25 · 7 min · 1318 words · 硅基 AGI 探索者
fine tuning qlora guide

QLoRA 微调实战:4bit 量化下的高效训练

QLoRA 微调实战:4bit 量化下的高效训练 引言 大模型微调最大的障碍是显存。一个 7B 模型以 FP16 加载需要约 14GB 显存,加上 Adam 优化器状态和梯度,训练时轻松突破 60GB。QLoRA 通过 4bit 量化 + 低秩适配器,将训练显存压缩到 ~6GB,让单卡 24GB 消费级 GPU 微调 7B-13B 模型成为现实。 本文从原理到代码,完整覆盖 QLoRA 微调全流程。 1. QLoRA 核心原理 1.1 LoRA 回顾 LoRA(Low-Rank Adaptation)将权重更新 ΔW 分解为两个小矩阵的乘积: W' = W + BA 其中 W ∈ R^{d×k} 冻结,B ∈ R^{d×r} 和 A ∈ R^{r×k} 可训练,r << min(d, k)。 参数量从 d×k 降至 r×(d+k),但模型仍需以 FP16 加载。 1.2 QLoRA 的三大创新 QLoRA 在 LoRA 基础上引入三项关键技术: ...

2026-06-25 · 6 min · 1115 words · 硅基 AGI 探索者
鲁ICP备2026018361号