Hemmingway-1 为什么“快“:MTP 推测解码与模板裁剪里的 token 经济学
Hemmingway-1 为什么快MTP 推测解码与模板裁剪里的 token 经济学【免费下载链接】Hemmingway-1项目地址: https://ai.gitcode.com/hf_mirrors/Altworld/Hemmingway-1一个只有 27B 参数的模型凭什么在 CommunicationBench 上以 1026 分压过 Fable 5.1、Kimi K3 乃至 GPT-6 Astra 整整 50 分社区对它的讨论大多停在写得好、像人话上却忽略了一个更值得工程师深挖的问题它为什么快以及快从哪来。快从来不是单一技术的结果。翻开源权重仓库你会发现Hemmingway-1 的每一次加速都被设计成了明确的 token 经济学账本训练时就内置的多 token 预测模块MTP在推理期变成推测解码的草稿模型3:1 的混合注意力把 262K 上下文的 KV 缓存压到纯全注意力模型的四分之一而一个精心裁剪的 chat_template.jinja 则负责在模板层面把思考和冗余输出从 token 账单上抹掉。这篇文章逐层拆开这三笔账。MTP 多 token 预测一次前向输出 N 个 token先看证据。在 config.json 里有这样两行mtp_num_hidden_layers: 1, mtp_use_dedicated_embeddings: false而 model.safetensors.index.json 的权重清单里MTP 模块的 15 组参数被完整地单独存进了model-mtp.safetensorsmtp.fc.weight mtp.pre_fc_norm_embedding.weight mtp.pre_fc_norm_hidden.weight mtp.layers.0.self_attn.{q,k,v,o}_proj.weight mtp.layers.0.mlp.{gate,up,down}_proj.weight mtp.norm.weight这套embedding 与 hidden 分别过 norm、再经 fc 融合、喂给单个共享 Transformer block的结构正是 DeepSeek-V3 系列提出的 MTPMulti-Token Prediction标准形态。它的训练逻辑很直接主模型在位置 i 输出隐藏状态 h_i 后把 h_i 与第 i1 个 token 的 embedding 拼接融合交给那一个共享的 MTP block让它直接预测第 i2 个 token。由于 block 是共享的参数增量只有数亿级相对 26.9B 总参数model.safetensors.index.json 的 metadata 记录为 26,895,998,464几乎可以忽略——这就是训练时用最小代价买一个多步预测能力的账。这笔账在推理期开始回报。MTP 头天然是推测解码speculative decoding的廉价草稿模型它成本极低地草拟出接下来 1~2 个候选 token主模型再单次前向并行验证整条候选序列。关键数字在于无论验证多少候选主模型都只做一次前向、只追加一次 KV而验收通过一个 token 就相当于白赚一个。设单个候选接受率为 α则每步期望产出的 token 数约为 1/(1-α)草稿质量够好时 α 落在 0.6~0.85 区间解码吞吐就能放大到 1.5~1.8 倍。对一个回复往往只有百来个 token 的轻量写作模型来说这部分摊薄的正是最昂贵的逐 token 串行成本。混合注意力3:1 分层KV 缓存只长四分之一长上下文的推理成本大头从来不是算力而是 KV 缓存——序列越长缓存越大单卡装不下还要跨卡搬运。Hemmingway-1 的解法写在 config.json 的layer_types数组里64 层中每隔 4 层才出现一次full_attention其余 48 层全部是linear_attention对应full_attention_interval: 4。也就是说 64 层里只有 16 层全注意力、48 层线性注意力正好 3:1 混合。线性注意力层不是普通注意力的降采样而是类 Mamba 的状态空间机制从权重名可以看到每层携带conv1d.weight、A_log、dt_bias、in_proj_a/b/qkv/z等状态空间特征参数配合linear_key_head_dim: 128、linear_num_value_heads: 48的配置config.json。这类层把历史压缩为固定大小的隐状态KV 不随序列长度线性增长。于是 262,144 的上下文窗口max_position_embeddingsREADME 也注明 Context 262,144 tokens不再意味着每请求都要吃掉几个 GB 的缓存而是在 80G 单卡A100/H100上就能以 vLLM 原生服务vllm serve Altworld/Hemmingway-1 --max-model-len 262144把等式摆出来就是全注意力层占比降到 1/4 → KV 缓存总量按比例缩到纯 Transformer 的约 1/4 → 相同显存预算下可服务的并发与序列长度同步放大。长上下文没有变成昂贵的地段这就是混合注意力给出的经济学答案。模板里的 token 手术刀思考裁剪与历史推理块回收如果说 MTP 和混合注意力是硬件层的提速那么 chat_template.jinja 里的三处裁剪就是纯软件层面的 token 止血三档思考模式。模板把 reasoning effort 限定为xhigh/medium/low三档默认xhigh切到low时系统指令会变成一句Keep your thinking brief and focused, moving directly to the conclusion without unnecessary elaborationchat_template.jinja 第 51~55 行。而enable_thinkingfalse时生成提示里只塞一个空的think/think占位第 163~169 行——思考块整体从输出 token 里消失。历史思考块回收。模板第 116 行的条件是全文最值得玩味的一行{%- if preserve_thinking is undefined or preserve_thinking is true or loop.index0 ns.last_query_index %} {{- |im_start| message.role \nthink\n reasoning_content \n/think\n\n content }} {%- else %} {{- |im_start| message.role \n content }} {%- endif %}当preserve_thinking关闭时只有最后一条真实用户提问所在轮次之后的思考块会被保留更早的历史think.../think直接在重放上下文时被剥掉只留下干净的正文。注意真实用户提问的判定也不是拍脑袋模板用倒序扫描第 88~101 行把包在tool_response里的工具返回从用户提问中排除保证多步工具调用场景下定位到的是真正的人类诉求而不是把用户的思考历史误伤。这笔账在多轮对话里是复利式的第一轮若产生 200~400 token 的思考第二轮起每轮都把这段历史从输入中剪除——对话越长节省的输入 token 越多且这种节省直接落到 prefill 和注意力计算上。算一笔账同一个写作任务它比同类省多少现在把三笔账合起来落到 README 里那句最尖锐的对比Ask most models for a text to your landlord and you get three options, a preamble, and a paragraph explaining the options. Hemmingway-1 just gives you the text.README.md这不是文案而是被量化过的输出结构差异。charts/wrapped.png 这张图专门测量模型把真正要发的正文埋在注释、选项和说明里的比例Fable 5、GLM-5.3 和 Kimi K3 在超过十分之九的回复里都会这么做。按此估算一个 100 token 的日常写作任务典型助手模型的输出是开场白 三个版本 选项解释约 300~450 token且按行业惯例输出 token 的计价通常数倍于输入Hemmingway-1 直接给出一条 100 token 上下的可用正文。仅输出端就有 3~4 倍的差距。更值得注意的是类别差异——charts/categories-heatmap.png 显示在难开口的请求这类任务上GPT-6 Astra 的类人回答率只有 9%Hemmingway-1 是 72%把整条链路加总输出结构省掉 3 倍左右的生成 tokenlow思考档位或preserve_thinkingfalse把思考块从输入输出两端同时抹掉MTP 推测解码把每步串行解码放大到 1.5~1.8 倍吞吐3:1 混合注意力让 262K 上下文在单卡 80G 上常驻而不必频繁换页。四件事叠加同样一次写作请求的端到端 token 消耗和延迟与那些9 成回复都在裹脚布的同级模型之间已经不是同一量级。这也是 Hemmingway-1 最有意思的地方它没有靠更大的模型、更长的思考来赢得像人的分数而是反过来——把 token 花在刀刃上。MTP 摊薄解码、混合注意力压低缓存、模板裁掉思考与废话每一层都在做同一件事让模型把预算全部投向那一条可以直接复制发送的正文。速度与人味在这里不是 trade-off而是同一笔账的两面。【免费下载链接】Hemmingway-1项目地址: https://ai.gitcode.com/hf_mirrors/Altworld/Hemmingway-1创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Claude Code 原生模式 vs Caveman Mode:同样求简洁,差在哪?

