
从 gliner_medium_news 到 2.5-multiGLiNER 三代架构进化每一步改了啥【免费下载链接】gliner2.5-multi-v1项目地址: https://ai.gitcode.com/hf_mirrors/fastino/gliner2.5-multi-v1命名实体识别NER领域在过去两年经历了一场静默的架构革命从每个任务训一个专用模型到一个轻量模型零样本抽任意实体再到一个模型同时抽实体、分文本、抽关系、建结构化记录。GLiNER 这条技术线正好完整走过了这三个阶段——从社区广泛使用的gliner_medium_news-v2.1到主打边缘部署的 60M 参数 bi-encoder 版本再到本仓库gliner2.5-multi-v1这样的多语言多任务合流模型。很多人只把 GLiNER 当作又一个 NER 工具却忽略了它三代架构之间本质性的取舍变化跨度表示从密集宽度网格到标签预计算再到稀疏边界配对。本文不堆概念而是沿着每一步改了啥这条线用论文数据与仓库真实配置把三代架构的动机、改动与代价拆开讲清楚。第一代uni-encoder 与 v2.1 的 18 基准 7.5%GLiNER 的核心思路原论文 arXiv 2311.08526非常直接把实体类型当作提示词拼进输入而不是当作固定标签表。输入被构造成[P] entities ([E] person [E] location) [SEP] 原文文本模型对文本中所有可能的跨度span与每个实体类型嵌入计算匹配分数分数超过阈值即判定为实体。这套被后来论文称为uni-encoder的方案最大的优势是零样本实体类型在推理时才以自然语言形式给出模型从没见过也能识别。gliner_medium_news-v2.1正是这一代的典型产物——在 GLiNER 原始架构上针对新闻长文本场景微调得到。社区公开评测中它最被反复引用的一组数字是在 18 个基准数据集上零样本准确度平均提升 7.5%。这 7.5% 从哪来拆开看有三层来源合成数据扩容GLiNER 系列的训练数据大量由 LLM 自动标注生成pseudo-labeling 合成文本v2.1 在此基础上补充了新闻领域的合成样本让模型在谁、何时、何地、何组织这类新闻高频实体上的覆盖更密集负样本工程v2.1 之后的训练管线显著强化了难负样本策略hard negatives模型学会了不像实体的跨度长什么样而不是盲目给高置信度长文本适应新闻正文动辄上千 tokenv2.1 针对长序列做了专门的截断与跨度窗口适配。但这一代的天花板也很明显跨度表示依赖固定宽度的网格模型要为每个可能的起点-终点对枚举候选宽度一旦超过训练时见过的最大值就无能为力同时文本和标签共享同一个编码器标签数量超过约 50 个时性能会明显衰减。第二代60M 边缘版与 bi-encoder 的路线选择如果说第一代解决的是能不能零样本第二代GLiNER v2解决的是能不能跑在边缘设备上。社区对其的总结相当直白6000 万参数、在 60 亿高质量 token 上训练、专为边缘设备优化。它做了两个关键路线选择其一架构上从 uni-encoder 切换到 bi-encoder。文本与标签不再拼进同一个编码器而是分别编码文本走一遍编码器标签嵌入可以预先计算并缓存。推理时一次文本前向 一组标签点积即可完成对所有候选标签的打分。这种解耦带来两个直接收益一是标签规模不再受编码窗口限制可以扩展到数百乃至上千个实体类型二是省掉了每个标签都要参与注意力计算的开销——官方宣称相对逐标签推理可实现约130 倍加速这基本是边缘场景从不可用到可用的分界线。其二数据策略上强调数据密度优于参数规模。60M 参数的模型敢打零样本靠的是 60 亿 token 的高质量、跨领域训练数据法律、金融、科学等而不是盲目堆参数。这也奠定了 GLiNER 家族后续所有版本的训练哲学用数据广度换参数深度用架构效率换算力。但 bi-encoder 也有代价文本与标签分家后跨度与标签之间的交互建模变浅对需要强上下文约束的细粒度实体如既可以是人名也可以是地名的专名消歧不如 uni-encoder 细腻。这为第三代架构的回归埋下了伏笔。第三代2.5-multi-v1 的多语言 多任务合流第二代解决了规模与速度但信息抽取的终极形态不是更快地抽实体而是一次前向抽完所有想要的结构。GLiNER2论文 arXiv 2507.18546正是这条合流路线的产物而本仓库的gliner2.5-multi-v1是这条路线上的多语言边界检查点boundary checkpoint。边界架构用稀疏配对替代宽度网格打开仓库的 config.json第一行就是答案architecture: boundary对应的实现类是BoundaryExtractor。与第一代枚举所有可能跨度的密集网格不同boundary 架构把任务拆成两步先分别预测起点候选和终点候选配置里start_top_k: 24、end_top_k: 24、candidate_budget: 192、ends_per_start: 12这些参数表明模型先各自选出 Top-K 的起点与终点 token再做稀疏的起点-终点配对而不是在[L, W]的密集宽度网格上打分配对分数决定跨度是否成立pool_size: 192与candidate_pool: shared说明候选跨度的池化是共享的配合use_inside_evidence: true、query_conditioned_inside_weight: true让跨度内部证据参与判定。这一改动的直接收益写在 README 的 Model details 里任何能塞进编码窗口的长度都可以表示max_len: 4096不再受训练时见过的最大跨度宽度限制同时因为只配对 Top-K 候选而非全枚举计算量不随文本长度平方级爆炸。README 特别警告GLiNER2.from_pretrained(...)是旧的 span 加载器will not dispatch this checkpoint——两种架构在推理层面已经彻底分家。多语言mDeBERTa-v3 打底多语言版选择了microsoft/mdeberta-v3-base作为编码器见 config.json 的model_name字段。从 encoder_config/config.json 可以看到它的底子12 层、hidden size 768、250,112 词表、512 的 max_position_embeddingsdtype 为 fp16。287M 总参数README 家族表换来的是跨语种的统一抽取能力模型卡片明确标注为 multilingualpipeline 为 token-classification 并覆盖 Text classification / Relation Extraction / Structured extraction 等 tag。多任务合流一个 schema一次前向第三代真正的合流体现在任务层面。README 中 GLiNER2.5 家族定位很清晰检查点参数量编码器语言定位gliner2.5-small-v174MDeBERTa-v3-xsmall英文快速 CPU 抽取/分类gliner2.5-base-v1194MDeBERTa-v3-base英文英文多任务默认gliner2.5-multi-v1287MmDeBERTa-v3-base多语言多语言多任务默认gliner2.5-multi-v1在 config.json 里明确开启了三个任务头enable_records: true、enable_relations: true、enable_count_head: truecount head 是结构化记录中预测实例数量 K的机制外加enable_abstention: true让模型有权对不确定的标签弃权。分类、记录、关系、跨度属性span attributes全部挂在同一个 boundary head 下通过 schema 接口组合schema ( model.create_schema() .entities({ person: Named people, organization: Companies or teams, product: Named products or services, }) .entity_attributes({ sentiment: AttributeGroup( [positive, negative, neutral], applies_to[person], qualify_labelsTrue, ) }) .classification(topic, [technology, business, sports, politics]) .relations([works_for, announced]) .structure(announcement, modenatural, anchorproduct) .field(company, dtypestr) .field(product, dtypestr, cardinalityrequired_one) )对Apple CEO Tim Cook unveiled the iPhone 15 Pro for $999.一次extract返回的不仅有person / organization / product三类实体还有文档级topic、每条person的独立sentiment、works_for/announced关系边、以及按实例对齐的announcement结构化记录。这在第一代是不可想象的——v2.1 时代这需要 NER 模型 分类模型 关系模型三套部署。值得注意的是多任务合流是有代价的GLiNER2 论文在 CrossNER 基准上整体 F1 为 0.590与专攻 NER 的 GLiNER-M0.615和 GPT-4o0.599相比略有下降但换来的是单模型覆盖 NER、分类、结构化抽取三类任务且 CPU 上 20 标签分类延迟仅 163ms对比 DeBERTa 逐标签推理 6758ms、GPT-4o 425ms。以少量 NER 精度换 2~3 个数量级的部署成本下降这是合流路线的核心交易。三代对比一张表看透演进逻辑维度第一代v2.1 / uni-encoder第二代v2 bi-encoder第三代2.5-multi / boundary跨度建模密集[L, W]宽度网格标签预计算 点积打分稀疏 start/end 配对任意跨度标签规模~50 个类型上限数百~上千类型通过 schema 组合无硬上限推理加速逐标签前向一次文本编码 缓存标签一次前向多任务联合任务范围仅 NERNER 部分分类NER 分类 记录 关系 属性语言单语为主多语 PII 等mDeBERTa-v3 多语合流代表证据18 基准 7.5%130× 加速、60 亿 tokenmax_len 4096、287M、schema 接口回看这三步进化的主线始终是同一个问题在模型够小、CPU 可跑的约束下如何把信息抽取的覆盖面做到最大。第一代用提示词换来了零样本第二代用标签解耦换来了规模与速度第三代用边界配对 多任务头换来了一次前向覆盖全部抽取需求。gliner2.5-multi-v1正是这条演进线的当前终点架构上是最新的 boundary extractor语言上是多语任务上是 NER/分类/记录/关系/属性五合一——它不是又一个 NER 模型而是把整个信息抽取管线压缩进了单个 287M 参数检查点里的一次前向。【免费下载链接】gliner2.5-multi-v1项目地址: https://ai.gitcode.com/hf_mirrors/fastino/gliner2.5-multi-v1创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考