为分类任务微调表示模型
深入讲解为分类任务微调表示模型的完整流程:分类头设计、全量微调 vs LoRA 的选择、小样本场景下的 SetFit 方案,以及过拟合防范与模型评估。
深入解析高级文本生成技术:结构化输出与约束解码、Beam Search 与采样策略的权衡、RLHF 与 DPO 的对比,以及 Function Calling 的工程实现。
用流水线式的多步调用:第一步生成核心主题和基调;第二步基于主题生成角色设定;第三步基于角色和主题生成故事梗概;第四步基于以上所有信息生成标题。每一步的输出作为下一步的输入,这样每步任务更聚焦,模型能生成更高质量的内容,而且可以在每步之间加入人工审核或自动质量检查。
几种策略:1)滑动窗口——只保留最近N轮对话,简单但会丢失早期信息;2)历史摘要——定期用模型对历史对话做摘要压缩,保留关键信息同时减少token数;3)混合策略——系统提示词+早期对话摘要+最近几轮原文;4)用RAG——把所有历史对话存入向量数据库,每轮检索相关的历史片段插入上下文。实践中第3种最常用。
'lost in the middle'问题——模型对上下文中间部分的关注度低于开头和结尾。解决办法:1)维护一个'事件日志',每当发生重要事件时用模型提取关键信息存储,在每次生成时把相关事件插入提示词;2)对关键事件用结构化格式记录(时间、地点、参与者、事件),降低token消耗;3)把事件日志放在当前输入附近而不是上下文开头,提高关注度。
用持久化KV缓存。正常情况下每次新请求都要重新计算整个上下文的KV缓存,对话越长预填越慢。持久化KV缓存把之前对话轮次的KV缓存保存在显存(或磁盘)中,新请求来时只需计算新增部分的KV,不需要重新计算历史部分。这样预填延迟从与整个对话长度成正比,变成与新增输入长度成正比。vLLM的prefix caching和多会话的KV缓存复用都是这个原理。
核心是ReAct框架(思考-行动-观察循环)。给agent配置搜索引擎和网页浏览工具,用提示词引导它:1)分析当前信息差距,确定下一步要搜什么;2)执行搜索,观察结果;3)决定是深入浏览某个网页还是换个关键词继续搜;4)信息足够后综合整理输出。用强化学习可以优化agent的搜索策略——将最终答案质量作为奖励信号,训练agent学会更高效的搜索路径。
工具配置:航班搜索API、酒店预订API、景点信息API、日历/时间工具、地图/距离计算工具。agent流程:先收集用户需求(目的地、日期、预算、偏好),然后分步规划机票、酒店、行程,最后整合输出。处理不完整信息:让agent主动追问缺失信息,对未提供的项给出合理默认值。处理矛盾信息:检测时间/预算约束是否冲突,主动告知用户并提供替代方案。可以用RL优化agent的对话策略和工具调用顺序。
按功能模块拆分:比如一个客服智能体拆成'意图识别'、'订单查询'、'投诉处理'等子agent。用一个路由agent决定调用谁。上下文传递方式:1)结构化的状态对象(JSON格式的会话状态)在agent间传递;2)每个子agent输出结构化结果,下一个agent只接收它需要的部分;3)共享记忆存储(如数据库)而不是通过上下文传递所有信息。RL可以用来优化路由策略。
用一个路由模型根据任务特征选择后端模型。可以是基于规则的(代码任务用代码模型、数学用推理模型),也可以用一个轻量分类器分析用户输入的任务类型。RL的应用:把每次路由决策作为一个动作,用户满意度/任务完成质量作为奖励,训练路由器学会最优分配策略。还可以加上成本约束——简单任务用小模型省钱,复杂任务才用大模型。
用异步架构。工具调用发出后不阻塞等待,而是继续处理用户输入或并行发起其他工具调用。工具返回时通过回调或事件队列触发agent的下一步处理。具体实现:1)设计状态机,跟踪每个工具调用的状态;2)用消息队列解耦工具调用和结果处理;3)在等待时向用户反馈进度。RL可以优化并行调用策略和资源分配。
用KV缓存持久化。角色设定的系统提示词在每次对话中都一样,可以预计算并缓存其KV,后续请求复用。历史对话的KV缓存也持久化保存,每次新请求只计算新增部分。如果多个用户用同一个角色,角色设定部分的KV缓存可以跨用户共享(prefix caching)。这样既省token成本(不用重复计算前缀),又降延迟。
时间处理:给每条记忆加上时间戳,检索时把用户提及的时间引用('昨天'、'上周')解析成绝对时间,再用时间范围过滤检索结果。主动询问:用定时器监控用户不活跃时长,超过阈值后触发agent生成主动消息(基于之前的对话上下文)。这需要一个独立于模型的业务逻辑层来管理时间和触发条件。
用一个中央调度器管理发言顺序。具体策略:1)基于相关性打分——每个agent对当前话题的相关性打分,分数最高的发言;2)轮次制+主动申请混合,基本轮流但允许紧急插话;3)设置冷场检测,如果一段时间没人发言,调度器选择一个agent主动起新话题。RL可以优化每个agent的发言时机和内容选择。
用VAD(语音活动检测)+语义理解组合。低延迟:用流式ASR实时转写,在输入的同时就开始理解意图,提前准备回答。避免抢话:1)用VAD检测用户是否在说话,用户说话时不打断;2)用语义分析判断用户是否说完了(而不是只看VAD的静音间隔);3)如果用户打断了agent,立即停止输出并听用户说。端到端语音模型(如Gemini Live)把这些能力内化到了模型中。
非声学方法主要从语义层面判断:1)分析语义相关性——用户说的内容是否和当前对话上下文相关;2)检测特定指令模式——是否包含对agent的称呼或指代;3)分析对话结构——是否是对之前回答的跟进。可以训练一个二分类器,用嵌入向量计算当前输入与对话上下文的相似度作为特征。RL可以优化这个判断的阈值,平衡漏听和误触发。
PTQ(Post-Training Quantization)是训练后直接量化,不需要重新训练,快速便捷,但低比特数(如4bit)时精度损失可能明显。QAT(Quantization-Aware Training)在训练过程中模拟量化误差,让模型学会补偿量化带来的信息损失,精度更高但需要额外训练成本。对于大模型,目前主流是PTQ(因为重新训练成本太高),GPTQ、AWQ等方法在INT4量化下精度损失很小。QAT更适合小模型或对精度要求极高的场景。
RELATED