Claude Code 原生模式 vs Caveman Mode:同样求简洁,差在哪?

Claude Code 原生模式 vs Caveman Mode:同样求简洁,差在哪? 【免费下载链接】caveman 🪨 why use many token when few token do trick. Viral skill proxy for coding agents that cuts 65% of tokens by talking like a cavema…

2026/10/13 18:46:50 阅读更多 →
回文子串与回文子序列:二维DP遍历顺序与中心扩展法详解

回文子串与回文子序列:二维DP遍历顺序与中心扩展法详解

开始刷到第四十五天,字符串相关的动态规划算是快收尾了。今天这两道题,647回文子串和516最长回文子序列,放在一起刷其实挺有意思——同样都是“回文”,一个要求连续的子串,一个允许不连续的子序列,解法上的…

2026/10/13 7:26:31 阅读更多 →
智慧城市市容检测数据集:VOC转YOLO格式与训练避坑指南

智慧城市市容检测数据集:VOC转YOLO格式与训练避坑指南

简介:面向智慧城市市容巡检场景的街道涂鸦、垃圾、故障路灯等目标检测数据集,已按VOC与YOLO两种格式整理,适合训练目标检测模型。资源涵盖19263张图片对应的标注,共11个类别,覆盖涂鸦、垃圾堆放、故障路灯等常见市容问…

