小模型干大事路线图从 GLiNER v2 60M 到 340M Decide轻量 NER 路线的三招可复制打法【免费下载链接】GLiNER2.5-Decide项目地址: https://ai.gitcode.com/hf_mirrors/fastino/GLiNER2.5-Decide过去两年中文技术社区讨论小模型时最常见的叙事是量化与蒸馏——把大模型变小。而 GLiNER 家族给出了一条截然不同的路线从一开始就不做大模型而是做任务专用的小模型。2026 年 9 月底发布的 GLiNER2.5-Decide340M 参数把这条路线推到了一个新高度在 17 个领域的决策分类基准 fast-decisions 上它以 60.2% 的精确匹配准确率击败了 4B 量级的 Qwen3.556.4%同时保持 CPU 可推理、Apache 2.0 开源、无 token 生成。发布后一周内CSDN 等平台出现了十余篇选型、部署、微调实操文章社区热度可见一斑。本文以 GLiNER2.5-Decide 仓库源码为证据拆解这条小模型干大事路线的完整谱系并总结出三招可复制打法专用架构、标签即输入、无生成。每一招都能从仓库的config.json、tokenizer_config.json、README.md中找到对应实现。一、GLiNER 家族谱系60M 边缘版与 340M 决策版的分工理解 Decide要先看它在家族中的位置。从社区情报与论文arXiv 2507.18546可以还原出这样一张谱系表档位参数量定位佐证GLiNER v2 small约 60M边缘端实体识别NER社区情报中反复出现的60M 边缘小模型GLiNER2 base205M通用抽取NER 分类 层级结构化抽取arXiv 2507.18546论文实验模型GLiNER2.5-multi-Decide287M多语言决策分类官方多语言方案README.md 基准表GLiNER2.5-Decide340M英文运营决策分类本文主角本仓库GLiNER2.5-Decide-1B约 1B需深度微调、算力充足的场景README.md 基准表这套谱系的分工逻辑很清晰按规模分档按任务分家。60M 档位解决边缘端能不能跑 NER的问题205M 档位解决一个模型能不能同时干 NER、分类、结构化抽取的问题而 340M 档位则进一步收窄为运营决策分类这一个高度聚焦的品类。Decide 的定位在仓库里写得非常直白README.mdThis release is not a general-purpose model. It does not reason, explain, or answer open questions. It is a specialist for operational decisions: customer and banking intent, travel and clinic requests, review sentiment, document type, email and ticket routing, human handoff, agent completion, moderation, severity, urgency, and spam.它不是通用模型甚至明确宣称不推理、不解释、不回答开放问题。它是把 17 类高频运营决策——意图识别、工单路由、紧急度、内容审核、邮件分诊——全部收编进一次前向传播的专用分类器。这种刻意做窄恰恰是它能用 340M 打 4B 的根基。从 config.json 可以看到它的硬件基因model_name为microsoft/deberta-v3-large编码器 24 层、hidden size 1024、16 注意力头模型架构为Gliner2ForSchemaExtractionspan_head采用markerV0模式、max_width: 8。这意味着它不是一个接在 [CLS] 上的传统分类头而是一套基于 span 打分的抽取式架构——这正是后面三招的第一招。二、小模型干大事的三招第一招专用架构——把分类重构成span 打分传统文本分类的做法是在编码器顶部接一个线性层把 [CLS] 表示映射到固定数量的类别。这个设计的致命弱点是输出维度绑定标签集合——换一套标签就得重新训练。GLiNER2 家族换了一条路让每个标签在输入序列里占一个位置然后对文本 span和标签嵌入做相似度打分。论文给出了核心公式score(s_i, e_j) sim(h_si, h_ej)即每个候选文本片段与每个标签的表示做点积 sigmoid分类任务中每个标签 token 的上下文表示经过 MLP 投影成标量 logitlogit_i MLP(h_ℓi)单标签任务对 logits 做 softmax多标签任务对每个 logit 独立做 sigmoid。仓库的 config.json 就是这套架构的实证{ architecture: span, architectures: [Gliner2ForSchemaExtraction], span_head: { dropout: 0.1, max_width: 8, span_mode: markerV0 }, counting_layer: count_lstm, token_pooling: first, max_width: 8 }architecture: span、span_mode: markerV0、counting_layer: count_lstm层级结构化抽取中的实例计数模块都指向同一个事实这是一个把分类、抽取统一为span 与标签匹配的专用架构。这套架构的直接收益是所有标签并行打分一次前向搞定。论文报告的 CPU 延迟对比很有说服力单位毫秒#标签GPT-4oDeBERTaGLiClassGLiNER2535817141371301038234041311322042567581401635046316897190208DeBERTa 类模型每多一个标签就要多跑一遍前向20 个标签时延迟飙到 6.7 秒GLiNER2 家族在 CPU 上全程维持在 200 毫秒以内相对 GPT-4o 有约 2.6 倍的吞吐优势。把分类任务建模成标签与 span 的匹配问题换来的不是精度而是延迟不随标签数量增长的稳定性——这是它敢称运营决策专用的原因路由、审核、分诊这类场景延迟是硬指标。第二招标签即输入——schema 驱动换标签集等于换分类器第二招是接口层的设计。传统零样本分类靠 prompt 模板拼提示词而 GLiNER2 家族把标签集合直接作为输入参数注入模型。看仓库里的 tokenizer_config.json新增的特殊 token 完整定义了一套 schema 语法Token语义角色[P]任务规格prompt起点[E]NER 实体类型标记[C]层级结构中的子字段/属性标记[L]分类标签标记每个标签获得独立嵌入用于打分[R]额外角色头标记决策/评分等[SEP_STRUCT]/[SEP_TEXT]结构段与文本段的分隔符[DESCRIPTION]标签描述的注入标记[EXAMPLE]/[OUTPUT]示例与输出约束标记论文给出的分类输入格式是[P] task ([L] label1 [L] label2 ...) [SEP] text——标签不是藏在提示词里让模型理解而是作为结构化输入段与文本拼接由模型对每个标签独立打分。这意味着标签集合是运行时的自由参数。在 README.md 里这种标签即输入的体验被压缩成一次classify_text调用from gliner2 import AutoExtractor model AutoExtractor.from_pretrained(fastino/GLiNER2.5-Decide) model.classify_text( My subscription renewed on April 15 for ¥5,400 after the service was already down. Can I get that charge refunded?, {intent: [ order_status, refund_request, cancel_subscription, update_payment, login_problem, shipping_delay, bug_report, speak_to_human, other, ]}, ) # 输出示例{intent: refund_request}标签即输入带来三个业务层面的结果换标签集 换分类器无需重训。客服话术变了、产品目录改了改一行调用即可。支持多决策头并行。一次前向可以同时打分意图、紧急度、路由三个头这正是邮件分诊三件套类场景的基础model.classify_text( From: compliancegroup.example\nSubject: Protocol update — action required today\n\nPlease confirm the new retention rule is applied before Fridays audit., { intent: [fyi, request, approval, complaint, newsletter, security_alert], urgency: [low, normal, high, critical], route: [support, billing, legal, security, finance, archive], }, ) # 输出示例{intent: request, urgency: high, route: legal}标签可以携带语义信息带自然语言描述的标签私有分类体系、把0~10当普通字符串传入的序数评分、甚至用prompt字段把问题作为条件注入做段落问答判定yes/no。更值得注意的是这个 schema 从推理端一直贯穿到训练端。README 的微调格式说明显示训练 JSONL 行里的task、labels、prompt、multi_label与推理调用完全同构{input: My subscription renewed after the service was already down. Can I get that charge refunded?, output: {classifications: [{task: intent, labels: [order_status, refund_request, cancel_subscription, other], true_label: [refund_request]}]}} {input: The treaty was signed in Paris in 1992 and entered into force the following year., output: {classifications: [{task: answer, labels: [yes, no], prompt: Did the treaty enter into force in 1992?, true_label: [no]}]}}训练与推理共享同一套 schema 描述语言业务定义的标签体系可以直接复用为训练数据格式——这大幅降低了微调的上手成本也让动态标签不是推理期的花活而是模型从头到尾都在学的东西。第三招无生成——输出决策不产生 token第三招是减法整个推理过程不生成任何 token。没有 prompt 模板、没有解码循环、没有采样随机性输出直接是结构化的决策对象——单标签返回一个字符串多标签返回阈值以上的标签列表。对比一下 LLM 路线的成本结构一次分类要先把输入和标签写进 prompt然后跑自回归解码每个 token 都是延迟和成本而 Decide 一次前向做完所有标签的打分输出的是一个确定性的决策。README 中多标签产品属性抽取示例展示了输出形状model.classify_text( Battery dies before lunch, but the keyboard and the screen are the best I have used on a laptop., {aspects: { labels: [battery, keyboard, screen, camera, price, support], multi_label: True, cls_threshold: 0.4, }}, ) # 输出示例{aspects: [battery, keyboard, screen]}multi_label与cls_threshold就是这套决策而非生成体系的工程化产物阈值直接调节精度/召回不需要改 prompt、不需要重采样。无生成还带来了部署层面的连锁红利。340M 的规模 编码器架构 单次前向意味着它可以在 CPU 上跑内存占用可控适合边缘部署与私有化。配合 config.json 里max_position_embeddings: 512的位置嵌入上限长文档场景用重叠分块即可处理——社区的多篇部署文章CPU/GPU 选型、批量请求、长文档分块正是在验证这条链路。最后快照情报中那篇340M 击败 4B的深度解析点出了本质Decide 赢 Qwen3.5-4B不是赢在模型更强而是赢在把任务收窄到它唯一擅长的事上——精确匹配 并行打分 零生成。这三点在 fast-decisions 基准17 领域、每领域 300 条留出样本、所有模型用相同文本与候选标签上得到了同口径验证模型平均精确匹配准确率GLiNER2.5-Decide (340M)60.2%GLiNER2.5-Decide-1B59.6%JevK557.6%GLiNER2.5-multi-Decide (287M)56.7%SemIf (Qwen3.5-4B)56.4%GLiFormer large-v149.0%Laya Router46.6%一个值得玩味的细节340M 的 Decide 反而比 1B 版本高出 0.6 个百分点。规模在这里不是单调优势——数据与任务的匹配度比参数量更重要。三、这套打法能否复制到其他任务三招专用架构 标签即输入 无生成本质上是一个可复用的范式而且社区已经给出了多个复制样本。论文的 Related Work 部分梳理了这一脉GLiClass把 GLiNER 的打分机制适配到零样本文本分类GLiREL扩展到零样本关系抽取GLiNER-BioMed、OpenBioNER通过实体类型描述做轻量生物医学 NERGLiDRE法语文档级关系抽取。这些项目共享同一套标签即输入 span 打分的机制各自在任务类型和语言上做收窄。换句话说标签即输入的本质是把任意封闭集合上的映射问题翻译成模型语言——实体类型、关系类别、分类标签、序数评分、段落问答的 yes/no全都是一组候选标签 打分。GLiNER2 论文正是靠着这套统一表述用 205M 模型在零样本分类上拿到平均 0.72 的准确率GPT-4o 为 0.84GLiClass 为 0.63DeBERTa-v3 为 0.69在 Banking77 意图识别上以 0.70 大幅拉开与 DeBERTa-v30.42的差距。但复制的边界同样清晰这套打法只在候选集合封闭、输出结构固定的任务上有效。README 反复强调 Decide 不推理、不解释、不回答开放问题——需要开放生成、链式推理或自由文本输出的任务不在它的射程内。它是决策层router/gate/scorer的专用件而不是对话层chat/agent 主脑的替代品。社区情报里双模型编排的思路——决策交给小模型、生成交给大模型——正是对这种分工的认可。四、家族路线对国内开源社区的启示GLiNER 家族这三年60M 边缘 NER → 205M 统一抽取 → 340M/1B 决策分类的演进浓缩了三条可迁移的经验其一从追参数量转向追任务-成本曲线。340M 在决策任务上反超 4B 的事实说明对大量高频结构化业务意图、路由、审核、分诊性能瓶颈不在模型规模而在任务与架构的匹配度。国内团队在做垂直领域小模型时值得先问一句这个任务是不是封闭标签集合上的映射如果是encoder 打分路线天然比 decoder 生成路线省钱省时。其二把接口当产品设计。标签即输入不只是技术选择更是一种产品化思维标签集合、描述、阈值、多决策头全部收敛为一个可读的 schematasklabelspromptmulti_label推理与训练共用同一套描述。社区里动态传标签、无需重训练适配业务变更的呼声正是这种接口设计带来的直接价值。国内做微调平台和模型服务的团队可以参考 SKILL.md 中展示的托管工作流——高质量训练数据准备标签对齐、防泄漏拆分、试点训练、检查点评估准确率、macro-F1、多标签 micro-F1、部署与烟雾测试——把schema 驱动的模型变成可自助服务的产品。其三基准先行让小 vs 大的对比在同口径下发生。fast-decisions 基准的严谨之处在于相同的文本、相同的候选标签、每个模型都跑一遍这才让 60.2% vs 56.4% 的对比有了公信力。国内开源社区不缺模型缺的是这种可复现、同口径的任务基准——有了它小模型干大事才能从口号变成可验证的事实。回到起点GLiNER2.5-Decide 的意义不在 340M 这个数字本身而在于它完整演示了一条小模型路线的闭环——用专用架构兜住性能、用标签即输入兜住灵活性、用无生成兜住成本。60M 的边缘 NER、340M 的决策分类、1B 的可微调版本共同构成了一个按任务和资源分层的家族矩阵。这套打法真正的可复制之处是它把如何让模型变小换成了如何让模型刚好够用——而后者才是工程上更稀缺的能力。【免费下载链接】GLiNER2.5-Decide项目地址: https://ai.gitcode.com/hf_mirrors/fastino/GLiNER2.5-Decide创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考