메뉴
HN
Hacker News • 7일 전

1년 전 RL 기반 비자기회귀 결정 모델을 만들었었다

IMP
6/10
핵심 요약

필자는 2025년 3월 강화학습 기반 비자기회귀(non-autoregressive) 결정 모델을 만들고 논문, 가중치, 데이터셋을 모두 공개했는데, 2026년 9 잘 알려진 프런티어 랩이 기술 논문·공개 가중치 없이 같은 개념을 신기술처럼 출시하자, 필자는 모든 한계를 개선한 완전 오픈소스 모델 패밀리 'Laya'를 공개했다. Laya는 양방향 인코더 기반으로 단일 GPU에서 32.8ms(배치 시 질문당 7.2ms)의 속도를 내며 100개 이상 언어를 지원하고 Apache 2.0 라이선스로 무료다. 단순 분류·점수화 같은 '시스템 1' 반사적 결정에 생성형 LLM을 쓰는 낭비를 없애는 게 핵심 아이디어다.

번역된 본문

지금 AI 업계의 모든 사람이 새로운 종류의 모델에 대해 이야기하고 있습니다. 자기회귀적(autoregressive)이지 않고, 텍스트를 생성하지 않으며, 구조화된 스키마에 대해 번개처럼 빠른 확률 예측을 제공하는 아키텍처입니다. 온라인의 이런 화제성을 보면 뿌듯하기도 하고 동시에 깊이 답답합니다. 저는 문자 그대로 1년 전인 2025년 3월에 이 작업을 했습니다. 수개월간의 노력과 땀, 잠 못 이긴 밤을 보내며 이것을 만들었고, arXiv 논문(arXiv:2503.23303)을 발표했으며, Hugging Face에 모델 가중치(sales-conversion-model-reinf-learning)를 공개하고, 오픈 데이터셋(saas-sales-conversations)을 출시했으며, PyPI 패키지를 만들고, 전체 접근법을 Reddit(r/LocalLLaMA 토론)에 올렸습니다. 그리고 2025년 9월에는 두 번째 논문(arXiv:2510.01237)을 발표하며 강화학습으로 유도되는 스키마 기반 결정 프레임워크를 정식화했습니다. 제 시스템의 지휘하는 두뇌는 항상 강화학습이었지, 단순한 임베딩 모델이나 자기회귀 LLM이 아니었습니다.

그러던 중 2026년 9월, OpenAI에서 ChatGPT 공동 발명가였던 디오고 알메이다(Diogo Almeida)가 설립한 자금이 넉넉한 프런티어 랩 'TypeSafe AI'가 Jev를 출시했습니다. 그들은 완전히 동일한 비자기회귀 결정 개념을 마치 전혀 새로운 과학적 돌파구인 것처럼 제안했습니다. 단, 그들은 기술 논문도, 오픈 가중치도, 공개 학습 데이터셋도 없이 출시했습니다.

제 이전 모델은 시퀀스 표현에 대해 PPO를 사용하여 영업 대화에서 턴별 전환 궤적(0.0에서 1.0까지의 확률)을 출력했습니다. Jev는 RLCD(Reinforcement Learning for Calibrated Decisions, 보정된 결정을 위한 강화학습)라 부르는 방식으로 병렬 샘플링을 일반화하여 신뢰도 분포와 스키마 선택을 수평적으로 출력하며, 입력 토큰 100만 개당 0.042달러를 청구하고 일반적인 응답 시간은 약 150ms입니다.

씁쓸함에 머물지 않고, 저는 배운 모든 것을 활용해 기존 접근법의 모든 아키텍처적 한계를 고치고 완전히 오픈소스인 수평형 시스템 1(System 1) 결정 모델 패밀리 'Laya'를 만들기로 했습니다. 우리는 양방향 인코더(bidirectional encoder) 위에 제대로 구축했기 때문에, 우리 모델은 단일 GPU에서 32.8밀리초(배치 처리 시 질문당 7.2ms)에 동작하며 Jev보다 6~8배 빠릅니다. 100개 이상 언어를 완전히 지원하고, API 구독 비용은 0원이며, 가중치는 100% 오픈소스 Apache 2.0입니다.

  1. 핵심 깨달음: 시스템 1 vs 시스템 2

모든 현대 AI 파이프라인에는 거대한 병목이 있습니다. 우리는 단순한 반사적 결정에 생성형 LLM을 사용하고 있다는 것입니다. 고객 지원 티켓이 도착하거나, 이메일이 받은 편지함에 들어오거나, 사용자가 API에 프롬프트를 보낼 때, 대개는 단순하고 구조화된 질문에 답하기만 하면 됩니다:

  • 이 티켓은 어느 부서로 라우팅해야 하는가?
  • 이 이메일은 피싱 공격인가, 스팸인가?
  • 이 프롬프트는 탈옥(jailbreak) 시도이거나 지시 주입(injection)인가?
  • 이 문제의 긴급도는 서열 척도(0~3)에서 몇인가?
  • 이 질의는 코드 실행이 필요한가, 단순 사실 응답이면 충분한가?

