NandhaKishorM/laya
Non-autoregressive System 1 decision engine. Typed choice, score and yes/no decisions over any text in a single forward pass, in 100+ languages, with a router that picks the right checkpoint per request.
Laya – 빠르고 다국어, 비자기 회귀형 결정 엔진
무엇인가요 – Laya는 Python 라이브러리(또한 동일한 TypeScript 패키지와 호환)로, 텍스트, JSON, 이메일, 티켓 등 어떤 데이터에 대해서도 형식화된 질문을 가능하게 합니다. 자유 형식의 텍스트를 생성하는 대신, 다음과 같은 구조화된 결정을 반환합니다:
- choice – 목록에서 하나의 레이블을 선택 (예: 어떤 부서가 요청을 처리해야 하는가)
- score – 숫자 평가를 제공 (예: 0–100 스케일의 긴급도)
- noul – 이진 yes/no 질문 (예: 사용자가 환불을 명시적으로 요청했는가?)
이 모든 작업은 BERT 스타일 인코더의 단일 순전파로 이루어지며, NVIDIA T4 GPU에서 단일 질문에 약 33ms(배치 처리 시 7ms)가 소요됩니다. 모델은 텍스트를 생성하지 않기 때문에 환각이 발생하지 않으며, 출력은 후속 자동화에 직접 사용 가능합니다.
핵심 아이디어
| 기능 | 왜 중요한가 |
|---|---|
| 비자기 회귀형 | 토큰 단위 생성 없음 → 결정적이고 즉시 파싱 가능한 답변. |
| 형식화된 결정 | choice/score/noul과 같은 구조화된 출력은 라우팅, 티켓 분류, 가드레일, 분석 파이프라인과 잘 맞습니다. |
| 다국어 (100+ 언어) | 하나의 요청은 어떤 언어로든 가능하며, Laya는 자동으로 최적의 체크포인트로 라우팅합니다. |
| 라우터 | 스크립트/언어를 자동 감지하고, 3개의 체크포인트(영어, 다국어, 또는 더 큰 '형식화된 결정' 모델) 중 하나를 선택하며 추가 지연 없이 처리됩니다. |
| 라우팅된 배치 | 비슷하지 않은 요청을 체크포인트와 질문 스키마별로 그룹화하여, 순서를 유지하면서 여러 항목을 동시에 스코어링합니다. |
| ONNX 및 torch.compile 지원 | CPU, GPU, Apple Silicon, Intel XPU에서 선택적 고속 경로를 제공합니다. |
| 예측 후크 | 결과를 감사, 마스킹, 캐시, 또는 게이트 제어할 수 있는 플러그인 포인트. 컴플라이언스 또는 사용자 정의 가드레일에 유용합니다. |
| 자체 호스팅 HTTP 서버 | Jev 호환 API (/predict, /predict/batch)와 간단한 웹 GUI를 제공하여 빠른 테스트가 가능합니다. |
| LangChain / LangGraph 통합 | LLM 기반 워크플로우에 즉시 통합 가능한 에이전트. |
| Docker 및 ARM64 빌드 | 클라우드 또는 엣지 하드웨어에서 컨테이너로 쉽게 실행 가능합니다. |
작동 방식 (개요)
- 라우터 생성 –
router = Router(preload=True)로 3개의 체크포인트를 로드(또는 처음 사용 시 지연 로드). 라우터에는 별도 프로세스에서 실행되는 가벼운 언어 감지 모듈이 포함되어 있어,laya를 임포트해도 즉시 PyTorch를 로드하지 않습니다. - 질문 세트 정의 – JSON 호환 사전으로, 각 키는 질문 이름이고, 각 값은 다음과 같이 지정:
type:choice,score, 또는noulinstructions: 모델용 자연어 프롬프트criteria: 레이블 → 설명의 매핑(choice용) 또는 레이블의 순서 목록(score용).
- 예측 실행 –
router.predict(state, questions)는 적절한 체크포인트를 단일 순전파로 실행하고, 다음을 반환:answers– 각 질문에 대한 모델의 결정과 신뢰도 점수.routing– 사용된 체크포인트와 그 이유(스크립트, 언어, 포알백 등).
- 배치 처리 –
router.predict_batch(requests)는 호환 가능한 요청을 자동으로 그룹화하여, 10개의 다국어 티켓의 배치도 몇 번의 순전파만으로 처리 가능합니다.
빠른 시작 (Python)
from laya import Router
router = Router(preload=True) # 모든 체크포인트를 로드하여 35ms 미만의 라우팅 가능
state = {
"from": "user@example.com",
"subject": "Duplicate charge",
"body": "We were billed twice for March. Please refund it today."
}
questions = {
"department": {
"type": "choice",
"instructions": "Which department should handle this request?",
"criteria": {
"billing": "invoices, payments, refunds",
"technical": "bugs, outages",
"sales": "pricing, contracts",
"other": "everything else"
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is this?",
"criteria": ["not urgent", "soon", "critical"]
},
"refund_requested": {"type": "noul", "instructions": "Does the user explicitly request a refund?"}
}
result = router.predict(state, questions)
print(result["answers"]["department"]["choice"]) # → billing (confidence 0.94)
print(result["routing"])
동일한 코드는 힌디어, 아랍어 또는 다른 모든 언어에서도 작동하며, 라우터는 자동으로 다국어 체크포인트를 선택합니다.
명령줄 사용법
pip install laya 후 laya 실행 파일이 제공됩니다:
# 라우팅만 – 모델 다운로드 없이 즉시 반환
laya "I was charged twice, please refund"
# 전체 예측 (첫 실행 시 체크포인트 다운로드)
laya "I was charged twice, please refund" --predict
# 언어 강제 지정 (감지가 모호할 때 유용)
laya "Mein Konto wurde zweimal belastet" --lang de
# 사전 설정된 워크플로우 사용 (티켓 분류, 모더레이션 등)
laya "Refactor this service" --preset triage
CLI는 결정 내용의 간결한 JSON 요약을 출력합니다.
로컬 API / 데모 UI 실행
pip install "laya[serve]"
python examples/server.py # http://127.0.0.1:8000 에서 FastAPI 시작
- 웹 UI는 원시 JSON을 붙여넣거나 간단한 폼을 채워 각 답변을 0–100 막대 그래프로 시각화합니다.
- 동일한 서버는 Python SDK와 동일한
state/questions페이로드를 수신하는/predict및/predict/batch엔드포인트를 노출합니다.
설치 참고사항
- Python 3.10+ – 패키지는
transformers>=5,torch>=2.14,huggingface_hub>=1를 고정합니다. Laya를 설치하기 전에 CPU 전용 또는 GPU 전용 공식 PyTorch 설치기를 사용하세요. - 선택적 추가 기능 –
laya[serve]– FastAPI 서버 및 UI.laya[mcp]– 선택적 MCP(모델 제어 플레인) 서버.laya[langchain]– LangChain / LangGraph 통합 도구.
- 모델 다운로드 – 체크포인트가 필요한 첫 번째 호출에서 Hugging Face 허브(
convaiinnovations/laya*)에서 모델을 다운로드합니다. 이후 실행에서는 로컬에 캐시됩니다.
Laya를 사용할 때
| 사용 사례 | 왜 Laya가 적합한가 |
|---|---|
| 고객 지원 티켓 분류 – 티켓을 적절한 부서로 라우팅, 긴급도 표시, 환불 요청 탐지. | 구조화된 출력, 50ms 미만 지연, 다국어는 기본 제공. |
| 자동 모더레이션 – "이게 폭력적인가?" 또는 "개인 정보가 포함되어 있는가?"와 같은 이진 검사. | 생성 없음 → 환각으로 인한 오진 없음; 신뢰도 점수로 임계값 설정 가능. |
| 비즈니스 규칙 강제 – 들어오는 이메일이나 JSON 페이로드에 대한 정책 준수 평가. | 결정 헤드 모델은 자체 레이블 데이터로 파인튜닝 가능; 후크로 사용자 정의 마스킹 또는 캐시 추가 가능. |
| 엣지 또는 저자원 추론 – ONNX를 통해 CPU, Apple M-시리즈, Intel XPU에서 실행 가능. | 빠른 로딩(2초 CPU 로딩), 선택적 torch.compile / ONNX 경로 있음. |
로드맵 및 커뮤니티
- 리포지토리는 세미틱 버전링을 따릅니다. 최신 릴리스(0.3.11)는 라우팅된 배치, 예측 후크, 더 안전한 HTTP 서빙을 추가했습니다.
- TypeScript 패키지(
laya-ts)는 Node.js 및 브라우저 환경에서 동일한 결정 API를 제공합니다. - 프로젝트는 Apache-2.0 라이선스이며, 저자는 Buy-Me-A-Coffee를 통해 기부를 수락합니다.
TL;DR
Laya = 빠르고 형식화, 다국어 대응의 결정. 텍스트 생성 없이도 가능합니다. Router를 임포트하고, 구조화된 질문의 작은 세트를 정의한 후, 이메일, 티켓, 자유 형식 텍스트에 대해 즉시 신뢰도 점수와 함께 답변을 얻을 수 있습니다. 프로덕션 수준의 분류, 가드레일, 결정이 결정적이고 언어에 의존하지 않는 모든 워크플로우에 이상적입니다.
이 프로젝트를 다룬 글
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트