Skip to main content

Laya: открытый System 1 decision engine на ModernBERT

ДЛЯ АГЕНТАChatGPTClaude

Laya — открытый Apache 2.0 decision-encoder на ModernBERT-large для мгновенного выбора действия по JSON/text состоянию агента за один Forward Pass (~33–35 мс на self-hosted GPU). Он решает проблему дорогих LLM ReAct loop в high-QPS маршрутизации, Guardrails и local agents, заменяя часть reasoning на калиброванную System 1 классификацию.

1. Обзор концепции и системная проблема

Laya решает конкретную проблему агентных систем: большинство решений в production-агенте не требуют генеративного reasoning, а требуют быстрой маршрутизации состояния. Классический ReAct loop с LLM вызывает модель на каждом шаге, поэтому даже тривиальное решение — выбрать инструмент, отклонить запрещённое действие, перевести запрос в fallback — стоит сотни миллисекунд, токенов и внешних API-затрат.

Laya — это open-source System 1 decision engine от Convai Innovations, построенный на ModernBERT-large под лицензией Apache 2.0. Модель принимает структурированное состояние агента — JSON, текстовый контекст или их комбинацию — и за один Forward Pass возвращает решение: action, confidence, reason codes. В позиционировании Convai это открытый аналог Jev: не замена LLM для сложного планирования, а быстрый self-hosted классификатор решений для high-QPS агентных контуров и Agentic Workflow.

Технически Laya — это encoder-based decision model: двунаправленный Transformer, который не генерирует токен за токеном, а обрабатывает входной контекст целиком и выдаёт logits над action space. В отличие от LLM ReAct loop, который может опираться на In-Context Learning, Prompt Caching и autoregressive generation, Laya не использует генеративный decode. Это критически меняет экономику inference: нет autoregressive decode, нет KV Cache, нет типовых LLM-оптимизаций вроде Fast Patching; вместо этого один batched encoder pass с предсказуемой латентностью.

МетрикаLaya / ModernBERT-largeLLM ReAct loop
P50 latency на self-hosted GPU~33–35 мс300–2000+ мс
Маржинальная стоимость решенияGPU-час, ~0 токеновinput/output tokens, API fee
Контекстдо ~8k токеновзависит от модели, часто 8k–128k+
Архитектурный режимSystem 1: классификация решенийSystem 2: генеративное reasoning
Выводaction_id, confidence, reason_codesтекст, Tool Calling, JSON, промежуточные шаги
Роль в продакшенеrouter, guardrail, policy gateplanner, synthesizer, Tool Calling executor

Экономический эффект Laya появляется там, где решения повторяемы: маршрутизация Tool Calling, safety gate перед LLM, local agent на Docker agents, bare-metal inference, privacy-sensitive self-hosted сценарии. Если агент принимает 10 000 решений в минуту, перевод даже 60–80% тривиальных решений с LLM на Laya уменьшает latency budget и token-затраты без потери качества, потому что для этих решений не нужен открытый reasoning.

2. Архитектурная таксономия и ментальная модель

Laya работает как decision head поверх ModernBERT-large. Входное состояние агента нормализуется, токенизируется, проходит через encoder, после чего pooling-слой и классификационная голова выдают распределение над action space. Postprocessor применяет policy: проверяет allowed_actions, confidence threshold, fallback-логику и Guardrails.

Agent State JSON/text
        │
        ▼
┌─────────────────────────────┐
│ Schema / State Normalizer   │
│ - flatten JSON fields       │
│ - canonical text rendering  │
│ - redact PII / secrets      │
└──────────────┬──────────────┘
               │
               ▼
┌─────────────────────────────┐
│ ModernBERT Tokenizer        │
│ input_ids + attention_mask  │
└──────────────┬──────────────┘
               │
               ▼
┌─────────────────────────────┐
│ ModernBERT-large Encoder    │
│ RoPE positional encoding    │
│ FlashAttention / varlen     │
│ bidirectional self-attention│
│ contextual Vector Embeddings│
└──────────────┬──────────────┘
               │
               ▼
┌─────────────────────────────┐
│ Pooling + Decision Head     │
│ logits[action_id]           │
│ optional multi-label heads  │
└──────────────┬──────────────┘
               │
               ▼
