Эта статья является адаптацией моей статьи, опубликованной в Towards AIIntroБольшие языковые модели показывают впечатляющую обобщающую способность, причём не тоЭта статья является адаптацией моей статьи, опубликованной в Towards AIIntroБольшие языковые модели показывают впечатляющую обобщающую способность, причём не то

Тихая эволюция zero-shot энкодеров. От UniNER до GLiNER 2

2026/03/13 23:17
8м. чтение
Для обратной связи или замечаний по поводу данного контента, свяжитесь с нами по адресу [email protected]

Intro

Большие языковые модели показывают впечатляющую обобщающую способность, причём не только в задачах генерации текста вроде QA-ассистентов, но и в классификации, распознавании именованных сущностей (Named Entity Recognition) и других NLP-задачах.

С одной стороны, мы на старте эпохи AI агентов, где приложения с тулами управляются
LLM, помогая решать сложные задачи. С другой — слож ные задачи со сложными решениями и прожорливыми LLM требуют железа уровня дата-центра или vendor lock-in-а с зависимостью от внешних API .
Оба варианта дорогие, а есть задачи вроде классификации текста, извлечения информации (тот же NER), где нам не нужен предвзятый и галлюцинирующий алгоритм, а нужна заточенная, детерминированная на выходе модель, обученная под задачу с возможностью zero-shot.

В этой статье мы разберём эволюцию, которую вы возможно пропустили, полагаясь на LLM-ки в таких простых задачах. Эта эволюция multitask-энкодеров называется GLiNER. Начав с open-domain zero-shot NER, последняя архитектура умеет решать кучу задач, фокусируясь на извлечении информации и классификации текста. Киллер-фича в том, что бэкбоны у GLiNER в основном на базе энкодеров: bert, deberta, modernbert. Вам не нужно больше решать multitask через медленные LLM-ки и думать про инфраструктуру в контексте трейдоффов пропускной способности и качества, никакого KV-кэша, никакого Time to first token и Token Generation Time. Это просто один forward через модель.

GLiNER даёт простое, но красивое инженерное решение, включая все трейдоффы между скоростью, качеством и генерализацией.

Теперь каждый может просто написать:

from gliner2 import GLiNER2 extractor = GLiNER2.from_pretrained("your-model-name") schema = (extractor.create_schema() .entities({ "person": "Names of people mentioned", "date": "Dates and time references" }) .structure("appointment") .field("patient", dtype="str") .field("doctor", dtype="str") .field("date") .field("time") .field("type", dtype="str", choices=["checkup", "followup", "consultation"]) ) text = """ Dr. Sarah Johnson confirmed the appointment with John Smith for March 15th at 2:30 PM. This will be a follow-up consultation regarding his previous visit on February 1st. """ results = extractor.extract(text, schema)

и решить 1, 2 или больше задач за один форвард

Так что давайте разберёмся и поймём историю за этим кодом, а я проведу вас через неё.

Universal NER

В 2023, до релиза GLiNER, Zhou et al. показали Universal NER — Open Domain NER, дистиллированный из ChatGPT и построенный поверх обучения других LLM: Vicuna 7B и 13B, превосходящий ChatGPT в большинстве случаев. Я не планирую фокусироваться на этой модели с точки зрения подробностей ее обучения или сбора датасетов, моя цель - собрать основные инсайты.

Основные инсайты

Knowledge Distillation

UniNER использует ChatGPT для разметки текстов следующим промптом:

Позже тот же промпт будет использован в статье GLiNER как отсылка к этой работе и подтверждение эффективности.

UniNER по факту использует hard label distillation, тот же подход использовался относительно недавно (целый год назад!? D) в работе DeepSeek. (Думаю, вы все слышали эту историю)

В итоге UniNER показывает следующие результаты:

7863b25b55c39520d15c9ed35974a38a.png

В общем:

Single vs Multi label

UniNER оценил 3 сценария с 3 разными моделями:

  • type — только одна сущность за форвард (например "PERSON")

  • all in one — несколько сущностей за один форвард (например "PERSON", "LOCATION", "ORGANIZATION")

  • definition — только описания, сгенерированные ChatGPT для сущностей

f94d3f6711a12356f310fc7c2b06cda7.png

Как видите, модель с одним лейблом на forward pass превосходит остальные в большинстве случаев. Запоминаем этот трейдофф:

Всё ещё авторегрессия

Хотя авторы UniNER написали и выложили пару моделей, они всё ещё не просто отвечают найденными сущностями в тексте. Они генерируют это на инференсе, так что мы по-прежнему застреваем не только с форвардом, а с целым декодинг-пайплайном текстовой генерации. Надо разбираться с KV-кэшем и прочими проблемами генерации текста. И тут вместо инсайта я задам вопрос:

И именно на этот вопрос отвечает следующая статья.

GLiNER

GLiNER: Generalist Model for Named Entity Recognition using Bidirectional Transformer. by Urchade Zaratiana et. all

