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. Три примитива:
- choice: выбрать один вариант из словаря. Возвращает выбранный ключ, распределение вероятностей и калиброванный confidence score.
- score: поместить состояние на ординальную шкалу (уровни 0, 1, 2, ...). Возвращает ожидаемый уровень, распределение по рангам и confidence.
- 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 объявлений скрывают свои слабости. Здесь предпочитают инженерную честность:
- 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 иерархию. - 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 оракул.
- 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. Ресурсы и сообщество
- Hugging Face Model Hub: convaiinnovations/laya (содержит все 3 чекпойнта)
- Live interactive space: convaiinnovations/laya-demo (попробуйте 8 workflow'ов & мультиязычную маршрутизацию live на ZeroGPU)
- GitHub Repository: github.com/NandhaKishorM/laya (код, router, и воспроизводимые бенчмарк harnesses на
researchветке) - PyPI Package: pip install laya
- Kaggle 2xT4 fine-tuning notebook: laya_finetune_typed_decisions_2xT4_kaggle.ipynb (train вашу custom System 1 модель в ~4 часа на free Kaggle GPUs)
Заключение
От марта 2025 года arXiv paper до сегодня прошёл год исследований, но основная идея остаётся: не каждая AI задача требует авторегрессивного чат-бота.
Для high-volume классификации, guardrails, маршрутизации и triage, sub-35ms bidirectional модель решений, обученная на RLCD, обеспечивает в 7.8x быстрее чем proprietary аналоги, без галлюцинаций, global language routing и честные confidence scores, на которые действительно можно положиться в production коде.
И лучше всего: это 100% open-source для всего сообщества.