2026/10/13 18:57:02 阅读更多 →

最新新闻

一张图微调YOLOv11:自然栖息地鸟类检测的流程与扩充

一张图微调YOLOv11:自然栖息地鸟类检测的流程与扩充

简介:面向 YOLOv11 模型验证需求,这份精简版鸟类目标检测数据集包含一张真实野外鸟类图像及配套标准标注,可用于快速原型验证、轻量级部署测试与小样本检测基线建立。压缩包共五个文件,包含三张 JPG 图像、一个数据配置文件与一个…

2026/10/14 3:39:38 阅读更多 →
ASP.NET + SQLServer葡萄酒商城源码:从数据库还原到下单事务全攻略

ASP.NET + SQLServer葡萄酒商城源码:从数据库还原到下单事务全攻略

简介:一套基于ASP.NET与SQL Server的葡萄酒网上商城销售系统,面向ASP.NET WebForm学习者、毕业设计学生以及需要搭建在线商城教学演示的开发者。系统围绕普通会员、商户会员和管理员三类角色展开,覆盖商品管理、购物车、订单处理、发货、商户…

2026/10/14 3:39:38 阅读更多 →
LangChain项目代码拆解:Chain、Agent、Memory与Retrieval四大核心组件实战指南

LangChain项目代码拆解:Chain、Agent、Memory与Retrieval四大核心组件实战指南

简介:这是一份LangChain入门与实践的项目代码包,面向正在学习大模型应用开发的Python开发者,旨在帮助读者快速理解LangChain的模块化设计与核心用法。包内共3个文件,包含一个HTML格式的入门讲解页、一个项目运行配置文件以及一个版…

2026/10/14 3:39:38 阅读更多 →
C++学习日记 Day21:C++11(下)lambda表达式和function包装器

C++学习日记 Day21:C++11(下)lambda表达式和function包装器

## 今天学了什么今天学习C11的lambda表达式和function包装器。## 可调用对象概念:在C中有一类对象可像函数一样调用;分类:①函数指针using prt void(*)(int, string); prt f1 fun; f1(1, "函数指针");②仿函数 --有 operator&am…

2026/10/14 3:39:38 阅读更多 →
一人公司AI工作流:6步实现内容生产去体力化

一人公司AI工作流:6步实现内容生产去体力化

1. 一人公司的内容困局与破局思路一个人做内容,最怕的不是没灵感,而是灵感来了却卡在“执行”上。写一篇长文要三小时,做一张配图要半小时,剪一条短视频要一整个下午,排版发布又要来回切换四五个平台。一天下来&#x…

2026/10/14 3:39:38 阅读更多 →
8765平台前后摄DVDD电压不一致排查与修复指南

8765平台前后摄DVDD电压不一致排查与修复指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 3:38:38 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →