Sakhanda Wire
NVDA $230.86 +1.09% MSFT $512.80 -0.02% GOOGL $338.24 -1.70% META $725.93 +0.10% AMZN $248.23 -0.37%
← До новин

Nokia відкрила вихідний код AnyJev: шар без навчання, що перетворює будь-яку відкриту LLM на калібровану модель ухвалення рішень

Команда прикладних досліджень Nokia відкрила вихідний код AnyJev — бібліотеки Python, яка перетворює відкриту LLM на модель прийняття рішень. Навчання не потрібне. Вона призначена для поширеного виробничого завдання: вибору однієї відповіді з фіксованого набору замість написання речення.

Чи придатна вона для розгортання? Так, її можна встановити з PyPI, вона поширюється за ліцензією Apache-2.0 і має бекенди transformers та vLLM зі скорингом спільного префікса.

Що таке AnyJev?

AnyJev запозичує свій інтерфейс у Jev. Jev — це модель прийняття рішень System One, яку TypeSafe AI представила у вересні 2026 року (наш матеріал). Ви передаєте AnyJev типізоване запитання й отримуєте рішення з імовірністю, для якої можна задати порогове значення. Ця ймовірність зчитується з розподілу наступного токена моделі. Нічого не генерується, не аналізується й не навчається.

Бібліотека підтримує 3 типи запитань:

  • Запитання типу choice обирає один із K варіантів.
  • Запитання типу noul передбачає відповідь «так» або «ні».
  • Запитання типу score розміщує відповідь в одному з кількох упорядкованих діапазонів.

Проблема безпосереднього зчитування логітів

Багато відкритих проєктів уже обмежують наступний токен мітками варіантів і зчитують оцінки. Команда дослідників Nokia вказує на 2 недоліки такого спрощеного підходу. По-перше, відповідь може змінитися, якщо змінити порядок варіантів. По-друге, імовірності не відкалібровані.

У документі про рівні названо 2 причини:

  • Перша — апріорне зміщення: модель надає перевагу певним міткам, наприклад «Так» замість «Ні», незалежно від вхідних даних.
  • Друга — позиційне зміщення: модель надає перевагу певним позиціям у списку варіантів.

Як працює AnyJev: L0 і L1

Кожне рішення містить поле level.

L0 (без міток, увімкнено за замовчуванням) застосовує 2 виправлення:

  • Циклічні зсуви. Для запитання з K варіантами список показується в K циклічних перестановках, тож кожен варіант один раз опиняється на кожній позиції. Результати об’єднуються в логарифмічному просторі як геометричне середнє. Якщо позиційне зміщення є адитивним у просторі логітів, це усуває його точно.
  • Корекція апріорного зміщення. За замовчуванням AnyJev використовує пакетне калібрування. Вона підтримує поточне середнє передбачених розподілів на реальних вхідних даних і ділить на нього зі силою 0,75. Корекція починається після 8 елементів.

L0 потребує K попередніх заповнень для кожного рішення, пакетно оброблених зі спільним префіксом. Це приблизно 0,25 с на рішення за розміру пакета 32 на одному H100, при K = 20.

L1 (від 100 до 500 міток на запитання) додає масштабування температури поверх L0. Підібрані значення зберігаються як невеликий артефакт JSON. L1 змінює форму впевненості, але не змінює ранжування відповідей.

Результати бенчмарків

Для Qwen3-8B на BANKING77 (20 варіантів, 300 тестових елементів) показники виглядають так:

МетрикаНеоброблені логітиAnyJev L0AnyJev L1
Потрібні мітки00від 100 до 500
Частка змін при перевертанні варіантів0.2300.0730.077
Точність0.7470.8030.807
Помилка калібрування (ECE)0.2400.1840.095
Можна автоматично визначити за похибки 5%7.7%46.3%52.0%

Ще кілька результатів із репозиторію:

  • L0 зменшив кількість змін порядку в усіх 9 протестованих рядках моделей і завдань.
  • На наборі типізованих рішень Qwen3-32B із L1 досяг ECE 0.036 порівняно з опублікованим для Jev показником 0.144. За точністю все ще лідирує донавчена Laya.
  • Повна таблиця абляцій охоплює моделі Qwen, OLMo, Granite, Phi та Mistral.
  • Ву каже, що команда випробувала AnyJev на внутрішній задачі маршрутизації Nokia й отримала багатообіцяльні результати.

Як використовувати AnyJev

Копіювати кодСкопійованоВикористати інший браузер
# pip install "anyjev[hf]"
from anyjev import Decider, Question
from anyjev.backends.hf import HFBackend

d = Decider(HFBackend("Qwen/Qwen3-8B"))
route = Question.choice("Which team should handle this?",
                        ["billing", "technical", "sales", "other"], name="route")
r = d.decide({"conversation": [...]}, [route])
r["route"].distribution   # probabilities per option

Для обслуговування запустіть vLLM із кешуванням префіксів і підключіть до нього VLLMBackend.

Основні висновки

  • AnyJev перетворює відкриті LLM на типізовані моделі прийняття рішень у стилі Jev без навчання.
  • L0 використовує циклічні зсуви та пакетну апріорну корекцію для усунення позиційного зміщення й зміщення міток.
  • На Qwen3-8B BANKING77 частка змін порядку зменшується з 0.230 до 0.073.
  • Частка трафіку, рішення для якого можна автоматизувати за похибки 5%, зростає з 7.7% до 52.0% з L1.
  • Проєкт поширюється за ліцензією Apache-2.0 на PyPI і має бекенди для Hugging Face та vLLM.

Перегляньте репозиторій на GitHub. Уся подяка — досліднику цього проєкту. Також підписуйтеся на нас у Twitter і не забудьте приєднатися до нашого сабреддіту про машинне навчання зі 150+ тисячами учасників та підписатися на нашу розсилку. Стривайте! Ви є в Telegram? тепер ви також можете приєднатися до нас у Telegram.

Потрібно співпрацювати з нами для просування вашого репозиторію на GitHub, сторінки на Hugging Face, релізу продукту, вебінару тощо? Зв’яжіться з нами

Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.

Вперше опубліковано виданням MarkTechPost

Читати оригінал на MarkTechPost ↗

Текст і зображення належать MarkTechPost і наводяться тут із зазначенням авторства та посиланням на оригінальну публікацію.

← До новин

Ще новини

Усі останні новини