JEV는 TypeSafe AI가 제시한 시스템 원(System One) 모델의 이름입니다. 회사는 이를 “구조화되지 않은 상태가 들어가고, 타입이 정해진 확률적 판단이 나오는” 함수 호출에 가까운 모델이라고 설명합니다. 이 글은 그 개념의 이론적 배경을 정리하고, 이를 구현한 두 오픈소스 저장소를 비교합니다. 회사가 밝힌 세부 설계는 많지 않아서, 이 글의 설명은 공개된 블로그 글과 두 저장소의 README를 기준으로 합니다.
Category : Deep dive
이 글은 개인정보 탐지에 쓸 수 있는지 알아보려고, JEV 개념을 구현한 두 저장소를 비교 분석해 본 기록입니다. 비교할 때는 제가 만든 개인정보 탐지 엔진 privyscope도 함께 염두에 두었습니다.
목차
이름의 유래와 개념
회사는 이름을 대니얼 카너먼의 시스템 1(빠르고 직관적인 사고)에서 따왔다고 설명합니다. 긴 추론을 거치는 시스템 2와 달리, 시스템 1은 구조가 정해진 문제에 빠르게 답합니다. JEV는 소프트웨어 안에서 반복되는 구조화된 판단, 예를 들어 이 요청을 어느 팀에 보낼지나 이 고객이 환불 대상인지 같은 판단을 맡기기 위해 설계된 모델이라고 합니다.
회사는 응답 시간이 70ms에서 500ms 사이라는 수치도 내세웁니다. 다만 이는 회사의 주장이며, 독립적으로 검증된 결과는 아직 확인하지 못했습니다. 회사는 모델이 환각을 일으키지 않는다고도 말하는데, 이것이 형식 보장을 뜻하는지 내용의 정확성까지 포함하는지는 따로 따져 봐야 합니다.
이론적 배경 1: 생성 대신 판단
대부분의 언어 모델은 다음 토큰을 하나씩 예측하는 자기회귀(auto-regressive) 방식으로 동작합니다. 긴 글을 만드는 데는 이 방식이 적합하지만, 답이 몇 개의 선택지나 몇 단계의 점수로 정해지는 문제에서는 필요 이상의 계산이 듭니다. 판단 문제는 출력 형식이 미리 정해져 있으므로, 문장을 만들지 않고 선택지의 점수를 한 번에 읽는 것으로 충분할 수 있습니다.
이론적 배경 2: 타입이 있는 출력
JEV는 출력의 형태를 타입으로 정합니다. 기본 형태는 세 가지로 볼 수 있습니다.
- 참 여부(Noul): 진술이 참일 확률 p(true)를 냅니다. 여러 진술을 서로 독립적으로 물을 수 있습니다.
- 선택(Choice): 호출할 때 주어진 옵션들 위에서만 확률 분포를 냅니다. 옵션 밖의 답은 구조적으로 나올 수 없습니다.
- 순서(Score): 정해진 등급들에 대한 분포와 그 기댓값을 냅니다.
타입 제약은 답의 형식이 틀리는 것을 막습니다. 그러나 답이 맞는다는 것까지 보장하지는 않습니다. kyegomez/open-jev README도 이 점을 직접 강조합니다.
이론적 배경 3: 보정된 확률
확률 출력의 가치는 값이 실제 빈도와 맞는지에 있습니다. 0.8이라고 답한 사례들 가운데 실제로 80%가 맞아야 보정이 잘 된 것입니다. 보정은 Brier 점수나 기대 보정 오차(ECE)로 측정합니다. 로짓에서 얻은 값은 보정이 어긋나기 쉬워서, 보통 보정 데이터로 온도 값을 따로 맞춥니다. Open-Jev도 학습 뒤 온도를 보정 데이터로만 맞춥니다.
분포 이동이 일어나면 보정은 다시 깨질 수 있습니다. kyegomez/open-jev README는 배포 전에 분포 이동 아래에서 보정을 다시 측정하라고 적고 있습니다.
이론적 배경 4: 학습 목표
정답 하나를 가리키는 라벨 대신 목표 확률 분포를 학습 신호로 쓰면, 애매한 사례를 억지로 확신하게 만들지 않을 수 있습니다. 두 저장소 모두 이 방향을 택합니다. Open-Jev는 soft cross-entropy와 Brier 손실을 함께 씁니다. kyegomez/open-jev의 RLCDLoss는 여기에 일관성(의미가 같은 입력에는 같은 답), 신뢰도, ECE 항을 더합니다. 다만 이 항들은 kyegomez가 공개 자료에서 추론해 재구성한 것이고, 회사가 공개한 설계는 아닙니다.
JEV를 구현하는 세 가지 갈래
JEV 개념을 실제 시스템으로 만드는 방법은 크게 세 가지입니다. 어느 쪽을 택하느냐에 따라 필요한 데이터, 연산 비용, 서빙 방식이 달라집니다.
- 헤드 파인튜닝: 사전학습된 모델에 LoRA 어댑터와 판단용 헤드를 붙여 학습합니다. 적은 데이터와 작은 GPU로 가능하지만, 모델이 원래 다음 토큰 예측으로 학습되어 있어서 표현에 그 흔적이 남습니다.
- 근본적 학습: 상태 인코더와 판단 헤드를 처음부터 설계하고 학습합니다. 생성 루프를 완전히 없앨 수 있지만, 대규모 데이터와 연산이 필요하고 기존 서빙 도구의 도움을 받기 어렵습니다.
- 지식 증류: 큰 교사 모델이 낸 판단 확률을 목표로 삼아, 더 작고 판단 전용인 학생 모델을 학습합니다. 교사의 확률 분포를 그대로 쓰므로 정답 라벨이 없어도 학습할 수 있습니다. 학생 모델이 작아서 추론 비용이 줄지만, 교사 모델이 있어야 하고 학생이 교사의 보정까지 물려받는지 따로 확인해야 합니다.
두 저장소를 이 기준에 놓으면, zefan-cai/Open-Jev는 헤드 파인튜닝에 해당합니다. kyegomez/open-jev는 근본적 설계에 해당하지만, 아직 학습된 가중치 없이 구조만 구현되어 있습니다. 지식 증류는 두 저장소 모두 구현하지 않았고, kyegomez/open-jev는 할 일 목록에 사전학습과 증류 파이프라인을 적어 두었습니다.
같은 방식이 다른 분야에도 쓰입니다. 예를 들어 privyscope는 사전학습 인코더에 토큰 단위 BIOES 분류 헤드를 붙여 개인정보 구간을 찾습니다. 헤드를 바꿔 파인튜닝한다는 점은 같지만, 그 출력은 토큰마다 붙는 태그여서 질문마다 판단 확률을 내는 JEV와는 문제와 출력 형태가 다릅니다.
두 구현의 방향
| 항목 | kyegomez/open-jev | zefan-cai/Open-Jev |
|---|---|---|
| 목적 | JEV 개념을 처음부터 다시 구현한 연구용 재구성 | 실제로 쓸 수 있는 판단 모델 시리즈 |
| 기반 | 직접 설계한 양방향 트랜스포머 인코더, 무작위 가중치 | 사전학습된 Qwen3.5 2B·9B 및 27B 체크포인트 + LoRA + 스칼라 결정 헤드 |
| 출력 | 타입별 헤드: Noul(참 확률), Choice(옵션 분포), Score(순서형 분포) | 후보별 Yes/No 로짓에서 얻은 확률 |
| 학습 | RLCDLoss(soft-target NLL, Brier, 일관성, 신뢰도, ECE) | soft cross-entropy와 Brier, 보정 데이터로 맞춘 온도 |
| 공개 상태 | 가중치 없음, 성능 주장 없음 | 체크포인트 공개, 자체 평가와 한계 보고 |
kyegomez/open-jev: 구조를 먼저 검증하는 재구성
이 구현은 상태를 한 번 인코딩하고, 질문 슬롯이 교차 어텐션으로 그 표현을 읽습니다. 질문끼리는 서로 보지 않으므로, 여러 질문에 한 번의 병렬 순전파로 답할 수 있습니다. 답의 형식은 선언된 타입으로 제한됩니다. 예를 들어 Choice의 답은 호출할 때 넘긴 옵션 중 하나로만 나옵니다.
이 설계는 저장소가 밝히듯 공개 자료에서 추론한 가설입니다. 가중치가 무작위라 출력 값에는 의미가 없고, 이 저장소로 확인할 수 있는 것은 구조와 인터페이스입니다.
zefan-cai/Open-Jev: 기성 LLM을 적응시키는 응용
이 저장소는 사전학습된 Qwen 체크포인트에 LoRA 어댑터와 스칼라 결정 헤드를 붙여, 후보마다 Yes/No 로짓으로 확률을 냅니다. 후보는 학습과 추론 모두에서 독립된 시퀀스로 처리되고, 공통 프리픽스 캐싱은 아직 실험 단계입니다. 따라서 후보 수가 많아지면 연산이 함께 늘어납니다.
저장소가 보고한 수치는 다음과 같습니다. H200에서 분리된 연산자 단위 가속은 2.63~2.75배였지만, 모델 전체의 P50 비율은 1.006~1.020배였고 통계적 유의성은 확인되지 않았다고 적혀 있습니다. 자연어 지원 파일럿에서 2B 모델은 256개 중 166개(64.8%)를 맞혀 BM25의 211개(82.4%)보다 낮았습니다. 외부 사용자 검증은 아직 0건입니다.
한계와 검증할 것
- 형식과 정확성: 타입 제약은 형식 오류를 막지만 답의 정확성은 보장하지 않습니다.
- 출력 정보: 출력이 자유 텍스트가 아니라 확률이므로 원문이 그대로 새는 위험은 낮습니다. 하지만 확률 자체가 입력과 학습 데이터에 대한 정보를 담을 수 있어, 세밀한 확률 노출과 반복 질의에 대한 통제가 필요합니다.
- 보정의 지속성: 분포가 바뀌면 보정이 깨질 수 있으므로, 실제 데이터 분포에서 다시 측정해야 합니다.
- 속도 주장: 회사의 응답 시간 수치는 독립적으로 검증되지 않았습니다. zefan-cai/Open-Jev의 모델 전체 속도 이점도 유의하지 않았습니다.
- 재현 가능성: kyegomez/open-jev는 학습된 가중치가 없어서 판단 품질을 아직 비교할 수 없습니다.
트레이드오프로 보기
JEV를 기술적 진보로 보는 시각도 있지만, 저는 트레이드오프로 보는 편이 맞다고 생각합니다. 판단을 사람이 내리는지 기계가 내리는지의 차이는 출력 방식의 차이에서 시작하지만, 그 결과로 설명 방식, 오류가 드러나는 모습, 책임을 지는 방법이 함께 바뀝니다. 속도와 형식 보장을 얻는 대신 검증과 보정 관리의 부담을 떠안는 것입니다.
정리
JEV에서 새로운 부분은 개별 기술보다 설계 목표의 조합에 있습니다. 출력을 생성하지 않고 타입이 있는 판단으로 제한하며, 보정을 학습 목표에 넣고, 이를 함수 호출처럼 시스템 안에서 쓰게 만든 것입니다. 다중 선택지의 로짓 비교, 과제별 헤드, 온도 보정, 소프트 타깃은 이미 있던 기법이므로, 이 조합을 새로운 패러다임이라고 부를 근거는 약합니다. 회사가 말하는 속도와 환각 없음 같은 효과도 대부분 생성하지 않는다는 한 가지 선택에서 나오며, 이것이 실제로 이득인지는 측정으로 확인해야 합니다.
그럼에도 JEV의 핵심은 생성 대신 타입이 있는 확률 판단을 내는 데 있습니다. 두 저장소는 같은 개념에서 출발했지만 답하는 질문이 다릅니다. kyegomez/open-jev는 구조가 어떻게 생겼는지 이해하고 실험하기에 적합합니다. zefan-cai/Open-Jev는 기성 로컬 LLM 위에 판단 기능을 얹을 때 참고할 수 있는 체크포인트와 측정값을 제공합니다. 이 방식을 도입한다면 정확도, 보정, 지연 시간을 자체 데이터로 먼저 측정하는 것이 좋습니다.
결국 이것은 기술적 진보라기보다, 속도와 형식 보장을 얻는 대신 검증과 보정 관리의 부담을 받아들이는 트레이드오프라고 생각됩니다. 근데 엄청난 기술적 진보로 포장하는 사람이 많아서 한번 분석해봤습니다.
참고: 용어 설명
글에 나오는 용어를 짧게 풀어 둡니다.
- 시스템 1과 시스템 2: 심리학자 대니얼 카너먼이 구분한 두 사고방식입니다. 시스템 1은 빠르고 직관적이며, 시스템 2는 느리고 단계적인 추론입니다.
- 자기회귀(auto-regressive) 생성: 앞에서 만든 토큰을 보고 다음 토큰을 하나씩 만들어 가는 방식입니다. 일반적인 LLM의 텍스트 생성이 이 방식입니다.
- 토큰: 모델이 다루는 최소 단위입니다. 단어 전체일 수도 있고 단어의 일부나 글자일 수도 있습니다.
- 인코더: 입력 텍스트를 숫자 벡터로 바꾸는 신경망 부분입니다.
- 로짓: 확률로 바꾸기 전의 모델 출력 점수입니다.
- 파인튜닝: 이미 학습된 모델을 새로운 과제에 맞춰 추가로 학습시키는 것입니다.
- LoRA: 모델 전체를 바꾸지 않고 작은 추가 행렬만 학습하는 파인튜닝 방법입니다.
- 헤드: 모델 끝에 붙여서 최종 답을 내는 작은 층입니다.
- 보정(calibration): 예측 확률이 실제로 맞는 비율과 일치하는 정도입니다. 0.8이라고 답한 것들 가운데 80%가 맞으면 잘 보정된 것입니다.
- 온도(temperature): 확률 분포가 얼마나 뾰족할지 조절하는 값입니다. 보정 데이터를 써서 맞춥니다.
- 소프트 타깃: 정답을 하나로 찍지 않고 확률 분포로 표현한 학습 목표입니다.
- 지식 증류: 큰 모델(교사)의 출력을 따라 하도록 작은 모델(학생)을 학습시키는 것입니다.
- 분포 이동: 학습할 때 본 데이터와 실제 데이터의 성질이 달라지는 현상입니다.
- 프리픽스 캐싱: 여러 질문이 공유하는 앞부분 계산을 한 번만 하고 재사용하는 기법입니다.
- 정규식: 전화번호나 주민등록번호처럼 형식이 정해진 문자열을 찾는 패턴 규칙입니다.
- BIOES 태깅: 텍스트의 각 토큰에 개인정보의 시작, 내부, 끝, 단독, 바깥 같은 태그를 붙여 구간을 찾는 방식입니다.
이 글은 TypeSafe AI 블로그 글과 두 저장소의 README 및 공개된 수치를 기준으로 작성했고, 결과를 독립적으로 재현하지는 않았습니다.