이런 일에 8B, 70B, 또는 프런티어 생성형 LLM을 호출하는 것은 완전한 과잉입니다. 토큰이 스트리밍되기를 500ms에서 2,000ms를 기다리고, 추론에 실제 돈을 쓰고, 그다음에는 자유 형식 텍스트에서 깔끔한 라벨을 추출하기 위해 정규식이나 JSON 파서를 작성해야 합니다. 무엇보다 최악인 것은, LLM은 환각을 일으키고 가짜 신뢰도를 생성하기 좋아한다는 점입니다. LLM이 "confidence: 0.95"를 출력할 때, 그것은 그저 자신 있게 들리는 토큰을 예측하는 것일 뿐입니다. 그 뒤에는 수학적 보정(calibration)이 전혀 없습니다.

우리에게 필요한 것은 인간 두뇌의 시스템 1처럼 작동하는 모델입니다. 정직하고 보정된 확률로 즉각적인 반사 결정을 내리며, 표준 범용 하드웨어에서 30~35밀리초만 걸리는 모델입니다.

  1. 세 가지 결정 프리미티브

Laya는 어떤 상태(원시 텍스트, 이메일, 티켓, JSON 문서)에 대한 타입이 지정된 질문을 단일 순전파(forward pass)로 평가합니다. 이는 세 가지 프리미티브에 기반합니다:

  • choice: 기준 사전(dictionary)에서 하나의 옵션을 고릅니다. 선택된 키, 모든 옵션에 대한 확률 분포, 보정된 신뢰도 점수를 반환합니다.
  • score: 상태를 서열 척도(레벨 0, 1, 2, ...) 위에 배치합니다. 예상 레벨, 척도 순위에 대한 분포 등을 반환합니다.
