1. System 1 против System 2: переосмысление

Каждый современный AI-пайплайн страдает от одного узкого места: генеративные LLM используются для простых рефлекторных решений.

Когда приходит тикет поддержки, письмо в inbox или запрос к API, обычно нужны ответы на простые, структурированные вопросы:

  • В какой отдел маршрутизировать этот тикет?
  • Это фишинг, спам или легитимное письмо?
  • Попытка jailbreak или инъекция инструкций?
  • Какой уровень срочности (0–3)?
  • Нужна ли кодовая генерация или простой факт?

Вызов 8B, 70B или frontier LLM для этого — полная избыточность. Ждёшь 500–2000 мс, пока токены потекут, платишь за инференс, потом парсишь регексом или JSON. Хуже всего: LLM галлюцинируют и генерируют фальшивую уверенность. Когда LLM выводит "confidence: 0.95", это просто предсказание токенов, звучащих уверенно. Математической калибровки нет.

Нужна была модель, работающая как System 1 человеческого мозга: мгновенные рефлекторные решения с честными, калиброванными вероятностями, затрачивая лишь 30–35 миллисекунд на стандартном оборудовании.

2. Три примитива решений

Laya вычисляет типизированные вопросы к любому состоянию (текст, письмо, тикет, JSON) в одном forward pass. Три примитива:

  1. choice: выбрать один вариант из словаря. Возвращает выбранный ключ, распределение вероятностей и калиброванный confidence score.
  2. score: поместить состояние на ординальную шкалу (уровни 0, 1, 2, ...). Возвращает ожидаемый уровень, распределение по рангам и confidence.
  3. noul: прямой вопрос да/нет, возвращающий калиброванную вероятность P(true) от 0.0 до 1.0.

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

3. Три чекпойнта и архитектура Hub

Одна модель не может быть оптимальна для всех задач и языков. Выпущены три специализированных чекпойнта, консолидированные в единый репозиторий на Hugging Face:

Чекпойнт BackboneEncoder Параметры Контекст Основная сила
convaiinnovations/laya ModernBERT-large 421M 512 Классификация англ. текста, guardrails, email triage
convaiinnovations/laya-multilingual mmBERT-base (256k vocab) 322M 1024 (до 8k) 100+ языков, в 2.2x быстрее, cross-lingual NLI
convaiinnovations/laya-typed-decisions ModernBERT-large 421M 1024 Agent observability, customer service, invoice processing, security alerts (0.766 acc)

Избирательная загрузка подпапок

Вместо того чтобы заставлять пользователей управлять тремя репозиториями или скачивать 2.5 ГБ весов, основной репозиторий convaiinnovations/laya объединяет все три. Используя Hugging Face allow_patterns, SDK загружает только запрошенную подпапку:

# Загружает англ. модель (~808 МБ)
agent_en = laya.load("convaiinnovations/laya")

# Загружает ТОЛЬКО multilingual подпапку (~647 МБ), не весь 2.5 ГБ bundle
agent_ml = laya.load("convaiinnovations/laya", subfolder="multilingual")

4. Почему маршрутизация критична: multi-script реальность

Самое откровенное открытие из 51-языкового теста MASSIVE (20 вариантов, random baseline = 0.050): англ. модели ломаются вне латинского алфавита.

ModernBERT-large с 50k токенов англ. BPE просто уничтожает non-Latin алфавиты:

  • Кхмер: 0.000 точности при 0.952 средней уверенности. Ни одного правильного ответа из 100, при этом отчитываясь о ~95% confidence.
  • Армянский: 0.050 точности (точный случайный бросок) при 0.885 confidence.
  • Иврит: 0.060 точности при 0.964 confidence.
  • Бенгали: 0.080 точности при 0.945 confidence.
  • Хинди: 0.100 точности при 0.941 confidence.

Суть урока: confidence модели не предупреждает, когда она не может прочитать входной скрипт. На 51 языке англ. чекпойнт никогда не опускает среднюю confidence ниже 0.885, независимо от того, 82% ли точность или 0%.

Следовательно, confidence gating не защитит вас. Выбор модели должен быть сделан до forward pass.

Sub-millisecond Pure Python маршрутизация

Laya включает встроенный Router, анализирующий Unicode скрипты входящего текста по 22 алфавитам (Devanagari, CJK Han, Cyrillic, Arabic, Hebrew, Tamil, Thai и т.д.) и распределения Latin stopwords:

  • Стандартный англ. текст: 0.09 мс overhead detection.
  • Devanagari / Indic текст: 0.54 мс overhead detection.
  • Большие 200-row nested JSON документы: 0.73 мс overhead detection.

По сравнению с 33 мс forward pass, overhead маршрутизации negligible (<2%). И с Router(preload=True) все требуемые модели остаются resident в VRAM/RAM, полностью устраняя 7–10-секундный cold-swap penalty когда трафик чередуется между языками.

from laya import Router

# Preload checkpoints в память для instant sub-35ms routing
router = Router(preload=True)

# English -> автоматически routed на ModernBERT-large
res_en = router.predict({"body": "I was charged twice, please refund."}, questions)

# Hindi -> автоматически routed на mmBERT-base (100+ языков)
res_hi = router.predict({"body": "मुझसे दो बार शुल्क लिया गया, कृपया पैसे वापस करें।"}, questions)

# Explicit override когда вы уже знаете domain
res_spec = router.predict(state, questions, model="typed-decisions")