Intro

Статья начинается со следующих проблем:

  1. Традиционные NER-модели ограничены заранее определённым набором сущностей. Новые сущности требуют новой разметки.

  2. Большие языковые модели (начиная со статьи "Large Language Models are Few-shot learners") показывают высокую обощающую способность со сравнимой точностью. При этом они состоят из миллиардов параметров и стоимость инференса или API высока.

GLiNER предлагает маленькую двунаправленную языковую модель (bert-like), где типы сущностей мэтчатся с текстовыми спанами в латентном пространстве. Это не просто bert for token classification, как из transformers. Это Span Categorizer, который работает не с токенами, а со спанами (текстовыми последовательностями — кусками всего входного предложения). Кстати если вам интересна тема NER с точки зрения токенов и спанов возможно вам зайдет эта статья.

Как это работает

460e40bb7131233f6a62bf0f7bf54bae.png

В модель подаются:

  1. Входной текст

  2. Типы сущностей как список лейблов

Оба подаются через BERT-модель, и из его выхода мы получаем представления в пространстве эмбеддингов. Эти представления разделены (обучены быть разделёнными) внутри сети:

  • сущности: через FFN-слой

  • оригинальное предложение разбивается на спаны окном до 12 токенов внутри спана

Финально GLiNER мэтчит представления спанов с заданными сущностями:

69a708691f394fb51bd2bee1cf6423ec.png

span (i,j) означает часть предложения, например: span (0,2) = "John Smith"

И как видите, мы можем использовать эти phi как вероятность, и вот как это выглядит во время инференса:

from gliner import GLiNER model = GLiNER.from_pretrained("urchade/gliner_multi-v2.1") text = """ Cristiano Ronaldo dos Santos Aveiro (Portuguese pronunciation: [kɾiʃˈtjɐnu ʁɔˈnaldu]; born 5 February 1985) ... """ labels = ["person", "award", "date", "competitions", "teams"] entities = model.predict_entities(text, labels) print(entities) # {'start': 1, # 'end': 36, # 'text': 'Cristiano Ronaldo dos Santos Aveiro', # 'label': 'person', # 'score': 0.9164333343505859}, # {'start': 92, # 'end': 107, # 'text': '5 February 1985', # 'label': 'date', # 'score': 0.9581286311149597}, # 'score': 0.9164333343505859},

Вот это и есть phi из формулы выше.

Основные инсайты

Дистилляция знаний

Как и в UniNER:

7467732e9052f3756868d075836f5b51.png

Это не просто работает в плане получения разметки. А работает всё ещё в плане получения SOTA результатов с моделью всего на 459M параметров с бэкбоном deberta-v3:

b0129132127610bd81296fc4a378b574.png

Insight #3: Insight #1 про hard label distillation по-прежнему работает с энкодерами

Backbones

Оригинальная статья GLiNER протестировала различные существующие на то время бэкбоны:

67979f7db8b08f26d1dbefd3f2710896.png

Как видим, Deberta-бэкбон лучший на момент выхода статьи. И эмпирически до сих пор лучший (или один из лучших) для всех моделей на gliner-like архитектуре.

Мэтчим спаны, а не генерим текст

Как мы знаем из части Как это работает — GLiNER просто делает мэтч спанов между текстом и списком лейблов. Вот и решение проблемы LLM: GLiNER просто сделал задачу генерации текста ненужной для open-domain NER, превосходя предыдущие SOTA модели с меньшим количеством параметров.

Зоопарк моделей

Архитектура GLiNER оказалась чем-то большим, чем просто NER-решение. Основная идея — мэтч текстовых спанов с эмбеддингами лейблов в латентном пространстве — была достаточно простой для адаптации к другим NLP-задачам. Комьюнити подхватило это быстро.

GliREL применил тот же подход к relation extraction. GLinker расширил до entity linking. GliClass адаптировал мэтч спанов для классификации текста, работая с полным текстом и списком лейблов. Каждая из этих работ по сути задавала один и тот же вопрос: «а что если заменить task‑specific голову, но оставить энкодерный бэкбон и идею zero‑shot мэтчинга?»

И это прекрасно работало.

Но это создало новую проблему: зоопарк single task моделей, каждая со своим инференс-пайплайном, своим рецептом файн-тюнинга, своим деплой-сетапом. Нужен GLiNER для NER, GliClass для классификации, GliREL для relation. Три модели, три форвард-пасса, три архитектуры которые надо поддерживать.

Именно эту проблему решает GLiNER 2.

GLiNER 2

GLiNER2: An Efficient Multi-Task Information Extraction System with Schema-Driven Interface, by Urchade Zaratiana et. all

GLiNER 2 — это не новая архитектура. Это унификация.

Zaratiana et al. взяли всё, что выросло из экосистемы GLiNER — NER, классификацию , также другие Information Extraction подходы - и объединили в единый фреймворк с одним форвардом. Зоопарк моделей становится одной моделью со schema-driven интерфейсом, который вы уже видели в начале статьи.