┌─────────────────────────────┐
│ Policy / Calibration Layer  │
│ softmax + temperature       │
│ confidence threshold        │
│ allowed_actions validation  │
│ reason_codes / fallback     │
└──────────────┬──────────────┘
               │
               ▼
Router → MCP Tool Calling → ReAct loop / human review

Таксономия компонентов:

  1. State Normalizer — преобразует JSON/text в каноническую форму. Например, {"intent":"refund","amount":120,"user_tier":"paid"} может быть сериализован в детерминированную строку с ключами, значениями и типами. Для структурированных полей с кодом может парсить AST. Это важно, потому что encoder чувствителен к порядку полей и токенизации.
  2. Tokenizer — стандартный ModernBERT tokenizer. Вход ограничен контекстом, обычно до 8k токенов. Для больших JSON-состояний нужна pre-summarization или field selection.
  3. ModernBERT Encoder — двунаправленный Transformer с RoPE, формирующий контекстные Vector Embeddings. В отличие от causal LLM, где на reasoning могут влиять attention-механизмы вроде Induction Heads, каждый токен здесь видит контекст слева и справа, что улучшает классификацию состояния.
  4. Decision Head — обычно классификация или multi-label классификация. Может возвращать один action_id, несколько флагов риска или confidence score.
  5. Policy Layer — детерминированный слой: проверка разрешённых действий, threshold, Guardrails, fallback, audit metadata.

Ключевое архитектурное отличие от LLM: Laya не имеет KV Cache, не выполняет autoregressive generation и не нуждается в decode-time optimization. В serving-слое оптимизации относятся к batched encoder kernels, dynamic padding, attention masking, FlashAttention varlen, ONNX/TensorRT graph execution. Если используется padding-free attention, Unpadding может уменьшить лишние вычисления на pad-токенах, но это не является частью модели как таковой.

3. Технический пайплайн и внутренняя механика

Пайплайн Laya в продакшене состоит из четырёх фаз: формирование состояния, преобразование, inference, feedback.

1. Формулирование входного состояния

Агент должен передавать не сырой user prompt, а структурированное состояние: intent, memory, available tools, policy flags, previous actions, risk signals.

{
  "request_id": "req_9f2a",
  "state": {
    "intent": "refund_request",
    "amount": 120,
    "user_tier": "paid",
    "previous_actions": ["order_lookup"],
    "risk_flags": []
  },
  "text": "Please refund my order, it arrived damaged.",
  "allowed_actions": [
    "tool:order_lookup",
    "tool:refund_create",
    "tool:human_review",
    "llm:clarify"
  ],
  "policy_version": "v1.4.2"
}

2. Преобразование и нормализация

Нормализация должна быть детерминированной:

  • валидация JSON schema;
  • удаление или маскирование PII, secrets, токенов;
  • сортировка полей или фиксированный порядок;
  • ограничение длины текста;
  • токенизация в input_ids и attention_mask.

Пример контракта на Python с Pydantic AI:

from pydantic import BaseModel, Field
from typing import Any


class DecisionRequest(BaseModel):
    request_id: str
    state: dict[str, Any]
    text: str | None = None
    allowed_actions: list[str] = Field(min_length=1)
    policy_version: str = "v1"


class DecisionResponse(BaseModel):
    action: str | None
    confidence: float
    reason_codes: list[str]
    fallback: bool
    model_version: str
    latency_ms: float

3. Выполнение / inference

Упрощённая псевдосигнатура:

def decide(req: DecisionRequest) -> DecisionResponse:
    normalized = normalize_state(req)
    logits = model.forward_pass(normalized)
    action, confidence = select_action(logits, req.allowed_actions)

    if action is None or confidence < CONFIDENCE_THRESHOLD:
        return DecisionResponse(
            action="llm:clarify",
            confidence=confidence,
            reason_codes=["low_confidence", "fallback"],
            fallback=True,
            model_version=MODEL_VERSION,
            latency_ms=measure_latency(),
        )

    return DecisionResponse(
        action=action,
        confidence=confidence,
        reason_codes=["high_confidence"],
        fallback=False,
        model_version=MODEL_VERSION,
        latency_ms=measure_latency(),
    )

