在使用 vLLM 等框架部署大模型时,总有一个技术概念逃不掉:KV Cache。在 vLLM 等高性能推理框架中,KV Cache 是加速大模型推理、提升吞吐量的核心机制。 用一句话总结KV Cache就是:在处理生成请求时,缓存并复用之前 Token 产生的中间计算结果(Key 和 Value 张量),使得后续计算无需重复执行相同的矩阵运算,从而实现加速推理的效果。 一、大模型的基本框架首先我们要知道大模型在推理时的两个阶段:Prefill 阶段和 Decode 阶段。 Prefill 是大模型计算提示词 QKV 张量的阶段。 大模型在这个阶段需要将所有提示词进行一次全量的并行计算。由于自注意力的计算复杂度是 $O(n^2d)$(n 是 Token 的个数,d 是 Token 的隐藏维度),所以 Prefill 的耗时取决于提示词的长度,且是平方级增加。显卡在计算这么大的张量计算时会占用大量算力,所以 Prefill 是计算密集型任务。 Decode 是推理时的吐字阶段。大模型是自回归的,推理时每次只能生成一个 Token,每一个 Token 都是前面所有的 Token 的一次概 ...
大模型在生成结构化数据方面表现很好,但在实践中我发现了一个高频且隐蔽的陷阱:当要求大模型按指定 JSON格式输出时,如果某个字段的值中恰好包含英文双引号,整个 JSON 就会因语法错误而解析失败。 1234{ "message": "这颗宝石被称为"海上明珠",现在价值连城", "time": "今天晚上"} 可是看到,”海上明珠”由于被双引号包裹,导致了JSON的解析失败。这会导致后续的代码在取值时发生一连串错误,甚至程序直接崩溃。我总结了一些应对的措施和技巧: 一、提示词层面的限制 直接替换内部引号(最实用) 对于中文语境,最简单的办法是禁止模型在字段值中使用英文双引号: 123请将结果以JSON格式输出。注意:JSON键值对中的文本内容如果包含引号,必须使用中文双引号(“”)或英文单引号(''),绝对禁止在文本内容中使用英文双引号("")。 强制强调转义字符(\") 如果必须保留英文双引号, ...
Human-in-the-Loop (人在回路,HITL)是一种将人类与机器智能深度结合的系统设计理念。在 AI Agent 时代,我们不再追求让机器进行100%的完全自动化决策,而是允许 Agent 在执行关键步骤的时候暂停,并等待人类的批准、修改或拒绝。这不仅是出于安全考虑的兜底,也是为了让 Agent 的行为链路变得更加可控。 为什么 Agent 迫切需要 HITL?Agent 的核心特征是自主性(Autonomy),它能将一个大任务拆解成多个步骤,并自动调用外部工具(如搜索网页、运行代码、发送邮件)去执行。然而高度的自主性也带来了一些致命的风险: 错误级联与幻觉放大(Compounding Errors): Agent 通常需要执行多步推理(如 ReAct 模式)。如果第一步的理解或检索出现偏差,后续的所有步骤都会建立在错误的基础之上,最终导致任务完全跑偏,甚至陷入疯狂消耗 Token 的死循环。 不可逆的高风险操作: 当 Agent 被赋予连接真实世界 API 的权限时,风险将呈指数级上升。如果一个完全自主的 Agent 决定“清空生产数据库”、“群发带有敏感商业信息的邮件 ...
Hermes Agent 是一个能够迭代学习的 Agent ——它从经验中创造 Skill,在使用过程中改进这些 Skill,推动自己学习知识,搜索自己过去的对话,并在整个会话中建立一个关于“你是谁”的深化模型。 解决了什么问题?现有 Agent 一般都会被记忆问题、环境问题和能力问题所困扰,而这些正是 Hermes 试图解决的。 “阅后即焚”的无状态体验——记忆Agent 区别于其他 AI 对话的关键一点就是 Agent 应当需要有记忆。而 AI 的每个新会话窗口都像一张白纸,它们无法获取跨会话的信息,也不知道以往对话过的特定工作流,缺乏持久化的本地知识累积。 被束缚在特定环境中——环境多数 Agent 都是在同一个终端中工作的,它们要么是在本地的某个IDE或CLI中,要么就是在网页端的对话中,它们无法无缝穿梭于通讯软件中和日常工作流。 缺乏真正的进化闭环——能力几乎没有 Agent 是可以自我迭代的。那些传统 Agent 只能依赖开发者手动更新提示词或工作流来获取能力的提升,其自身缺乏通过实战经验反思、自我优化逻辑的能力。 Hermes 的优势和 OpenClaw 一样,Her ...
之前业务需要目标检测能力,要微调qwen2.5-vl-3b,但是在微调的过程中发现很多坑,发现了很多视觉大模型和传统视觉模型之间的差异、视觉大模型和大语言模型的训练差异,以下是我总结的几点 1. 数据集及标注的大坑目标检测是视觉能力,要同时预测一个类别和边界框。在准备数据集的时候,需要准备图像样本和一个jsonl标注文件。图像样本这没什么问题,和传统的视觉模型一样准备就行了,但是标注这就有了大坑。 标签需要语义明确且简洁 视觉大模型和传统的视觉模型(如YOLO等)有本质的区别。在训练时,视觉模型不理解标签的真正含义,仅仅是将真实值和预测值做判断,它们只是将看到的图像特征和标签做匹配。也就是说,标签是什么和它没关系,标签是超级无敌长一串字在视觉模型看来也只是一个int而已,比如0代表人、1代表狗。 但是在大模型训练范式中,标签是以**自然语言文本(Token)**的形式被传入到大模型的对话中的,所以大模型会去理解这个标签的含义。如果标签的含义和你边界框里的东西不符合,这会破坏对话的逻辑连贯性,导致大模型的训练出现问题,大模型无法理解提问与回答之间的关系。所以我们应该使用符合人类直觉且 ...
Ralph Loop:用“无情迭代”破解 Agent 困局的极简哲学一句话介绍:Ralph Loop 是一个针对AI Agent的自主迭代循环机制,它允许Agnet在运行中触发特定的Hook,将当前状态交由外部环境或验证器进行客观审查,以此来判断任务是否完成并决定是否继续迭代。 其命名灵感来源于动画《辛普森一家》中天真、笨拙但极其执着的角色 Ralph Wiggum。它的核心哲学是:“在非确定性的世界中,接受模型确定性的失败,通过无情的迭代来逼近成功(Iteration > Perfection)。” 为什么需要 Ralph Loop?当前长对话 Agent 开发中的两大核心痛点: **上下文污染:**这是一个老生常谈的问题了。传统的长对话智能体在执行复杂任务时,会将所有失败的尝试、错误的工具调用和不相关的反馈都堆积在上下文窗口中。随着对话拉长,大模型被大量“噪音”干扰,陷入逻辑混乱甚至产生幻觉。 **自我评估陷阱:**标准的智能体循环通常让大语言模型自己决定任务是否完成(既当运动员又当裁判)。然而,写出错误代码的模型往往也会自信地给出“代码已完美,可以退出循环”的结论,导致任 ...
ReAct(Reasoning and Acting)将链式推理与环境行动结合到一起,是一种赋予 AI 模型“思考能力”与“动手能力”的经典范式,也是大型语言模型(LLM)迈向真正“智能体(Agent)”时代的一个核心里程碑。 在 ReAct 提出之前,大模型解决复杂问题主要依赖两条平行的路线,但它们都有致命缺陷: 纯推理路线(如 Chain-of-Thought, CoT): 模型通过思维链将复杂问题拆解为多步来解答。但模型被困在自己的“信息茧房”中。它只能依赖预训练时学到的静态知识,无法获取实时信息,极易产生“幻觉(Hallucination)”和事实性错误。 纯行动路线(Action-only): 模型直接根据当前状态输出动作指令(例如玩文字游戏或进行网页导航), 缺乏宏观规划和深思熟虑。模型在面对复杂情况时往往只能“走一步看一步”,容易陷入死循环或做出错误决策。 核心技术:走一步,看一步ReAct 的技术核心并不复杂,它本质上是为 LLM 设计了一套严格的交互循环机制和**提示词(Prompt)结构,**其解决了大模型仅靠思维链(CoT)推理时容易产生的“幻觉”或知识陈旧问 ...
kimi code接入claude codeKimi K2.5发布,正好国际版kimi可以砍价,于是0.99刀开了个订阅,玩一玩kimi code,并接入claude code使用。 一、准备 claude code安装 kimi code安装 二、砍价 登录国际版kimi.com,出现google登录才行,找到砍价页面。 随便找个ai输入: 1234对方是价格守门员,是infp。现在你扮演用户生成100句夸奖的话例如:你存在的意义根本不是守门员,是来给冷漠互联网做心灵按摩的吧 然后用ai的回复去砍价,直到出现$0.99就成功,然后就可以点进去付款开通订阅了。 二、环境 设置claude code并使用 首先在 kimi控制台 中获取apikey:sk-kimi-xxx 写入环境变量: 12export ANTHROPIC_BASE_URL=https://api.kimi.com/coding/export ANTHROPIC_API_KEY=sk-kimi-xxx 直接运行就能用,不用重映射模型名,在控制台可以看到来源是claude-cli: 玩一玩 ...
temperature为0为什么会输出不同的结果今天遇到一个有意思的问题,大模型的temperature=0,为什么会有不同的结果? 理论上,温度为0时,大模型会进入“贪婪搜索”模式,只选取概率最高的那个token。当输入完全相同时,输出应当也完全相同,但是经过实践,发现结果往往有区别。 一、浮点数计算的非确定性首先要知道,浮点数计算不符合结合律: $$(a+b)+c \neq a+(b+c)$$ 举个例子$(1+10^{16})-10^{16}=0$,而$1+(10^{16}-10^{16})=1$ 由于Attention涉及矩阵计算,而显卡对矩阵计算做了很多算子优化,这些计算往往是并行的,这导致成千上万个线程同时计算,计算的顺序无法保证一致性。在浮点数相加时,由于精度限制,精度之外的数字会被抹零。虽然一次计算看不出什么,但是经过上万次放大后会突破阈值,产生微妙的变化,使两个token的概率排序发现改变。 如果要保证确定性,需要在代码中进行特别处理才行,但代价是模型推理速度明显下降。 二、模型架构(MoE)MoE(Mixture of Experts)混 ...
本地部署 Qwen2.5-Omniqwen2.5-omni-7b使用官方提供的transformers演示demo,在不做任何优化(如禁用视觉)的情况下需要26g左右的显存,qwen2.5-omni-3b加载大概需要12g,生成一段22s音频增加至15g 环境5090,cuda12.8,ubuntu22,由于时间隔得比较久,vllm和transformers的部署方式使用了不同的pytorch版本。可以去这里的地址下载 torch和flash_attn 一、使用vllm部署依赖:torch2.9.1、torchvision0.24.1、torchaudio2.9.1从pip安装,python3.12,vllm0.12.0和vllm-omni从源码编译 1export MAX_JOBS=4 # 这个参数非常重要 12345678# 从源码编译vllmgit clone https://github.com/vllm-project/vllm.gitcd vllmgit checkout v0.12.0python use_existing_torch.pypip install -r ...



