원문 보기
원문 보기 (영어)
Everyone in AI right now is talking about a new kind of model: an architecture that is not autoregressive, does not generate text, and gives lightning-fast probability predictions over structured schemas. Seeing the hype online feels both validating and deeply frustrating. I worked on this literally one year back in March 2025. I spent months of hard work, sweat, and sleepless nights building it, published an arXiv paper ( arXiv:2503.23303 ), released the model weights on Hugging Face ( sales-conversion-model-reinf-learning ), published the open dataset ( saas-sales-conversations ), built a PyPI package, and posted the whole approach on Reddit ( r/LocalLLaMA discussion ). Then in September 2025, I published a second paper ( arXiv:2510.01237 ), formalizing the framework for schema-based decisions guided by reinforcement learning. The guiding brain in my system was always reinforcement learning, not just an embedding model or an autoregressive LLM. And then in September 2026, a well-funded frontier lab called TypeSafe AI (founded by Diogo Almeida, a co-inventor of ChatGPT at OpenAI) launched Jev. They proposed the exact same non-autoregressive decision concept as if it was a brand-new scientific breakthrough. Except they launched without technical papers, without open weights, and with zero open training datasets. My earlier model used PPO over sequence representations to output turn-by-turn conversion trajectories (probabilities from 0.0 to 1.0) in vertical sales conversations. Jev generalized parallel sampling using what they called RLCD (Reinforcement Learning for Calibrated Decisions) to output confidence distributions and schema choices horizontally, charging $0.042 per million input tokens with typical response times around 150 ms. Instead of staying bitter, I decided to take everything I learned, fix every architectural limitation of the old approach, and build a completely open, horizontal System 1 decision model family: Laya . And because we built it properly on bidirectional encoders, our models run in 32.8 milliseconds on a single GPU (7.2 ms/question batched) , making it 6 to 8 times faster than Jev , with full support for over 100 languages, zero API subscription costs, and 100% open-source Apache 2.0 weights. 1. The Core Realization: System 1 vs System 2 Every modern AI pipeline has a giant bottleneck: we use generative LLMs for simple reflex decisions. When a customer support ticket arrives, or an email hits your inbox, or a user submits a prompt to your API, you usually only need to answer simple, structured questions: Which department should this ticket route to? Is this incoming email a phishing attack or spam? Is this prompt trying to jailbreak or inject instructions? How urgent is this issue on an ordinal rubric (0 to 3)? Does this query require code execution or a simple factual reply? Calling an 8B, 70B, or frontier generative LLM for this is complete overkill. You wait 500 ms to 2,000 ms for tokens to stream out, spend real money on inference, and then have to write regex or JSON parsers to extract a clean label from free-form text. Worst of all, LLMs love to hallucinate and generate fake confidence. When an LLM outputs "confidence: 0.95" , it is just predicting tokens that sound confident. There is zero mathematical calibration behind it. We needed a model that works like the human brain&#x27;s System 1: instant reflex decisions with honest, calibrated probabilities, taking only 30 to 35 milliseconds on standard commodity hardware. 2. The Three Decision Primitives Laya evaluates typed questions over any state (raw text, email, ticket, or JSON document) in a single forward pass . It relies on three primitives: choice : Pick one option from a dictionary of criteria. Returns the selected key, probability distribution across all options, and a calibrated confidence score. score : Place the state on an ordinal rubric (levels 0, 1, 2, ...). Returns the expected level, the distribution over rubric ranks, and confidence. noul : A direct boolean question returning calibrated probability P(true) from 0.0 to 1.0 (with P(false) = 1 - P(true) by construction). Because the output space consists purely of probabilities and numbers, the model never generates text, cannot hallucinate, and schema violations or malformed JSON are physically impossible. 3. The Three Checkpoints & Bundled Hub Architecture One model cannot be optimal for every task and language. We released three specialized checkpoints, now consolidated under a single repository hub on Hugging Face: Checkpoint Backbone Encoder Params Context Primary Strength convaiinnovations/laya ModernBERT-large 421M 512 English text classification, guardrails, email triage convaiinnovations/laya-multilingual mmBERT-base (256k vocab) 322M 1024 (up to 8k) 100+ languages, 2.2x faster, cross-lingual NLI convaiinnovations/laya-typed-decisions ModernBERT-large 421M 1024 Agent observability, customer service, invoice processing, security alerts (0.766 acc) Selective Subfolder Downloads Rather than forcing users to manage three separate repositories or download 2.5 GB of combined weights, the main repository convaiinnovations/laya bundles all three. Using Hugging Face&#x27;s allow_patterns , Laya&#x27;s SDK downloads only the specific subfolder requested: # Downloads English model (~808 MB) agent_en = laya.load("convaiinnovations/laya") # Downloads ONLY the multilingual subfolder (~647 MB), not the entire 2.5 GB bundle agent_ml = laya.load("convaiinnovations/laya", subfolder="multilingual") 4. Why Routing Is Essential: The Multi-Script Reality One of the most eye-opening findings from our 51-language sweep on the MASSIVE benchmark (20 options, random baseline = 0.050) was how English models fail outside Latin script. ModernBERT-large&#x27;s 50,000-token English BPE vocabulary simply shreds non-Latin alphabets: Khmer: 0.000 accuracy at 0.952 mean confidence . Not one correct decision in 100 questions, while reporting ~95% confidence. Armenian: 0.050 accuracy (exact coin-flip random) at 0.885 confidence. Hebrew: 0.060 accuracy at 0.964 confidence. Bengali: 0.080 accuracy at 0.945 confidence. Hindi: 0.100 accuracy at 0.941 confidence. This is the crucial lesson: the model&#x27;s own confidence gives no warning when it cannot read the input script . Across 51 languages, the English checkpoint&#x27;s mean confidence never drops below 0.885, regardless of whether its accuracy is 82% or 0%. Therefore, confidence gating cannot protect you . The decision of which model to use must be made before the forward pass. Sub-Millisecond Pure Python Routing Laya includes a built-in Router that inspects the Unicode scripts of incoming text across 22 alphabets (Devanagari, CJK Han, Cyrillic, Arabic, Hebrew, Tamil, Thai, etc.) and analyzes Latin stopword distributions: Standard English text: 0.09 ms detection overhead. Devanagari / Indic text: 0.54 ms detection overhead. Large 200-row nested JSON documents: 0.73 ms detection overhead. Compared to a 33 ms forward pass, routing overhead is negligible (<2%). And with Router(preload=True) , all required models stay resident in VRAM/RAM, completely eliminating the 7 to 10-second cold-swap penalty when traffic alternates between languages. from laya import Router # Preload checkpoints into memory for instant sub-35ms routing router = Router(preload=True) # English -> automatically routed to ModernBERT-large res_en = router.predict({"body": "I was charged twice, please refund."}, questions) # Hindi -> automatically routed to mmBERT-base (100+ languages) res_hi = router.predict({"body": "मुझसे दो बार शुल्क लिया गया, कृपया पैसे वापस करें।"}, questions) # Explicit override when you already know the domain res_spec = router.predict(state, questions, model="typed-decisions") 5. Head-to-Head: Laya (with Routing) vs TypeSafe Jev We benchmarked Laya directly against TypeSafe Jev across public datasets and standard benchmarks. Every Laya number is measured; Jev numbers are published by th