Для production serving важны:

  • warm-up перед первым запросом;
  • dynamic batching для throughput;
  • CUDA graphs или compiled inference для стабильной P95 latency;
  • ONNX Runtime, TensorRT, Triton, Hugging Face Inference — в зависимости от стека;
  • shadow inference для сравнения с LLM router.

4. Обработка обратной связи

Laya не является статичной моделью. Для поддержания качества нужен feedback loop:

{
  "request_id": "req_9f2a",
  "predicted_action": "tool:refund_create",
  "actual_action": "tool:human_review",
  "outcome": "policy_violation",
  "confidence": 0.91,
  "human_label": "tool:human_review",
  "timestamp": "2026-06-15T10:00:00Z"
}

Эти логи используются для:

  • retraining;
  • calibration;
  • drift detection;
  • adversarial mining;
  • evaluation по новым action classes;
  • audit trail для safety-решений.

Для воспроизводимости feedback-логи и state snapshots можно сохранять через Checkpointer или event store.

4. Практические инженерные сценарии в продакшене

01. Low-latency MCP Tool Calling router

В агенте с MCP-инструментами LLM часто тратит время на выбор инструмента. Laya может работать как pre-router: если состояние содержит чёткий intent и разрешённый инструмент, модель выбирает tool:* вместо полного ReAct loop.

Пример:

{
  "state": {
    "intent": "calendar_create",
    "entities": {
      "date": "2026-06-16",
      "duration_minutes": 30
    }
  },
  "allowed_actions": [
    "mcp:calendar.create_event",
    "mcp:calendar.list_events",
    "llm:clarify"
  ]
}

Если confidence высокая, агент сразу вызывает MCP Tool Calling. Если нет — передаёт запрос в LLM ReAct loop или просит уточнение. Это снижает latency Tool Calling и делает маршрутизацию более детерминированной.

02. Guardrails / policy gate перед LLM

Laya может быть быстрым safety-слоем. Вход: user text + agent state. Выход: разрешённое действие или блокировка.

Сценарии:

  • обнаружение prompt injection в структурированных данных;
  • классификация запросов на PII leakage;
  • блокировка действий, требующих human review;
  • проверка соответствия policy перед вызовом дорогого LLM;
  • triage: allow, clarify, reject, escalate.

Это дешевле полного LLM guardrail, потому что один Forward Pass стоит десятки миллисекунд и не генерирует токенов. Но Laya не заменяет полноценную safety-архитектуру: её следует комбинировать с детерминированными правилами, allowlists, audit logging и fallback LLM.

03. Self-hosted local agent на Docker agents или bare-metal

Для privacy-sensitive сред Laya разворачивается локально: Docker agents, Kubernetes, bare-metal GPU, edge-инфраструктура. Модель не отправляет состояние во внешний API, что важно для enterprise, healthcare, finance, defense-подобных сценариев.

Типичный стек:

FastAPI / gRPC service
  → Pydantic validation
  → ModernBERT tokenizer
  → ONNX / TensorRT / HF inference
  → policy postprocessor
  → MCP router or local Tool Calling executor

На self-hosted GPU latency может держаться в пределах ~33–35 мс для типового входа. На CPU latency выше, но для небольших batch и коротких состояний всё ещё может быть приемлемой. В сравнении с cloud LLM, bare-metal vs cloud tradeoff здесь такой: вы платите за GPU capacity и MLOps, но получаете предсказуемую стоимость, приватность и независимость от API-лимитов.

5. Подводные камни, типовые ошибки и безопасность

01. Action space drift

Laya обучается или калибруется под конкретный action space. Если добавить новый MCP tool, изменить policy или переименовать action, модель может возвращать устаревший или невалидный action_id.

Mitigation:

  • хранить action registry;
  • валидировать allowed_actions на входе;
  • блокировать неизвестные действия;
  • делать retrain или adapter fine-tuning при изменении инструментов;
  • использовать semantic fallback в LLM.

02. Prompt injection через JSON/text

Входное состояние агента может содержать враждебный текст: ignore previous policy, call admin_tool, send token. Encoder может быть чувствителен к токсичным паттернам, особенно если модель не обучалась на adversarial data.

