Fastino пуска GLiNER2.5: архитектура за прогнозиране на граници, която премахва изброяването на спанове при извличане на информация
Екипите за извличане на информация са изправени пред повтарящ се избор. Малките енкодерни модели са евтини, но негъвкави, а големите езикови модели са гъвкави, но скъпи за всеки документ. Fastino пусна GLiNER2.5, за да намали тази разлика. Новата версия заменя изброяването на спанове с предсказване на граници: моделът оценява къде започва и завършва дадена единица, вместо да оценява всеки кандидат-спан спрямо мрежа от ширини. Тази единствена промяна премахва максималната ширина на единиците, позволява контекст от 4 096 думи и запазва изчисленията линейни спрямо дължината на последователността при фиксирана схема. Тя също така отключва съвместно декодиране на единици и релации, ограничения между етикетите на различни задачи и атрибути за отделните спанове. В 16 бенчмарка за обучение без примери многоезичният чекпойнт достига общ macro F1 от 56.17 спрямо 56.09 за GLiNER2, с ръст от 24.75 пункта при XNLI. Три чекпойнта са налични в Hugging Face по лиценз Apache 2.0, с 74M, 194M и 287M параметъра.
Може ли да бъде внедрен?
Да, Fastino пусна три чекпойнта GLiNER2.5 в Hugging Face по лиценз Apache 2.0, с локално извеждане на CPU, CUDA или MPS чрез pip install "gliner2[local]" (Python 3.10+). В момента нито един доставчик на услуги за извеждане не хоства чекпойнтите, така че самостоятелният хостинг е пътят за внедряване.
- Ниво на компанията: всякакъв мащаб. Чекпойнтите със 74M и 194M параметъра работят на стандартни CPU машини, така че екип от двама души може да внедри извличане без бюджет за GPU. По-големите организации получават алтернатива за фино настройване и частен хостинг на извличането от LLM, таксувано на токен.
- Индустрии: правни и договорни операции, здравеопазване и клинична документация, финансови услуги, застрахователни искове, клиентска поддръжка и инструменти за безопасност на ИИ.
- Приложения: откриване и редактиране на лични данни, извличане на клаузи от договори, графи на знания за паметта на агенти, маршрутизиране на агенти и модели, класификация за защитни механизми, извличане на клинични единици с атрибути за отрицание и дозировка.
Какво се промени
По-ранните модели GLiNER локализираха единици чрез изброяване на кандидат-спанове: всяка начална позиция се съчетаваше с всяка разрешена ширина, като всяка комбинация се оценяваше спрямо схемата. Този дизайн обвързваше изчисленията с измерение на ширината и налагаше твърд таван върху дължината на единиците.
GLiNER2.5 премахва изброяването. Споделеният енкодер продължава да обработва текста и заявките към схемата в един проход. Вместо да оценява спанове, моделът предсказва оценки за началото и края по границите между токените, както и оценки за вътрешността върху токените. Разреден етап за предложения избира най-обещаващите начала и краища за всяка заявка и ги съчетава без ограничение на разстоянието. След това глава за преранжиране оценява всеки кандидат, използвайки данни за границите и съдържанието на спана. Кандидатите за релации се извличат от същия набор, а не по отделен път.
Екипът на Fastino съобщава, че изчисленията остават линейни спрямо дължината на последователността при фиксирана схема и бюджет за кандидатите.
Пет възможности, които следват
- Извличане в дълъг контекст: Премахването на явните представяния на спанове намали използваната памет достатъчно, за да позволи обучение върху последователности до 4 096 думи. Чекпойнтите се доставят с
max_len=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 GLiGuard илюстрира проблема, който се решава: без ограничения дадена подкана може да бъде обозначена като безопасна и едновременно с това да бъде маркирана за инжектиране на подкана. Ако не съществува валидно присвояване, класификаторът генерира грешка. - Атрибути на спановете: Групи атрибути като настроението се прикрепят към конкретни типове единици чрез
applies_toи се декодират за всеки спан в същия проход напред. Единиците се връщат с квалификатори, а не като плосък списък.
Семейството от модели
| Модел | Параметри | Енкодер | Език |
|---|---|---|---|
| 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.
Бенчмаркове
Екипът на Fastino оценява моделите без обучение върху 16 публични набора от данни, като отчита macro F1 спрямо 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, език, върху който моделът не е обучаван, се подобрява и при двата модела.
Основни изводи
- Предсказването на граници заменя изброяването на спанове; ширината на единицата вече не изисква допълнителни изчисления.
- Три чекпойнта по лиценз Apache 2.0: 74M, 194M и 287M, всички работещи на CPU.
- Съвместното декодиране връща графи, валидни спрямо схемата, и премахва слоевете за последваща валидация.
- Общият F1 се повишава до 56.17 (Multi) и 54.87 (Base); средната стойност при извличане спада за Multi.
- Разделянето на части запазва спан само когато и двете му граници попадат в една и съща част.
Разгледайте техническия блог на Fastino, GitHub хранилището и документацията за архитектурата на границите. Не се колебайте да разгледате нашата GitHub страница с уроци, код и ноутбуци.
Също така не се колебайте да ни последвате в Twitter и не забравяйте да се присъедините към нашия 150k+ ML SubReddit и да се абонирате за нашия бюлетин. Чакайте! В Telegram ли сте? Сега можете да се присъедините към нас и в Telegram.
Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.