拆开 Hemmingway-1 的“嘴“:3:1 混合注意力如何让 27B 模型说人话

发布时间:2026/10/16 14:19:21
拆开 Hemmingway-1 的“嘴“:3:1 混合注意力如何让 27B 模型说人话
拆开 Hemmingway-1 的嘴3:1 混合注意力如何让 27B 模型说人话【免费下载链接】Hemmingway-1项目地址: https://ai.gitcode.com/hf_mirrors/Altworld/Hemmingway-12026 年开源写作模型赛道里27B 参数的 Hemmingway-1 是个异类它不追求堆算力而是专攻说人话。问它要一封给房东的邮件它不给你三个选项加一段前情提要而是直接给正文。社区盲测中它在 CommunicationBench 拿第一、Human-Likeness 领先第二名 26 分。这些结果的背后是一套刻意设计的 3:1 混合注意力架构——64 层网络里每 4 层只放 1 层全注意力。本文直接从仓库源码出发拆解这套嘴的结构看它如何用 75% 的线性注意力支撑 262K 上下文又如何在表达连贯性与长程检索能力之间做出取舍。从 config.json 读出它的骨架模型配置是最诚实的解剖图。打开仓库根目录的 config.jsonlayer_types字段把 64 层的注意力类型列得清清楚楚layer_types: [ linear_attention, linear_attention, linear_attention, full_attention, linear_attention, linear_attention, linear_attention, full_attention, ... ], full_attention_interval: 4, num_hidden_layers: 64逐层数一遍48 层是linear_attention16 层是full_attention全注意力层落在 3、7、11、15……63 号层位上严格以 4 层为周期、每个周期插入一层即 3:1 的混合配比。full_attention_interval: 4这个超参把每 4 层打一个精确锚点写死进了架构。参数总量 26,895,998,464约 26.9B对外称 27Bmax_position_embeddings: 262144声明了 26 万 token 的上下文能力基座为 Qwen3.8-27Bmodel_type记为qwen3_5_text。从权重清单 model.safetensors.index.json 还能交叉验证每个 linear 层都带有A_log、conv1d、dt_bias、in_proj_a、in_proj_b、in_proj_qkv、in_proj_z、norm、out_proj九类权重这是典型的 Mamba 系状态空间线性注意力结构而每个 full 层则带q_proj、k_proj、v_proj、o_proj与q_norm、k_norm是标准的 GQA 全注意力。线性层与全注意力层各自在干什么先看数量占 75% 的线性层。它的关键超参在 config 里单独成组linear_conv_kernel_dim: 4, linear_num_key_heads: 16, linear_key_head_dim: 128, linear_num_value_heads: 48, linear_value_head_dim: 128, mamba_ssm_dtype: float3216 个 key 头、48 个 value 头配合A_log/dt_bias这种 SSM 参数说明它做的是带门控的递归压缩每步只维护一个固定大小的状态向量把历史信息压进去卷积核kernel dim 4处理局部窗口in_proj_z提供门控。代价是距离越远的 token 被压缩得越模糊——这是递归类结构的先天特性。再看不多的全注意力层24 个 attention 头、4 个 KV 头GQAhead_dim: 256、partial_rotary_factor: 0.25、rope_theta: 10^7。全注意力不做压缩query 可以直接点名历史上任何一个精确的 token包括某个措辞、某个名字、某个语气参照。但它贵KV cache 随上下文线性增长。3:1 的含义因此很清晰递归层负责低成本的常态信息流与压缩记忆每隔 4 层插入的全注意力负责高保真的精确检索锚点。前者管读过的都会记得个大概后者管关键处一个字都不能错。长上下文下如何保持连贯写日常消息和邮件场景和全注意力模型的长篇小说生成有本质差异上下文往往很长一个完整对话历史、多封往来邮件但对精确回溯的要求集中在少数关键信息上。这正是 3:1 混合的甜区。线性层的固定状态意味着 KV 开销与上下文长度解耦。按 bf16、逐 token 粗算单个全注意力层每 token 的 KV cache 约为 4KV 头× 256head_dim× 2KV× 2 字节 ≈ 4KB16 层全注意力共 64KB/token塞满 262,144 token 时约 16GiB而 48 层线性注意力的状态合计恒定在 MB 量级。若是 64 层纯全注意力同上下文下 KV 开销要再翻 4 倍、到 60GiB 以上单卡推理基本无望。社区流传单卡 A100/H100 80G 即可跑 256K靠的就是这套结构。连贯性则来自周期性锚定线性层负责把对话里绵长的铺垫、情绪走向、已确认的结论递进式地传递下去而每隔 4 层出现的全注意力层让网络有机会把当前输出与上下文里某个确切的位置重新对齐——比如房东邮件里反复出现的日期、给对方姓名、上一轮承诺的措辞。这种每 4 层刷新一次精确记忆的设计恰好压住了递归压缩带来的长程漂移topic drift也解释了 Human-Likeness 盲测里它像人写的评价人类写长消息时本来就是整体顺流而下 关键处回头核对。解码侧还有配套仓库中的 model-mtp.safetensors 携带mtp.layers.0.self_attn、mtp.fc、mtp.pre_fc_norm_embedding等权重config.json 中mtp_num_hidden_layers: 1——MTP 多 token 预测模块以一层全注意力做单步投机让长上下文解码更快。配合 chat_template.jinja 内置的三档思考模式xhigh/medium/low可以按写作场景调节推理深度轻量消息用low直接出稿正式场合用xhigh斟酌措辞。与纯全注意力架构的取舍任何混合结构都不是免费的。全注意力层数量减到 1/4换来的是显存、算力与部署门槛的大幅下降代价是全局精确检索能力的折损——如果一个信息只在 2 万 token 之前出现过一次而它恰好落在两个全注意力锚点之间递归层可能只给它一个模糊的残留。仓库 README 对此毫不讳言在 categories-heatmap.png该图在本仓库快照中为 LFS 指针、未能随包检出对应的分类测评里它在金钱与行政职场沟通难开口的请求说服别人等日常消息场景大比分获胜难开口请求场景 GPT-6 Astra 仅 9% 被判定为人写Hemmingway-1 为 72%却在敌意叙事和长篇故事转折上输给专门的 story 模型。这正是架构取舍的直接印证长故事需要跨越整个篇章反复回溯前文伏笔属于全注意力密度越高越好的场景而日常消息是短程精确 长程氛围3:1 混合恰好踩在甜点上。基准数据同样写在 README 的图表里。CommunicationBench 的 80 组真实请求、双向乱序盲测中它登顶同一批对局换一个问题——这两段哪个是人写的它领先第二名 26 分它还测了一个非官方指标你到底给没给我正文Fable 5、GLM-5.3、Kimi K3 在十次回复里有九次以上把正文埋在选项和备注里Hemmingway-1 几乎每次直接给文本情感智能方面官方公开的 EQ-Bench 4 上它排第三压在 GPT-5.5、Opus 4.7/4.8 之上距榜首 12 分以内StoryBench 上与 Kimi K3 持平比基座模型 Qwen3.8-Max 与 DeepSeek V4 Pro 高出 504 分一个 27B 模型用 1/4 的全注意力层在写日常人话这件事上压过一批百亿到千亿级的头部模型——这本身就是混合注意力最有说服力的产品化注脚。README 也坦承 CommunicationBench、Human-Likeness、StoryBench 是自建基准双向乱序盲测、评审模型与被评模型分离EQ-Bench 4 则不是它的。从源码到部署结构决定行为行为落在运行时。要复现这套嘴一行命令即可README.mdvllm serve Altworld/Hemmingway-1 --max-model-len 262144Transformers 侧同样开箱即用模板处理由仓库自带的 chat_template.jinja 接管from transformers import AutoModelForCausalLM, AutoTokenizer model_id Altworld/Hemmingway-1 tok AutoTokenizer.from_pretrained(model_id) model AutoModelForCausalLM.from_pretrained(model_id, device_mapauto, dtypeauto) messages [{role: user, content: Write the text I send my landlord about the broken boiler.}] ids tok.apply_chat_template(messages, add_generation_promptTrue, return_tensorspt).to(model.device) out model.generate(ids, max_new_tokens512) print(tok.decode(out[0][ids.shape[-1]:], skip_special_tokensTrue))generation_config.json 的默认采样参数do_sample: true、temperature: 1.0、top_k: 20、top_p: 0.95偏宽松与像人一样有语气起伏的目标一致——太贪心的解码只会让输出更僵。3:1 混合注意力给出的启示很直白长上下文能力未必只能靠堆全注意力买来。先想清楚任务里精确检索和氛围记忆各占多少再用全注意力当锚、用递归结构做骨同样能把说人话做成 27B 模型就能登顶的生意。Hemmingway-1 的开源版本以 CC BY-NC 4.0 发布个人与研究用途免费这也让这套架构成了可复盘的公开样本。【免费下载链接】Hemmingway-1项目地址: https://ai.gitcode.com/hf_mirrors/Altworld/Hemmingway-1创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考