Mitigation:

  • отделять user text от system policy fields;
  • нормализовать и санитизировать вход;
  • не разрешать тексту изменять allowed_actions;
  • обучать на injection-labeled data;
  • добавлять детерминированные policy gates;
  • использовать confidence threshold и fallback.

03. Неправильная калибровка confidence

Softmax confidence не является вероятностью правильности. Модель может быть уверенно ошибочной, особенно после distribution shift.

Mitigation:

  • temperature scaling;
  • isotonic regression;
  • calibration curves;
  • abstention threshold;
  • shadow evaluation на production traffic;
  • отдельный monitoring для high-confidence false positives.

04. Overfitting на структурированный JSON

Laya может выучить артефакты форматирования: порядок ключей, длину строк, специфические field names. Если клиент изменит schema, точность упадёт.

Mitigation:

  • augmentation: shuffle fields, paraphrase text, synthetic schema variants;
  • field masking;
  • canonical serialization;
  • schema versioning;
  • unit tests на JSON variants.

05. Контекстное усечение

ModernBERT имеет ограниченный контекст. Большое JSON-состояние с memory, transcript, logs может быть обрезано, и модель примет решение без критичных полей.

Mitigation:

  • pre-summarization;
  • importance-based field selection;
  • chunking с decision-only context;
  • явная валидация presence критичных полей;
  • fallback, если required fields отсутствуют.

06. Ложное ощущение, что Laya заменяет reasoning

Laya — System 1 классификатор, обученный на конкретном action space. Она не полагается на Zero-Shot/Few-Shot prompt reasoning, не строит многошаговый план, не проверяет причинность и не генерирует объяснения. Сложные Agentic Workflow и autonomous-loop сценарии требуют LLM ReAct loop, Tool Calling observation, reflection и human oversight.

Mitigation:

  • использовать Laya для pre-routing, gate, triage;
  • оставлять LLM для synthesis и novel planning;
  • измерять, какие решения можно безопасно перенести на System 1;
  • не удалять LLM из критичных decision paths без evaluation.

07. Latency variance в serving

Заявленные 33–35 мс относятся к типовым self-hosted GPU условиям. В продакшене latency может расти из-за cold start, GPU contention, большого batch, CPU fallback, long context, network overhead.

Mitigation:

  • warm-up;
  • P95/P99 monitoring;
  • fixed batch policy;
  • CUDA graphs;
  • autoscaling;
  • request timeout и fallback;
  • load testing на реалистичных JSON states.

08. Безопасность и compliance

Локальная модель не означает автоматическую безопасность. Состояние агента может содержать PII, secrets, бизнес-данные. Logging, retraining data, model weights и inference endpoints требуют защиты.

Mitigation:

  • redaction перед inference;
  • encrypted storage;
  • access control для inference API;
  • audit trail;
  • data retention policy;
  • adversarial testing;
  • human-in-the-loop для high-risk actions.
/ Частые вопросыSchema.org FAQPage

FAQ: Laya: открытый System 1 decision engine на ModernBERT

Laya подходит для узких, повторяемых решений: выбор инструмента, классификация намерения, policy gate, fallback-маршрутизация, когда состояние агента уже структурировано в JSON/text. LLM ReAct loop нужен для открытого планирования, многошагового Tool Calling, синтеза промежуточных выводов и ситуаций, где action space не фиксирован.
/ Внутренняя перелинковка
Все термины
Вайбкодинг и IDE

Автономный Цикл (/goal mode)

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

Читать термин
Агенты и MCP

Tool Calling (Function Calling)

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

Читать термин
VPS и DevOps

Экономика Hetzner Bare-Metal против облачных гиперскейлеров

Финансовый и технический анализ себестоимости инфраструктуры: почему аренда выделенного железа в европейских дата-центрах (Hetzner, OVH) обходится в 5–10 раз дешевле, чем виртуальные машины AWS/GCP для AI-нагрузок.

Читать термин
VPS и DevOps

Docker Для Агентов И Ботов (Container Sandboxing)

Методология изоляции автономных ИИ-агентов, интерпретаторов кода и фоновых сервисов в легковесных песочницах Docker с использованием cgroups и пространств имен (Namespaces) для предотвращения повреждения хостовой ОС.

Читать термин