WWW.YOUINFO.SITE
标签聚合 30B

/tag/30B

linux.do · 2026-04-29 16:03:31+08:00 · tech

nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free poolside是下面公司出的 laguna-m.1 应该这个效果会好点 Poolside Introducing Laguna XS.2 and Laguna M.1 We’re releasing two foundation models and two products into preview today. openrouter.ai Laguna XS.2 (free) - API Pricing & Providers Laguna XS.2 is the second-generation model in the XS size class from [Poolside](https://poolside.ai), their efficient coding agent series. $0 per million input tokens, $0 per million output tokens. 131,072 token context window, maximum output of... openrouter.ai Laguna M.1 (free) - API Pricing & Providers Laguna M.1 is the flagship coding agent model from [Poolside](https://poolside.ai), optimized for complex software engineering tasks. $0 per million input tokens, $0 per million output tokens. 131,072 token context window, maximum output of 8,192... 3 个帖子 - 2 位参与者 阅读完整话题

www.ithome.com · 2026-04-29 07:35:02+08:00 · tech

IT之家 4 月 29 日消息,当地时间 4 月 28 日,英伟达宣布推出名为 Nemotron 3 Nano Omni 的开源全模态推理模型,旨在为企业级 AI Agent 提供一体化基础模型底座。 据介绍,这是一款将视频、音频、图像和文本的统一多模态推理集成于单个高效开放模型中的产品。该模型旨在替代智能体系统中常见的碎片化视觉-语音-语言模型链,从而减少推理跳数与编排复杂度,降低推理成本,同时增强跨模态上下文一致性。 Nemotron 3 Nano Omni 可在智能体系统中充当多模态感知与上下文子 Agent,使智能体能够在单个共享的“感知-行动”循环中处理视觉、音频和文本输入,提升收敛速度,降低编排复杂度和推理成本。 在文档智能榜单(如 MMlongbench-Doc 和 OCRBenchV2)上,该模型取得了同类领先的准确率;同时在视频与音频理解基准(WorldSense、DailyOmni、VoiceBench)中也表现优异。 行业基准 MediaPerf(基于真实媒体数据和生成任务评估视频理解模型的性能、成本和吞吐量)显示,Nemotron 3 Nano Omni 在所有任务上实现了最高吞吐量,且视频级标注的推理成本最低。 ▲ 在固定的用户交互阈值下,各模型所能维持的总系统吞吐量 该模型基于 30B‑A3B 混合专家(MoE)架构,可根据任务和模态进行激活,实现高吞吐量与可扩展的多模态性能。IT之家注意到,其模型权重、数据集和训练配方完全开放,开发者可在本地、云端或企业环境中定制、部署和集成多模态子 Agent。 英伟达表示,在固定交互延迟阈值下,Nemotron 3 Nano Omni 在视频推理任务中可持续提供更高的聚合吞吐量,相比其他开放式全模态模型有效系统容量最高提升约 9.2 倍;在多文档推理任务中,有效系统容量最高提升约 7.4 倍。在 Blackwell GPU 上采用 NVFP4 量化时,该模型在处理复杂文档、长时推理和大批量视频的企业级工作负载中,吞吐量在开放式全模态模型中居于领先。 架构设计方面,Nemotron 3 Nano Omni 核心为混合 MoE,结合 Mamba 层(提升序列与内存效率)和 Transformer 层(实现精准推理),内存和计算效率最高可提升 4 倍。 视觉处理方面,它采用 3D 卷积捕捉帧间运动,推理时通过高效视频采样层将高密度视觉 token 压缩为 LLM 可处理的精简集合;音频部分则基于 NVIDIA Parakeet 编码器与专用数据集;文本部分以强大的文本模型作为中心解码器,保留基础模型的语言能力;视觉编码采用 C-RADIOv4-H,支持高分辨率图像与 OCR 精度。 其训练方法涵盖适配器与编码器训练(约 1270 亿跨模态 token)、多阶段监督微调及后监督强化学习(超过 230 万次环境 rollout)。该模型权重已在 Hugging Face 上提供,并即将作为 NVIDIA NIM 微服务上线。英伟达还开放了完整的端到端训练与评估配方、部署指南、微调食谱以及开放数据集。

www.v2ex.com · 2026-04-26 20:09:18+08:00 · tech

最近在折腾本地大模型,发现一个核心问题:Ollama 和 LM Studio 能让模型跑起来,但参数全靠猜——上下文长度、KV cache 类型、MoE expert 放哪、ubatch 多大……用默认参数基本是在浪费显卡。 于是做了个工具自动找最优配置,过程中踩了不少坑,记录一下。 核心发现 1. MoE 模型的 offload 策略决定了一切 Qwen3-30B-A3B 是 MoE 架构,在 8GB 显卡上: LM Studio 默认把所有层塞进显存 → 7549MB ( 93%),3 tok/s 只把 attention 层放 GPU ,MoE expert 层走 CPU → 2603MB ( 32%),21 tok/s 快了 7 倍,显存反而省了 65%。关键是 llama.cpp 支持这个,但你得自己识别哪些 tensor 是 MoE expert ( .ffn_.*_exps. 这类命名),然后手动配。 2. KV cache 类型影响比大多数人想的大 同一张 8GB 显卡跑 Llama 3.1 8B ,不同 KV cache 配置速度差异: 配置 ctx 速度 iso3+iso3 ,4 slot 8K 19.4 tok/s q8_0+q4_0 ,1 slot 8K 38.2 tok/s f16+f16 ,1 slot 8K 51.7 tok/s f16+f16 ,1 slot (自动) 64K 26.2 tok/s f16 比 iso3 快将近 3 倍。但 f16 显存占用更大,所以正确策略是:先算 f16 KV cache 占多少显存,装得下就用 f16 ,装不下再降级。 公式: KV_MB = 2 × layers × kv_heads × head_dim × ctx × bytes / 1024² 3. oobabooga 公式用来预测 ctx 上限 社区里流传的 oobabooga 显存估算公式,原本用来预测装载模型后剩余显存能支持多大 ctx 。但这个公式是基于 q8_0/f16 拟合的,用 iso3 的时候会严重高估显存需求,导致 ctx 只算出 4K 。 最后放弃公式预测,改成二分探测:从 min(nativeCtx, 65536) 开始,OOM 就减半,最多探 5 次,让 llama-server 自己告诉我能跑多少。Llama 3.1 8B 的 ctx 从 4K 直接到 64K 。 4. parallel slot 数量对单用户场景影响巨大 llama.cpp 默认开 4 个并行 slot (为了多用户并发),但单用户场景下这会把 VRAM 分成 4 份。 关掉多余 slot ( --parallel 1 )之后:18.5 → 38.2 tok/s ,直接翻倍。 5. ubatch 实测比理论更可靠 ubatch 128 vs 512 的性能差异跟模型和显卡都有关系,没有通用最优值。实测结论: 8K ctx:ubatch 512 比 128 快 7.6% 64K ctx:ubatch 512 比 128 快 21.6% 直接 benchmark 两个值取快的,比查文档猜靠谱。 6. 对话压缩不要用模型生成摘要 最初方案是上下文满了之后调本地模型生成摘要——结果单 slot 阻塞,直接超时。 改成纯算法提取:保留头部( system prompt + 首轮对话)和尾部(最近 8K tokens ),中间部分提取代码路径、函数名、文件名、TODO 等关键信息。压缩率 73%,耗时 <1ms 。 用了哪些技术,实现了什么功能 llama.cpp — 推理引擎核心 直接调用 llama.cpp 的 llama-server ,所有参数( ctx 、KV cache 类型、线程数、ubatch 、mlock 、tensor split )都通过启动参数注入。Kaiwu 本质上是一个参数决策层,不改推理引擎本身。 IsoQuant / TurboQuant — 3-bit KV cache 压缩 集成了 johndpope 的 turboquant fork ( feature/planarquant-kv-cache ),支持 -ctk iso3 -ctv iso3 参数。iso3 的压缩系数实测 0.73 ,理论值 0.75 ,在 VRAM 紧张的设备( 8GB )上可以把 KV cache 占用压缩到 q8_0 的一半。但有约 600MB 固定解码 buffer 开销,VRAM 充裕时反而比 f16 慢 8%,所以策略是 VRAM > 16GB 才默认开 iso3 。 oobabooga 显存估算公式 — ctx 上限预测(已放弃) 社区流传的公式用来预测剩余显存能支持多大 ctx ,基于 q8_0/f16 拟合。iso3 场景下高估显存需求,导致 ctx 只算出 4K 。最终改成二分探测代替公式,让 llama-server 自己决定能跑多少。 GQA 架构识别 — KV cache 精准估算 Qwen3 等新模型用 GQA ( Grouped Query Attention ),kv_heads 远小于 attention_heads 。KV cache 大小公式里用的是 kv_heads 而不是 heads ,不识别这一点会高估 3-4 倍。通过读 GGUF metadata 拿到准确的 kv_heads 值再做计算。 MoE tensor 识别 — 自动 expert offload 读取模型的 tensor 名称列表,匹配 .ffn_.*_exps. 模式识别出 MoE expert 层,自动决定把这部分路由到 CPU 。不需要用户手动指定,也不需要提前知道模型架构。 Extractive Summary — 零延迟对话压缩 上下文到 75% 时触发,纯算法提取:保留 system prompt 、首轮对话、最近 8K tokens ,中间部分按关键词权重保留(代码路径、函数名、文件名、TODO 、命令行等)。不调用任何模型,压缩耗时 <1ms ,73% 压缩率。最初试过调本地模型生成摘要,单 slot 阻塞直接超时,这条路走不通。 GitHub Actions CI — 跨平台自动编译 turboquant fork 需要自己编译带 iso3 支持的 llama-server 。用 GitHub Actions 同时编译 Windows ( MSVC )和 Linux ( GCC )版本,CUDA 12.4 ,覆盖 sm_75/80/86/89 架构,RTX 50 系列通过 PTX JIT 运行时支持。踩了三个 MSVC 编译坑( extern "C" 声明改定义、M_PI 未定义、全局符号缺失),记录在 PROGRESS.md 里。 工具 把上面这些逻辑都自动化了,叫开物( Kaiwu )。一行命令启动,参数全部自动找,结果缓存起来,第二次 2 秒启动。 GitHub: https://github.com/val1813/kaiwu OpenAI 兼容 API ,Continue / Cursor / Claude Code 直接接。 有遇到类似问题的欢迎交流,尤其是 MoE offload 和 KV cache 这块踩坑挺深的。

www.v2ex.com · 2026-04-26 20:09:18+08:00 · tech

最近在折腾本地大模型,发现一个核心问题:Ollama 和 LM Studio 能让模型跑起来,但参数全靠猜——上下文长度、KV cache 类型、MoE expert 放哪、ubatch 多大……用默认参数基本是在浪费显卡。 于是做了个工具自动找最优配置,过程中踩了不少坑,记录一下。 核心发现 1. MoE 模型的 offload 策略决定了一切 Qwen3-30B-A3B 是 MoE 架构,在 8GB 显卡上: LM Studio 默认把所有层塞进显存 → 7549MB ( 93%),3 tok/s 只把 attention 层放 GPU ,MoE expert 层走 CPU → 2603MB ( 32%),21 tok/s 快了 7 倍,显存反而省了 65%。关键是 llama.cpp 支持这个,但你得自己识别哪些 tensor 是 MoE expert ( .ffn_.*_exps. 这类命名),然后手动配。 2. KV cache 类型影响比大多数人想的大 同一张 8GB 显卡跑 Llama 3.1 8B ,不同 KV cache 配置速度差异: 配置 ctx 速度 iso3+iso3 ,4 slot 8K 19.4 tok/s q8_0+q4_0 ,1 slot 8K 38.2 tok/s f16+f16 ,1 slot 8K 51.7 tok/s f16+f16 ,1 slot (自动) 64K 26.2 tok/s f16 比 iso3 快将近 3 倍。但 f16 显存占用更大,所以正确策略是:先算 f16 KV cache 占多少显存,装得下就用 f16 ,装不下再降级。 公式: KV_MB = 2 × layers × kv_heads × head_dim × ctx × bytes / 1024² 3. oobabooga 公式用来预测 ctx 上限 社区里流传的 oobabooga 显存估算公式,原本用来预测装载模型后剩余显存能支持多大 ctx 。但这个公式是基于 q8_0/f16 拟合的,用 iso3 的时候会严重高估显存需求,导致 ctx 只算出 4K 。 最后放弃公式预测,改成二分探测:从 min(nativeCtx, 65536) 开始,OOM 就减半,最多探 5 次,让 llama-server 自己告诉我能跑多少。Llama 3.1 8B 的 ctx 从 4K 直接到 64K 。 4. parallel slot 数量对单用户场景影响巨大 llama.cpp 默认开 4 个并行 slot (为了多用户并发),但单用户场景下这会把 VRAM 分成 4 份。 关掉多余 slot ( --parallel 1 )之后:18.5 → 38.2 tok/s ,直接翻倍。 5. ubatch 实测比理论更可靠 ubatch 128 vs 512 的性能差异跟模型和显卡都有关系,没有通用最优值。实测结论: 8K ctx:ubatch 512 比 128 快 7.6% 64K ctx:ubatch 512 比 128 快 21.6% 直接 benchmark 两个值取快的,比查文档猜靠谱。 6. 对话压缩不要用模型生成摘要 最初方案是上下文满了之后调本地模型生成摘要——结果单 slot 阻塞,直接超时。 改成纯算法提取:保留头部( system prompt + 首轮对话)和尾部(最近 8K tokens ),中间部分提取代码路径、函数名、文件名、TODO 等关键信息。压缩率 73%,耗时 <1ms 。 用了哪些技术,实现了什么功能 llama.cpp — 推理引擎核心 直接调用 llama.cpp 的 llama-server ,所有参数( ctx 、KV cache 类型、线程数、ubatch 、mlock 、tensor split )都通过启动参数注入。Kaiwu 本质上是一个参数决策层,不改推理引擎本身。 IsoQuant / TurboQuant — 3-bit KV cache 压缩 集成了 johndpope 的 turboquant fork ( feature/planarquant-kv-cache ),支持 -ctk iso3 -ctv iso3 参数。iso3 的压缩系数实测 0.73 ,理论值 0.75 ,在 VRAM 紧张的设备( 8GB )上可以把 KV cache 占用压缩到 q8_0 的一半。但有约 600MB 固定解码 buffer 开销,VRAM 充裕时反而比 f16 慢 8%,所以策略是 VRAM > 16GB 才默认开 iso3 。 oobabooga 显存估算公式 — ctx 上限预测(已放弃) 社区流传的公式用来预测剩余显存能支持多大 ctx ,基于 q8_0/f16 拟合。iso3 场景下高估显存需求,导致 ctx 只算出 4K 。最终改成二分探测代替公式,让 llama-server 自己决定能跑多少。 GQA 架构识别 — KV cache 精准估算 Qwen3 等新模型用 GQA ( Grouped Query Attention ),kv_heads 远小于 attention_heads 。KV cache 大小公式里用的是 kv_heads 而不是 heads ,不识别这一点会高估 3-4 倍。通过读 GGUF metadata 拿到准确的 kv_heads 值再做计算。 MoE tensor 识别 — 自动 expert offload 读取模型的 tensor 名称列表,匹配 .ffn_.*_exps. 模式识别出 MoE expert 层,自动决定把这部分路由到 CPU 。不需要用户手动指定,也不需要提前知道模型架构。 Extractive Summary — 零延迟对话压缩 上下文到 75% 时触发,纯算法提取:保留 system prompt 、首轮对话、最近 8K tokens ,中间部分按关键词权重保留(代码路径、函数名、文件名、TODO 、命令行等)。不调用任何模型,压缩耗时 <1ms ,73% 压缩率。最初试过调本地模型生成摘要,单 slot 阻塞直接超时,这条路走不通。 GitHub Actions CI — 跨平台自动编译 turboquant fork 需要自己编译带 iso3 支持的 llama-server 。用 GitHub Actions 同时编译 Windows ( MSVC )和 Linux ( GCC )版本,CUDA 12.4 ,覆盖 sm_75/80/86/89 架构,RTX 50 系列通过 PTX JIT 运行时支持。踩了三个 MSVC 编译坑( extern "C" 声明改定义、M_PI 未定义、全局符号缺失),记录在 PROGRESS.md 里。 工具 把上面这些逻辑都自动化了,叫开物( Kaiwu )。一行命令启动,参数全部自动找,结果缓存起来,第二次 2 秒启动。 GitHub: https://github.com/val1813/kaiwu OpenAI 兼容 API ,Continue / Cursor / Claude Code 直接接。 有遇到类似问题的欢迎交流,尤其是 MoE offload 和 KV cache 这块踩坑挺深的。

www.v2ex.com · 2026-04-26 13:41:17+08:00 · tech

最近在折腾本地大模型,发现一个核心问题:Ollama 和 LM Studio 能让模型跑起来,但参数全靠猜——上下文长度、KV cache 类型、MoE expert 放哪、ubatch 多大……用默认参数基本是在浪费显卡。 于是做了个工具自动找最优配置,过程中踩了不少坑,记录一下。 核心发现 1. MoE 模型的 offload 策略决定了一切 Qwen3-30B-A3B 是 MoE 架构,在 8GB 显卡上: LM Studio 默认把所有层塞进显存 → 7549MB ( 93%),3 tok/s 只把 attention 层放 GPU ,MoE expert 层走 CPU → 2603MB ( 32%),21 tok/s 快了 7 倍,显存反而省了 65%。关键是 llama.cpp 支持这个,但你得自己识别哪些 tensor 是 MoE expert ( .ffn_.*_exps. 这类命名),然后手动配。 2. KV cache 类型影响比大多数人想的大 同一张 8GB 显卡跑 Llama 3.1 8B ,不同 KV cache 配置速度差异: 配置 ctx 速度 iso3+iso3 ,4 slot 8K 19.4 tok/s q8_0+q4_0 ,1 slot 8K 38.2 tok/s f16+f16 ,1 slot 8K 51.7 tok/s f16+f16 ,1 slot (自动) 64K 26.2 tok/s f16 比 iso3 快将近 3 倍。但 f16 显存占用更大,所以正确策略是:先算 f16 KV cache 占多少显存,装得下就用 f16 ,装不下再降级。 公式: KV_MB = 2 × layers × kv_heads × head_dim × ctx × bytes / 1024² 3. oobabooga 公式用来预测 ctx 上限 社区里流传的 oobabooga 显存估算公式,原本用来预测装载模型后剩余显存能支持多大 ctx 。但这个公式是基于 q8_0/f16 拟合的,用 iso3 的时候会严重高估显存需求,导致 ctx 只算出 4K 。 最后放弃公式预测,改成二分探测:从 min(nativeCtx, 65536) 开始,OOM 就减半,最多探 5 次,让 llama-server 自己告诉我能跑多少。Llama 3.1 8B 的 ctx 从 4K 直接到 64K 。 4. parallel slot 数量对单用户场景影响巨大 llama.cpp 默认开 4 个并行 slot (为了多用户并发),但单用户场景下这会把 VRAM 分成 4 份。 关掉多余 slot ( --parallel 1 )之后:18.5 → 38.2 tok/s ,直接翻倍。 5. ubatch 实测比理论更可靠 ubatch 128 vs 512 的性能差异跟模型和显卡都有关系,没有通用最优值。实测结论: 8K ctx:ubatch 512 比 128 快 7.6% 64K ctx:ubatch 512 比 128 快 21.6% 直接 benchmark 两个值取快的,比查文档猜靠谱。 6. 对话压缩不要用模型生成摘要 最初方案是上下文满了之后调本地模型生成摘要——结果单 slot 阻塞,直接超时。 改成纯算法提取:保留头部( system prompt + 首轮对话)和尾部(最近 8K tokens ),中间部分提取代码路径、函数名、文件名、TODO 等关键信息。压缩率 73%,耗时 <1ms 。 用了哪些技术,实现了什么功能 llama.cpp — 推理引擎核心 直接调用 llama.cpp 的 llama-server ,所有参数( ctx 、KV cache 类型、线程数、ubatch 、mlock 、tensor split )都通过启动参数注入。Kaiwu 本质上是一个参数决策层,不改推理引擎本身。 IsoQuant / TurboQuant — 3-bit KV cache 压缩 集成了 johndpope 的 turboquant fork ( feature/planarquant-kv-cache ),支持 -ctk iso3 -ctv iso3 参数。iso3 的压缩系数实测 0.73 ,理论值 0.75 ,在 VRAM 紧张的设备( 8GB )上可以把 KV cache 占用压缩到 q8_0 的一半。但有约 600MB 固定解码 buffer 开销,VRAM 充裕时反而比 f16 慢 8%,所以策略是 VRAM > 16GB 才默认开 iso3 。 oobabooga 显存估算公式 — ctx 上限预测(已放弃) 社区流传的公式用来预测剩余显存能支持多大 ctx ,基于 q8_0/f16 拟合。iso3 场景下高估显存需求,导致 ctx 只算出 4K 。最终改成二分探测代替公式,让 llama-server 自己决定能跑多少。 GQA 架构识别 — KV cache 精准估算 Qwen3 等新模型用 GQA ( Grouped Query Attention ),kv_heads 远小于 attention_heads 。KV cache 大小公式里用的是 kv_heads 而不是 heads ,不识别这一点会高估 3-4 倍。通过读 GGUF metadata 拿到准确的 kv_heads 值再做计算。 MoE tensor 识别 — 自动 expert offload 读取模型的 tensor 名称列表,匹配 .ffn_.*_exps. 模式识别出 MoE expert 层,自动决定把这部分路由到 CPU 。不需要用户手动指定,也不需要提前知道模型架构。 Extractive Summary — 零延迟对话压缩 上下文到 75% 时触发,纯算法提取:保留 system prompt 、首轮对话、最近 8K tokens ,中间部分按关键词权重保留(代码路径、函数名、文件名、TODO 、命令行等)。不调用任何模型,压缩耗时 <1ms ,73% 压缩率。最初试过调本地模型生成摘要,单 slot 阻塞直接超时,这条路走不通。 GitHub Actions CI — 跨平台自动编译 turboquant fork 需要自己编译带 iso3 支持的 llama-server 。用 GitHub Actions 同时编译 Windows ( MSVC )和 Linux ( GCC )版本,CUDA 12.4 ,覆盖 sm_75/80/86/89 架构,RTX 50 系列通过 PTX JIT 运行时支持。踩了三个 MSVC 编译坑( extern "C" 声明改定义、M_PI 未定义、全局符号缺失),记录在 PROGRESS.md 里。 工具 把上面这些逻辑都自动化了,叫开物( Kaiwu )。一行命令启动,参数全部自动找,结果缓存起来,第二次 2 秒启动。 GitHub: https://github.com/val1813/kaiwu OpenAI 兼容 API ,Continue / Cursor / Claude Code 直接接。 有遇到类似问题的欢迎交流,尤其是 MoE offload 和 KV cache 这块踩坑挺深的。

www.v2ex.com · 2026-04-26 13:41:17+08:00 · tech

最近在折腾本地大模型,发现一个核心问题:Ollama 和 LM Studio 能让模型跑起来,但参数全靠猜——上下文长度、KV cache 类型、MoE expert 放哪、ubatch 多大……用默认参数基本是在浪费显卡。 于是做了个工具自动找最优配置,过程中踩了不少坑,记录一下。 核心发现 1. MoE 模型的 offload 策略决定了一切 Qwen3-30B-A3B 是 MoE 架构,在 8GB 显卡上: LM Studio 默认把所有层塞进显存 → 7549MB ( 93%),3 tok/s 只把 attention 层放 GPU ,MoE expert 层走 CPU → 2603MB ( 32%),21 tok/s 快了 7 倍,显存反而省了 65%。关键是 llama.cpp 支持这个,但你得自己识别哪些 tensor 是 MoE expert ( .ffn_.*_exps. 这类命名),然后手动配。 2. KV cache 类型影响比大多数人想的大 同一张 8GB 显卡跑 Llama 3.1 8B ,不同 KV cache 配置速度差异: 配置 ctx 速度 iso3+iso3 ,4 slot 8K 19.4 tok/s q8_0+q4_0 ,1 slot 8K 38.2 tok/s f16+f16 ,1 slot 8K 51.7 tok/s f16+f16 ,1 slot (自动) 64K 26.2 tok/s f16 比 iso3 快将近 3 倍。但 f16 显存占用更大,所以正确策略是:先算 f16 KV cache 占多少显存,装得下就用 f16 ,装不下再降级。 公式: KV_MB = 2 × layers × kv_heads × head_dim × ctx × bytes / 1024² 3. oobabooga 公式用来预测 ctx 上限 社区里流传的 oobabooga 显存估算公式,原本用来预测装载模型后剩余显存能支持多大 ctx 。但这个公式是基于 q8_0/f16 拟合的,用 iso3 的时候会严重高估显存需求,导致 ctx 只算出 4K 。 最后放弃公式预测,改成二分探测:从 min(nativeCtx, 65536) 开始,OOM 就减半,最多探 5 次,让 llama-server 自己告诉我能跑多少。Llama 3.1 8B 的 ctx 从 4K 直接到 64K 。 4. parallel slot 数量对单用户场景影响巨大 llama.cpp 默认开 4 个并行 slot (为了多用户并发),但单用户场景下这会把 VRAM 分成 4 份。 关掉多余 slot ( --parallel 1 )之后:18.5 → 38.2 tok/s ,直接翻倍。 5. ubatch 实测比理论更可靠 ubatch 128 vs 512 的性能差异跟模型和显卡都有关系,没有通用最优值。实测结论: 8K ctx:ubatch 512 比 128 快 7.6% 64K ctx:ubatch 512 比 128 快 21.6% 直接 benchmark 两个值取快的,比查文档猜靠谱。 6. 对话压缩不要用模型生成摘要 最初方案是上下文满了之后调本地模型生成摘要——结果单 slot 阻塞,直接超时。 改成纯算法提取:保留头部( system prompt + 首轮对话)和尾部(最近 8K tokens ),中间部分提取代码路径、函数名、文件名、TODO 等关键信息。压缩率 73%,耗时 <1ms 。 用了哪些技术,实现了什么功能 llama.cpp — 推理引擎核心 直接调用 llama.cpp 的 llama-server ,所有参数( ctx 、KV cache 类型、线程数、ubatch 、mlock 、tensor split )都通过启动参数注入。Kaiwu 本质上是一个参数决策层,不改推理引擎本身。 IsoQuant / TurboQuant — 3-bit KV cache 压缩 集成了 johndpope 的 turboquant fork ( feature/planarquant-kv-cache ),支持 -ctk iso3 -ctv iso3 参数。iso3 的压缩系数实测 0.73 ,理论值 0.75 ,在 VRAM 紧张的设备( 8GB )上可以把 KV cache 占用压缩到 q8_0 的一半。但有约 600MB 固定解码 buffer 开销,VRAM 充裕时反而比 f16 慢 8%,所以策略是 VRAM > 16GB 才默认开 iso3 。 oobabooga 显存估算公式 — ctx 上限预测(已放弃) 社区流传的公式用来预测剩余显存能支持多大 ctx ,基于 q8_0/f16 拟合。iso3 场景下高估显存需求,导致 ctx 只算出 4K 。最终改成二分探测代替公式,让 llama-server 自己决定能跑多少。 GQA 架构识别 — KV cache 精准估算 Qwen3 等新模型用 GQA ( Grouped Query Attention ),kv_heads 远小于 attention_heads 。KV cache 大小公式里用的是 kv_heads 而不是 heads ,不识别这一点会高估 3-4 倍。通过读 GGUF metadata 拿到准确的 kv_heads 值再做计算。 MoE tensor 识别 — 自动 expert offload 读取模型的 tensor 名称列表,匹配 .ffn_.*_exps. 模式识别出 MoE expert 层,自动决定把这部分路由到 CPU 。不需要用户手动指定,也不需要提前知道模型架构。 Extractive Summary — 零延迟对话压缩 上下文到 75% 时触发,纯算法提取:保留 system prompt 、首轮对话、最近 8K tokens ,中间部分按关键词权重保留(代码路径、函数名、文件名、TODO 、命令行等)。不调用任何模型,压缩耗时 <1ms ,73% 压缩率。最初试过调本地模型生成摘要,单 slot 阻塞直接超时,这条路走不通。 GitHub Actions CI — 跨平台自动编译 turboquant fork 需要自己编译带 iso3 支持的 llama-server 。用 GitHub Actions 同时编译 Windows ( MSVC )和 Linux ( GCC )版本,CUDA 12.4 ,覆盖 sm_75/80/86/89 架构,RTX 50 系列通过 PTX JIT 运行时支持。踩了三个 MSVC 编译坑( extern "C" 声明改定义、M_PI 未定义、全局符号缺失),记录在 PROGRESS.md 里。 工具 把上面这些逻辑都自动化了,叫开物( Kaiwu )。一行命令启动,参数全部自动找,结果缓存起来,第二次 2 秒启动。 GitHub: https://github.com/val1813/kaiwu OpenAI 兼容 API ,Continue / Cursor / Claude Code 直接接。 有遇到类似问题的欢迎交流,尤其是 MoE offload 和 KV cache 这块踩坑挺深的。

www.v2ex.com · 2026-04-26 13:41:17+08:00 · tech

最近在折腾本地大模型,发现一个核心问题:Ollama 和 LM Studio 能让模型跑起来,但参数全靠猜——上下文长度、KV cache 类型、MoE expert 放哪、ubatch 多大……用默认参数基本是在浪费显卡。 于是做了个工具自动找最优配置,过程中踩了不少坑,记录一下。 核心发现 1. MoE 模型的 offload 策略决定了一切 Qwen3-30B-A3B 是 MoE 架构,在 8GB 显卡上: LM Studio 默认把所有层塞进显存 → 7549MB ( 93%),3 tok/s 只把 attention 层放 GPU ,MoE expert 层走 CPU → 2603MB ( 32%),21 tok/s 快了 7 倍,显存反而省了 65%。关键是 llama.cpp 支持这个,但你得自己识别哪些 tensor 是 MoE expert ( .ffn_.*_exps. 这类命名),然后手动配。 2. KV cache 类型影响比大多数人想的大 同一张 8GB 显卡跑 Llama 3.1 8B ,不同 KV cache 配置速度差异: 配置 ctx 速度 iso3+iso3 ,4 slot 8K 19.4 tok/s q8_0+q4_0 ,1 slot 8K 38.2 tok/s f16+f16 ,1 slot 8K 51.7 tok/s f16+f16 ,1 slot (自动) 64K 26.2 tok/s f16 比 iso3 快将近 3 倍。但 f16 显存占用更大,所以正确策略是:先算 f16 KV cache 占多少显存,装得下就用 f16 ,装不下再降级。 公式: KV_MB = 2 × layers × kv_heads × head_dim × ctx × bytes / 1024² 3. oobabooga 公式用来预测 ctx 上限 社区里流传的 oobabooga 显存估算公式,原本用来预测装载模型后剩余显存能支持多大 ctx 。但这个公式是基于 q8_0/f16 拟合的,用 iso3 的时候会严重高估显存需求,导致 ctx 只算出 4K 。 最后放弃公式预测,改成二分探测:从 min(nativeCtx, 65536) 开始,OOM 就减半,最多探 5 次,让 llama-server 自己告诉我能跑多少。Llama 3.1 8B 的 ctx 从 4K 直接到 64K 。 4. parallel slot 数量对单用户场景影响巨大 llama.cpp 默认开 4 个并行 slot (为了多用户并发),但单用户场景下这会把 VRAM 分成 4 份。 关掉多余 slot ( --parallel 1 )之后:18.5 → 38.2 tok/s ,直接翻倍。 5. ubatch 实测比理论更可靠 ubatch 128 vs 512 的性能差异跟模型和显卡都有关系,没有通用最优值。实测结论: 8K ctx:ubatch 512 比 128 快 7.6% 64K ctx:ubatch 512 比 128 快 21.6% 直接 benchmark 两个值取快的,比查文档猜靠谱。 6. 对话压缩不要用模型生成摘要 最初方案是上下文满了之后调本地模型生成摘要——结果单 slot 阻塞,直接超时。 改成纯算法提取:保留头部( system prompt + 首轮对话)和尾部(最近 8K tokens ),中间部分提取代码路径、函数名、文件名、TODO 等关键信息。压缩率 73%,耗时 <1ms 。 用了哪些技术,实现了什么功能 llama.cpp — 推理引擎核心 直接调用 llama.cpp 的 llama-server ,所有参数( ctx 、KV cache 类型、线程数、ubatch 、mlock 、tensor split )都通过启动参数注入。Kaiwu 本质上是一个参数决策层,不改推理引擎本身。 IsoQuant / TurboQuant — 3-bit KV cache 压缩 集成了 johndpope 的 turboquant fork ( feature/planarquant-kv-cache ),支持 -ctk iso3 -ctv iso3 参数。iso3 的压缩系数实测 0.73 ,理论值 0.75 ,在 VRAM 紧张的设备( 8GB )上可以把 KV cache 占用压缩到 q8_0 的一半。但有约 600MB 固定解码 buffer 开销,VRAM 充裕时反而比 f16 慢 8%,所以策略是 VRAM > 16GB 才默认开 iso3 。 oobabooga 显存估算公式 — ctx 上限预测(已放弃) 社区流传的公式用来预测剩余显存能支持多大 ctx ,基于 q8_0/f16 拟合。iso3 场景下高估显存需求,导致 ctx 只算出 4K 。最终改成二分探测代替公式,让 llama-server 自己决定能跑多少。 GQA 架构识别 — KV cache 精准估算 Qwen3 等新模型用 GQA ( Grouped Query Attention ),kv_heads 远小于 attention_heads 。KV cache 大小公式里用的是 kv_heads 而不是 heads ,不识别这一点会高估 3-4 倍。通过读 GGUF metadata 拿到准确的 kv_heads 值再做计算。 MoE tensor 识别 — 自动 expert offload 读取模型的 tensor 名称列表,匹配 .ffn_.*_exps. 模式识别出 MoE expert 层,自动决定把这部分路由到 CPU 。不需要用户手动指定,也不需要提前知道模型架构。 Extractive Summary — 零延迟对话压缩 上下文到 75% 时触发,纯算法提取:保留 system prompt 、首轮对话、最近 8K tokens ,中间部分按关键词权重保留(代码路径、函数名、文件名、TODO 、命令行等)。不调用任何模型,压缩耗时 <1ms ,73% 压缩率。最初试过调本地模型生成摘要,单 slot 阻塞直接超时,这条路走不通。 GitHub Actions CI — 跨平台自动编译 turboquant fork 需要自己编译带 iso3 支持的 llama-server 。用 GitHub Actions 同时编译 Windows ( MSVC )和 Linux ( GCC )版本,CUDA 12.4 ,覆盖 sm_75/80/86/89 架构,RTX 50 系列通过 PTX JIT 运行时支持。踩了三个 MSVC 编译坑( extern "C" 声明改定义、M_PI 未定义、全局符号缺失),记录在 PROGRESS.md 里。 工具 把上面这些逻辑都自动化了,叫开物( Kaiwu )。一行命令启动,参数全部自动找,结果缓存起来,第二次 2 秒启动。 GitHub: https://github.com/val1813/kaiwu OpenAI 兼容 API ,Continue / Cursor / Claude Code 直接接。 有遇到类似问题的欢迎交流,尤其是 MoE offload 和 KV cache 这块踩坑挺深的。

www.v2ex.com · 2026-04-26 12:41:17+08:00 · tech

最近在折腾本地大模型,发现一个核心问题:Ollama 和 LM Studio 能让模型跑起来,但参数全靠猜——上下文长度、KV cache 类型、MoE expert 放哪、ubatch 多大……用默认参数基本是在浪费显卡。 于是做了个工具自动找最优配置,过程中踩了不少坑,记录一下。 核心发现 1. MoE 模型的 offload 策略决定了一切 Qwen3-30B-A3B 是 MoE 架构,在 8GB 显卡上: LM Studio 默认把所有层塞进显存 → 7549MB ( 93%),3 tok/s 只把 attention 层放 GPU ,MoE expert 层走 CPU → 2603MB ( 32%),21 tok/s 快了 7 倍,显存反而省了 65%。关键是 llama.cpp 支持这个,但你得自己识别哪些 tensor 是 MoE expert ( .ffn_.*_exps. 这类命名),然后手动配。 2. KV cache 类型影响比大多数人想的大 同一张 8GB 显卡跑 Llama 3.1 8B ,不同 KV cache 配置速度差异: 配置 ctx 速度 iso3+iso3 ,4 slot 8K 19.4 tok/s q8_0+q4_0 ,1 slot 8K 38.2 tok/s f16+f16 ,1 slot 8K 51.7 tok/s f16+f16 ,1 slot (自动) 64K 26.2 tok/s f16 比 iso3 快将近 3 倍。但 f16 显存占用更大,所以正确策略是:先算 f16 KV cache 占多少显存,装得下就用 f16 ,装不下再降级。 公式: KV_MB = 2 × layers × kv_heads × head_dim × ctx × bytes / 1024² 3. oobabooga 公式用来预测 ctx 上限 社区里流传的 oobabooga 显存估算公式,原本用来预测装载模型后剩余显存能支持多大 ctx 。但这个公式是基于 q8_0/f16 拟合的,用 iso3 的时候会严重高估显存需求,导致 ctx 只算出 4K 。 最后放弃公式预测,改成二分探测:从 min(nativeCtx, 65536) 开始,OOM 就减半,最多探 5 次,让 llama-server 自己告诉我能跑多少。Llama 3.1 8B 的 ctx 从 4K 直接到 64K 。 4. parallel slot 数量对单用户场景影响巨大 llama.cpp 默认开 4 个并行 slot (为了多用户并发),但单用户场景下这会把 VRAM 分成 4 份。 关掉多余 slot ( --parallel 1 )之后:18.5 → 38.2 tok/s ,直接翻倍。 5. ubatch 实测比理论更可靠 ubatch 128 vs 512 的性能差异跟模型和显卡都有关系,没有通用最优值。实测结论: 8K ctx:ubatch 512 比 128 快 7.6% 64K ctx:ubatch 512 比 128 快 21.6% 直接 benchmark 两个值取快的,比查文档猜靠谱。 6. 对话压缩不要用模型生成摘要 最初方案是上下文满了之后调本地模型生成摘要——结果单 slot 阻塞,直接超时。 改成纯算法提取:保留头部( system prompt + 首轮对话)和尾部(最近 8K tokens ),中间部分提取代码路径、函数名、文件名、TODO 等关键信息。压缩率 73%,耗时 <1ms 。 用了哪些技术,实现了什么功能 llama.cpp — 推理引擎核心 直接调用 llama.cpp 的 llama-server ,所有参数( ctx 、KV cache 类型、线程数、ubatch 、mlock 、tensor split )都通过启动参数注入。Kaiwu 本质上是一个参数决策层,不改推理引擎本身。 IsoQuant / TurboQuant — 3-bit KV cache 压缩 集成了 johndpope 的 turboquant fork ( feature/planarquant-kv-cache ),支持 -ctk iso3 -ctv iso3 参数。iso3 的压缩系数实测 0.73 ,理论值 0.75 ,在 VRAM 紧张的设备( 8GB )上可以把 KV cache 占用压缩到 q8_0 的一半。但有约 600MB 固定解码 buffer 开销,VRAM 充裕时反而比 f16 慢 8%,所以策略是 VRAM > 16GB 才默认开 iso3 。 oobabooga 显存估算公式 — ctx 上限预测(已放弃) 社区流传的公式用来预测剩余显存能支持多大 ctx ,基于 q8_0/f16 拟合。iso3 场景下高估显存需求,导致 ctx 只算出 4K 。最终改成二分探测代替公式,让 llama-server 自己决定能跑多少。 GQA 架构识别 — KV cache 精准估算 Qwen3 等新模型用 GQA ( Grouped Query Attention ),kv_heads 远小于 attention_heads 。KV cache 大小公式里用的是 kv_heads 而不是 heads ,不识别这一点会高估 3-4 倍。通过读 GGUF metadata 拿到准确的 kv_heads 值再做计算。 MoE tensor 识别 — 自动 expert offload 读取模型的 tensor 名称列表,匹配 .ffn_.*_exps. 模式识别出 MoE expert 层,自动决定把这部分路由到 CPU 。不需要用户手动指定,也不需要提前知道模型架构。 Extractive Summary — 零延迟对话压缩 上下文到 75% 时触发,纯算法提取:保留 system prompt 、首轮对话、最近 8K tokens ,中间部分按关键词权重保留(代码路径、函数名、文件名、TODO 、命令行等)。不调用任何模型,压缩耗时 <1ms ,73% 压缩率。最初试过调本地模型生成摘要,单 slot 阻塞直接超时,这条路走不通。 GitHub Actions CI — 跨平台自动编译 turboquant fork 需要自己编译带 iso3 支持的 llama-server 。用 GitHub Actions 同时编译 Windows ( MSVC )和 Linux ( GCC )版本,CUDA 12.4 ,覆盖 sm_75/80/86/89 架构,RTX 50 系列通过 PTX JIT 运行时支持。踩了三个 MSVC 编译坑( extern "C" 声明改定义、M_PI 未定义、全局符号缺失),记录在 PROGRESS.md 里。 工具 把上面这些逻辑都自动化了,叫开物( Kaiwu )。一行命令启动,参数全部自动找,结果缓存起来,第二次 2 秒启动。 GitHub: https://github.com/val1813/kaiwu OpenAI 兼容 API ,Continue / Cursor / Claude Code 直接接。 有遇到类似问题的欢迎交流,尤其是 MoE offload 和 KV cache 这块踩坑挺深的。