Команди з витягу інформації постійно балансують між низькою ціною та гнучкістю. Маленькі енкодери дешеві, але жорсткі. Великі мовні моделі універсальні, але дорогі на документ. Fastino випустила GLiNER2.5, щоб звузити цю прірву. Ключова зміна — перехід від перебору спанів до прогнозування меж. Це знімає ліміт довжини сутності, відкриває контекст до 4096 слів і зберігає лінійну складність для фіксованої схеми. Додатково з’являється спільне декодування сутностей і відношень, обмеження між задачами та атрибути спанів.
Що таке GLiNER2.5 і чому це важливо саме зараз?
GLiNER2.5 — це відповідь на звичну дилему витягу. Модель прагне поєднати гнучкість підходів на основі підказок із операційною економікою енкодерів. Вона змінює спосіб пошуку сутностей і розширює контекст без підвищення вартості за ширину спану.
Реліз переходить до прогнозування меж. Модель оцінює, де починається і де закінчується сутність, а не ранжує кожен кандидат проти сітки ширин. Такий зсув усуває максимальну довжину сутності та дає простір для довгих документів.
Fastino також додає можливості, які раніше вимагали окремих кроків. Тепер підтримано спільне декодування сутностей і відношень, обмеження між лейблами різних задач та атрибути для кожного спану. Це робить вихід більш структурованим за замовчуванням.
На нульових налаштуваннях багатомовний чекпойнт досягає 56.17 macro F1 проти 56.09 у GLiNER2. При цьому приріст на XNLI становить 24.75 пунктів. Три вагові набори доступні під Apache 2.0.
Як boundary prediction змінює гру під капотом?
Перехід від перебору спанів до прогнозування меж прибирає вісь ширини. Обчислення більше не залежать від фіксованого максимуму довжини сутності. Для фіксованої схеми це зберігає лінійну складність відносно довжини послідовності.
Спільний енкодер, як і раніше, обробляє текст та схему запитів за один прохід. Замість оцінювання кожного спану, модель прогнозує оцінки початку й кінця на межах токенів та внутрішні оцінки всередині токенів. Рідкісна стадія пропозицій добирає найкращі старти й фініші на запит і поєднує їх без обмеження на відстань.
Потім блок повторного ранжування оцінює кожного кандидата за свідченнями меж і вмістом спану. Кандидати відношень беруться з того самого пулу, а не з окремого конвеєра. Команда Fastino повідомляє, що за фіксованої схеми та бюджету кандидатів обчислення залишаються лінійними за довжиною послідовності.
Вилучення явних представлень спанів знижує пам’ять під час навчання. Це дозволяє працювати з послідовностями до 4096 слів. Чекпойнти постачаються з параметром max_len=4096.
Boundary prediction замінює перебір спанів; ширина сутності більше не коштує обчислень.
Чи можна розгорнути GLiNER2.5 вже сьогодні?
Так. Доступні три чекпойнти на Hugging Face під Apache 2.0. Локальний інференс працює на CPU, CUDA або MPS. Достатньо виконати pip install "gliner2[local]" у Python 3.10+ і завантажити модель.
Жоден хостинг інференсу поки не пропонує ці ваги. Отже, обраний шлях — самостійний хостинг. Це прозоро з погляду залежностей та середовищ. Ви контролюєте продуктивність і приватність.
Рівень компанії — будь-який. Чекпойнти на 74M і 194M запускаються на стандартних CPU-серверах. Дві людини зможуть відвантажити витяг без GPU-бюджету. Великі організації отримують настроювану, приватно розгорнуту альтернативу пер-токенному витягу через LLM.
Галузі застосування включають юридичні та контрактні операції, охорону здоров’я та клінічну документацію, фінансові сервіси, урегулювання страхових випадків, підтримку клієнтів і інструменти безпеки ШІ.
Які можливості ви отримуєте «з коробки»?
GLiNER2.5 приносить п’ять помітних можливостей. Довгий контекст до 4096 слів підтримується без додаткових трюків. Бібліотека додає рідні хелпери чанкування: extract_entities_long, extract_long, Classifier.classify_long, JointIE.extract_long. Вони відновлюють зміщення символів у вихідному документі.
Довжина спану більше не обмежена. GLiNER2 перебирав спани до фіксованої ширини, зазвичай близько дванадцяти слів. Довші ніколи не оцінювалися. У GLiNER2.5 спан може відкритися на першому токені й закритися на останньому. Сорокаслівний індемніфікаційний пункт коштує стільки ж, як і двослівне ім’я.
Спільне виділення сутностей і відношень тепер є стандартним. Ви оголошуєте типи сутностей, типізовані відношення та структурні правила, на кшталт unique_head=True чи no_self_loops(). Пошук за променем будує глобально узгоджений граф. Неприпустимі комбінації ніколи не потрапляють у вихід. Перед використанням графа перевіряйте result.feasible.
Класифікація з обмеженнями зшиває лейбли між задачами під час декодування. Правила C.implies і C.excludes гарантують узгоджені рішення. Fastino ілюструє проблему на Guardrail-моделі GLiGuard: без обмежень підказка може бути водночас «безпечна» і «ін’єкція підказки». Якщо не існує жодного валідного призначення, класифікатор підніме помилку.
Атрибути спанів додають нюанси без додаткових проходів. Групи атрибутів, як-от «sentiment», прив’язуються до конкретних типів сутностей через applies_to і декодуються спан-за-спаном у тому ж проході. Сутності повертаються кваліфікованими, а не плоскими.
Яка продуктивність і які моделі доступні?
Fastino звітує про нульові налаштування на 16 публічних датасетах. Порівняння ведеться з GLiNER2 за однакових розмірів. GLiNER2.5 Multi набирає 56.17 проти 56.09 у GLiNER2 Multi. GLiNER2.5 Base піднімається до 54.87 проти 53.34.
Найгучніший результат — XNLI: Multi підскакує до 62.30 з 37.55. Це приріст на 24.75 пунктів. Few-NERD для Base також покращується — до 55.14 з 47.22. Румунський RONEC, мова якого не була у тренуванні, покращується для обох варіантів.
Сімейство моделей охоплює три чекпойнти. gliner2.5-small-v1 має 74M параметрів і використовує DeBERTa-v3-xsmall для англійської. gliner2.5-base-v1 має 194M і базується на DeBERTa-v3-base, теж англійська. gliner2.5-multi-v1 має 287M і використовує mDeBERTa-v3-base для мультимовності.
Усі три поділяють однаковий публічний API. Завантажуйте через AutoExtractor, а не через застарілий завантажувач спанів GLiNER2. Команда також підкреслює один нюанс чанкування: спан зберігається лише тоді, коли обидві його межі потрапляють в один чанк.
Три чекпойнти під Apache 2.0: 74M, 194M, 287M — і всі запускаються на CPU.
Є й ще одна деталь із огляду. Загальна F1 зростає до 56.17 для Multi та 54.87 для Base. Водночас середній показник витягу для Multi трохи знижується. Це тверезе нагадування: архітектурні виграші не завжди рівномірні по всіх задачах.
На основі матеріалу Fastino.