Laya: 오픈소스 시스템 1 결정 엔진

Laya는 간단하고 구조화된 반사적 결정을 위해 생성형 LLM을 대체할 수 있도록 설계된 비자기적 결정 엔진입니다. 자동 생성 토큰 대신 양방향 인코더를 사용함으로써, 단일 GPU에서 약 32.8밀리초 내에 구조화된 스키마에 대한 보정된 확률 예측을 제공하여 생성형 대안보다 훨씬 빠르고 비용 효율적입니다.

AI 결정의 시스템 1 접근법

현대의 AI 파이프라인은 종종 대규모 생성형 LLM(시스템 2)을 사용하여 반사적 응답(시스템 1)만 필요로 하는 작업에 사용되며, 이로 인해 성능 저하가 발생합니다. 티켓 라우팅, 스팸 탐지, 절차 회피 식별과 같은 작업들은 텍스트 생성이 필요하지 않고 특정 레이블이나 확률만 필요합니다.

이러한 작업에 생성형 LLM을 사용하면 다음과 같은 비효율이 발생합니다:

  • 지연 시간: 토큰 스트리밍을 기다려야 하며(500ms ~ 2,000ms).
  • 비용: 8B 이상 파라미터 모델의 높은 추론 비용.
  • 신뢰성: 자유형 텍스트에서 레이블을 추출하기 위해 정규식 또는 JSON 파서가 필요.
  • 보정: LLM은 종종 수학적 근거 없이 확신도를 허구적으로 출력합니다(예: "확신도: 0.95" 출력).

Laya는 단일 순방향 전파를 통해 즉각적이고 보정된 확률을 제공함으로써, 허구나 잘못된 JSON 출력의 가능성을 완전히 제거합니다.

결정 원시형과 아키텍처

Laya는 텍스트, 이메일 또는 JSON 형태의 상태에 대해 타입이 지정된 질문을 평가하며, 세 가지 핵심 원시형을 사용합니다:

  1. Choice: 기준 사전에서 하나의 옵션을 선택하여 선택된 키, 확률 분포, 보정된 확신도를 반환합니다.
  2. Score: 상태를 순서 척도(예: 0에서 3)에 배치하여 기대 수준과 분포를 반환합니다.
  3. Noul: 보정된 확률 $P(\text{true})$를 0.0에서 1.0 사이로 반환하는 부울 질문입니다.

모델 체크포인트

Laya는 허깅페이스에 배포된 번들러 허브를 통해 제공되며, 세 가지 전문화된 체크포인트를 제공합니다:

체크포인트 백본 인코더 파라미터 수 컨텍스트 주요 강점
laya ModernBERT-large 421M 512 영어 분류, 가드레일, 이메일 우선순위 처리
laya-multilingual mmBERT-base 322M 1024 100개 이상의 언어, 다국어 NLI
laya-typed-decisions ModernBERT-large 421M 1024 에이전트 관찰 가능성, 송장 처리, 보안 경고

다국어 라우팅 및 스크립트 탐지

Laya 개발 과정에서 중요한 발견은 영어 중심 모델이 입력 스크립트를 읽을 수 없을 때도 높은 확신도를 보고한다는 점입니다(예: 크메르 텍스트에서 95% 확신을 보고 0% 정확도). 지원되지 않는 스크립트에 대해 확신 게이팅이 신뢰할 수 없기 때문에, Laya는 순수 파이썬 Router를 마이크로초 수준으로 구현했습니다.

이 라우터는 22개의 알파벳에 걸쳐 유니코드 스크립트를 검사하고 라틴어 정지어 분포를 분석하여 전방 전파 전에 트래픽을 적절한 모델로 라우팅합니다. 탐지 오버헤드는 무시할 수 있을 정도이며, 일반적으로 영어는 0.09ms, 대규모 JSON 문서는 0.73ms 정도 소요됩니다.

성능 비교: Laya vs. TypeSafe Jev

Laya는 TypeSafe Jev에 대한 오픈소스 대안으로 위치 지정됩니다. 벤치마크 결과는 속도와 비용 측면에서 상당한 우위를 보이지만, 제로샷 능력 측면에서는 일부 희생이 있습니다.

지표 TypeSafe Jev 1.13.0 Laya (라우팅됨) 차이
지연 시간 P50 (1개 질문) 236–276 ms 32.8 ms 7.8배 빠름
지연 시간 P50 (10개 질문 배치) ~1,500 ms 72.3 ms 20배 빠름
보정 오차 (ECE) 0.246 0.081 3배 더 나은 보정
100만 토큰당 비용 $0.042 $0.00 무료 (Apache 2.0)
가중치 및 코드 폐쇄 API 오픈소스 자체 호스팅 가능

엔지니어링 제한 사항 및 요구사항

Laya는 종합적인 제로샷 오라클이 아니라 전문화를 위한 기초 모델입니다. 사용자는 다음 제약 사항을 인지해야 합니다:

  • 피니튜닝 필요성: 기본 모델은 typed-decisions와 같은 특정 벤치마크에서 무작위 수준(~0.35)의 점수를 보일 수 있습니다. 높은 정확도(0.766)는 훈련 분할 데이터에 대한 피니튜닝을 통해 달성됩니다.
  • Choice 예산: 선택 스키마가 20개를 초과하면 헤드 길이의 토큰 예산 제약으로 인해 성능이 저하됩니다.
  • 컨텍스트 창: 체크포인트는 512–1024토큰으로 제한되며, Jev에서 보고된 32k 컨텍스트 창보다 훨씬 작습니다.
  • 온도 보정: 기대 보정 오차를 0.466에서 0.081로 줄이기 위해 각 질문 유형에 대해 도메인 분포에 맞는 스칼라 온도를 적합시켜야 합니다.

커뮤니티 인사이트 및 반론

기술 사용자 간의 논의는 "모델"과 "제품" 사이의 갈등을 드러냅니다. Laya는 가중치와 아키텍처를 제공하지만, 비평가들은 Jev의 가치가 제로샷 성능과 API를 통한 간편한 배포에 있다고 주장합니다.

"Jev의 성공의 핵심은 피니튜닝 없이도 작동한다는 점입니다... 임의의 분류 문제를 일주일이 아니라 분 단위로 해결할 수 있다는 것은 큰 의미입니다."

다른 사용자들은 Laya의 접근법이 "전통적인 머신러닝"으로의 회귀라고 지적하며, RLCD와 같은 업데이트된 학습 방법을 사용한 BERT 스타일 아키텍처를 활용하여 생성형 LLM보다 분류 작업을 더 효율적으로 해결한다고 언급했습니다.

빠른 시작 구현

Laya는 pip를 통해 설치할 수 있습니다(pip install laya>=0.3.3)하고, 다중 스키마 결정을 처리하기 위해 Router와 함께 사용할 수 있습니다:

from laya import Router

router = Router(preload=True)

questions = {
    "queue": {
        "type": "choice",
        "instructions": "이 티켓을 소유한 엔지니어링 큐는 무엇입니까?",
        "criteria": {
            "infrastructure": "서버 장애, 네트워크 다운타임",
            "billing": "환불, SLA 크레딧"
        }
    },
    "urgency": {
        "type": "score",
        "instructions": "이 티켓의 긴급도는 어떻게 되나요?",
        "criteria": ["낮음", "보통", "높음", "심각"]
    }
}

res = router.predict({"body": "API가 다운되었습니다!"}, questions)

Sources

관련