5. Лоб в лоб: Laya (с маршрутизацией) vs TypeSafe Jev

Laya тестировали напрямую против TypeSafe Jev на публичных датасетах и стандартных бенчмарках. Все цифры Laya — измеренные; цифры Jev опубликованы в независимых третьесторонних исследованиях (AbdelStark, nibzard) и TypeSafe AI.

Бенчмарк / Метрика TypeSafe Jev 1.13.0 Laya (Routed) Преимущество / Delta
typed-decisions (2,000 решений) 0.727 0.766 +3.9% (beats 0.735 teacher ceiling)
AG News (4 метки) 0.910 0.950 +4.0% выше точности
DAIR Emotion (6 меток) 0.480 (Brier 0.846) 0.595 +11.5% выше (Jev имел 16% zero prob)
Calibration Error (ECE) 0.246 0.081 в 3x лучше калибровка
Latency P50 (1 вопрос) 236–276 мс 32.8 мс в 7.8x быстрее
Latency P50 (10 вопросов batched) ~1,500 мс (serial) 72.3 мс (7.2 мс/q) в 20x быстрее на batched
Usable языков (> 3x random) Нет published benchmark 45 из 51 языков Global language coverage
Стоимость за 1M tokens $0.042 (metered API) $0.00 (self-hosted) 100% free Apache 2.0
Веса и код модели Closed proprietary API Open-source safetensors Air-gapped & on-premise capable

Реальные рабочие процессы приложений

На 9 оценённых enterprise workflow'ах Laya демонстрирует production-ready качество решений:

  • Email spam filtering (Enron): 0.993 точность, 0.993 F1, 0.013 ECE.
  • Phishing detection: 0.980 точность, 0.979 F1, 0.012 ECE.
  • LLM guardrails & jailbreaking (held-out ToxicChat): 0.755–0.762 точность. На 50% selective coverage точность достигает 0.931.
  • RAG passage relevance filtering: 0.657 точность в single forward pass.
  • Support ticket queue routing (10-way): 0.522 точность.

6. Честные ограничения: где Laya имеет потолок

Слишком много AI объявлений скрывают свои слабости. Здесь предпочитают инженерную честность:

  1. Choice вопросы деградируют с >20 вариантами: На stress test Banking77 (77 меток) Laya получила 0.425 против Jev's 0.870. Это архитектурное бюджетное ограничение: опции делят 192–256 токенов head_max_len бюджета, оставляя только ~3–4 токена на кандидата при 77 вариантах. Рекомендация: держать choice схемы под 20 вариантами или использовать двухступенчатую coarse-to-fine иерархию.
  2. Zero-shot vs. fine-tuning: Out-of-the-box базовые модели получают ~0.35 на typed-decisions бенчмарке (почти случайно). 0.766 score достигается fine-tuning'ом на train split бенчмарка. Рассматривайте Laya как быстрый foundation model для специализации, а не как всеведущий zero-shot оракул.
  3. Temperature calibration: базовые веса отправляются с raw temperature logits. Fitting одного скаляра temperature на вопрос типа через распределение вашего домена уменьшает expected calibration error с 0.466 до 0.081.

7. Quickstart: запуск Laya в 30 секунд

pip install laya>=0.3.3

Полный пример запуска multi-schema решений с автоматической языковой маршрутизацией:

import laya
from laya import Router

# Инициализировать router с preloading (избегает swap delay)
router = Router(preload=True)

# Определить complex state
ticket = {
    "ticket_id": "TCK-8821",
    "customer": "enterprise_user",
    "subject": "System downtime and billing dispute",
    "body": "Our production API has been failing since 6 AM. We lost critical transactions. We demand an immediate SLA refund."
}

# Определить несколько вопросов разных примитивов
questions = {
    "queue": {
        "type": "choice",
        "instructions": "Which engineering queue owns this ticket?",
        "criteria": {
            "infrastructure": "server outages, network downtime, database failures",
            "billing": "refunds, SLA credits, invoice disputes",
            "security": "breaches, vulnerability reports",
            "support": "general customer inquiries"
        }
    },
    "urgency": {
        "type": "score",
        "instructions": "How urgent is this ticket?",
        "criteria": ["low priority", "medium", "high priority", "critical blocker"]
    },
    "churn_risk": {
        "type": "noul",
        "instructions": "Does the customer threaten to cancel or express severe churn intent?"
    }
}

# Single forward pass: evaluates все вопросы одновременно
res = router.predict(ticket, questions)

print("Routing Decision :", res["routing"]["model"])
# -> english

print("Assigned Queue   :", res["answers"]["queue"]["choice"])
# -> infrastructure (confidence: 0.96)

print("Urgency Score    :", res["answers"]["urgency"]["score"])
# -> 2.87 / 3.0

print("Churn Risk       :", f"{res['answers']['churn_risk']['noul']:.1%}")
# -> 91.4%

8. Ресурсы и сообщество

Заключение

От марта 2025 года arXiv paper до сегодня прошёл год исследований, но основная идея остаётся: не каждая AI задача требует авторегрессивного чат-бота.

Для high-volume классификации, guardrails, маршрутизации и triage, sub-35ms bidirectional модель решений, обученная на RLCD, обеспечивает в 7.8x быстрее чем proprietary аналоги, без галлюцинаций, global language routing и честные confidence scores, на которые действительно можно положиться в production коде.

И лучше всего: это 100% open-source для всего сообщества.