При этом бэкбон deberta-v3 по-прежнему остался, учитывая что ModernBERT уже вышел и ощущается быстрее. Одна из возможных причин, почему авторы остаются с deberta — Disentangled Attention, предложенный Pengcheng He et. all. Который даёт более сопоставимые результаты на задачах мэтчинга спанов и текста, особенно в NER-задачах.

Что изменилось

Много задач за один форвард Вместо запуска отдельных моделей для каждой задачи, GLiNER 2 обрабатывает их одновременно. Определяете схему, подаёте с текстом, получаете структурированный вывод.

Расширенный контекст. Авторы увеличили длину контекста, позволяя обрабатывать больше текста и лейблов за один инференс — это важно когда вы решаете много задач за один проход на длинных документах.

Описания лейблов. Как вариант definition в UniNER, GLiNER 2 поддерживает развёрнутые описания лейблов, улучшая точность на неоднозначных или domain-specific типах лейблов.

98efd2464637f9dafc3e4495425d1d7e.png

Tradeoffs

Объединение задач в одну модель вносит свои трейдоффы:

4f4ba0adb9714c981484499f060c4e95.png

Gliner 2 — превосходит GliClass и deberta-v3, но проигрывает GPT-4o, в отличие от оригинального GLiNER.

В zero-shot NER качество тоже снизилось:

53dab18fc0dd18e194fd63e866d21d3d.png

Помните один из инсайтов UniNER?

Инсайт #2: Больше лейблов и обобщаемости ≈ ниже точность

Мы вернулись к этому, но уже для GLiNER 2:

Инсайт #5: Унификация на множестве задач стоит точности в отдельных задачах. Качество NER у GLiNER 2 ниже чем у GLiNER 1, классификация неплохая, но не бьёт GPT-4o.

9c8f1b755e8e43e74369d5859c289401.png

Скорость по сравнению с deberta-v3 и GPT-4o значительно лучше и деградирует медленнее, но деградирует, да.

GLiNER 2 заточен под деплой на CPU, но по факту, как мы знаем, для высоконагруженного инференса вам всё равно нужны видеокарты от Nvidia.

На этом конец, мы начали с LLM по типу ChatGPT, которые хорошо обобщаются на новые задачи, а закончили с энкодером в 205M параметров, делающим ту же работу не лучше, но сопоставимо по качеству, принимая это как инженерный трейдофф.

Ключевые выводы

Insight #1: Использовать SOTA LLM (типа ChatGPT) как разметчика и учиться на hard лейблах достаточно не только чтобы приблизиться к учителю, но и превзойти его.

Insight #2: Больше лейблов и обобщаемости ≈ ниже точность

Insight #3: Insight #1 про hard label distillation работает и с энкодерами

Insight #4: 459M GLiNER > UniNER 7B > ChatGPT (~100B+) превосходит SOTA, декодер с авторегрессией не нужен.

Insight #5: Унификация на множестве задач стоит точности в отдельных задачах. Качество NER у GLiNER 2 ниже чем у GLiNER 1, классификация неплохая, но не бьёт GPT-4o. (Привет, Инсайт 2)

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу [email protected] для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Вам также может быть интересно

Возможность покупки Cardano поколения появляется на фоне всплеска ончейн активности

Возможность покупки Cardano поколения появляется на фоне всплеска ончейн активности

Продолжающаяся волатильность рынка постоянно препятствует ценовому движению Cardano (ADA), удерживая его ниже отметки $0,3. Несмотря на нисходящее ценовое движение,
Поделиться
Bitcoinist2026/03/14 03:00
Circle обгоняет BlackRock в токенизированных казначейских облигациях, поскольку рынок достигает рекордных $11 млрд

Circle обгоняет BlackRock в токенизированных казначейских облигациях, поскольку рынок достигает рекордных $11 млрд

 
  Рынки
 
 
  Поделиться 
  
   Поделиться этой статьей
   
    Скопировать ссылкуX (Twitter)LinkedInFacebookEmail
   
  
 


 
  Circle обгоняет BlackRock по токенизированным Trea
Поделиться
Coindesk2026/03/14 03:41
Новости криптовалют март 2026: DeepSnitch AI преодолевает отметку в $2M с прицелом на 1000x к мартовскому запуску, в то время как BlackRock запускает стейкинговый Ethereum ETF, а FATF усиливает давление

Новости криптовалют март 2026: DeepSnitch AI преодолевает отметку в $2M с прицелом на 1000x к мартовскому запуску, в то время как BlackRock запускает стейкинговый Ethereum ETF, а FATF усиливает давление

По состоянию на начало марта BlackRock представил свой iShares Staked Ethereum Trust ETF на Nasdaq — тип продукта, который практически не существовал в США год назад. В
Поделиться
Blockonomi2026/03/14 03:00