Qwen3.5 기반 초소형 의사결정 모델 'Kev'가 공개됐다.
Qwen3.5를 베이스로 삼은 초소형 의사결정 모델 패밀리 'Kev'가 공개됐다. 0.8B, 4B, 9B 세 가지 크기로 나오며, 사전학습된 가중치를 그대로 쓰거나 직접 학습시켜 쓸 수 있다. 공개된 아키텍처 해설 글 'Jev's Architecture Unmasked'에서 설명한 구조를 소형 모델로 옮긴 것이 특징이다. API는 TypeSafe의 System One과 맞춰져 있어, 해당 Python SDK의 주소만 로컬 서버로 돌리면 그대로 동작한다.
가장 눈에 띄는 부분은 한 번의 요청에 서로 다른 형태의 질문을 함께 담을 수 있다는 점이다. 예/아니오를 묻는 noul, 보기 중 하나를 고르는 choice, 척도로 평가하는 score를 동시에 넣을 수 있다. 질문들은 같은 입력 텍스트를 공유하지만 서로의 답변을 읽지 못하도록 격리된다. 응답에는 단일 라벨이 아니라 확률 분포와 신뢰도, 척도 범례, 토큰 사용량이 함께 실린다. 예를 들어 반품·배송 지연·중복 청구가 섞인 고객 티켓을 넣으면 담당 부서 확률이 returns 0.47, shipping 0.28, billing 0.25처럼 나뉘어 돌아온다.
실행 환경은 Python 3.12 이상과 uv다. 저장소를 클론한 뒤 KEV_DTYPE=bf16과 함께 kev.serve 모듈을 jaredpalmer/kev-4b로 띄우면 로컬 서버가 뜨고, 첫 실행 때 어댑터와 베이스 모델을 내려받는다. --run 옵션에는 로컬 체크포인트 디렉터리나 jaredpalmer/kev-4b@qwen3 같은 허브 리비전도 넣을 수 있다. CUDA와 Apple Silicon을 모두 지원하며, 4B와 9B 모델은 bf16으로 32GB 맥에서 구동된다. TypeSafe SDK는 서빙용 extra를 동기화할 때 함께 설치된다.
브라우저에서 직접 만져볼 수 있는 웹 플레이그라운드도 있다. Node 20.9 이상이 필요하고, 프리셋을 불러 텍스트와 질문을 고친 뒤 단축키로 실행한다. 모든 질문을 한꺼번에 묶어 묻는 방식과 하나씩 따로 묻는 방식을 비교하는 모드, 선택지 순서를 여섯 가지로 뒤섞어 답이 흔들리는지 보는 모드, 질문 격리와 가짜 구분자 토큰을 시험하는 프리셋이 들어 있다. 체스 데모에서는 보드가 입력이 되고 합법 수가 choice 보기, 포지션 평가가 score 질문이 된다. 사람이 Kev와 대국하거나 스스로 두게 할 수 있고 대국 기록은 localStorage에 남는다. 설치 없이 Hugging Face Space에서 Kev-4B와 Kev-0.8B를 바로 써볼 수도 있다.
배경에는 Jev라는 선행 아키텍처가 있다. Kev는 그 구조를 소형 모델에서 재현하려는 시도이며, 1세대는 Qwen3 베이스에 0.6B·4B·8B 구성으로 나왔고 그 이전에는 Qwen2.5-0.5B를 쓴 프로토타입도 있었다. 베이스만 Qwen3.5로 바꿨기 때문에 두 세대는 통제된 비교가 가능하다. 개발 세트에서는 정확도 차이가 노이즈 범위였지만, 테스트 세트에서는 Kev-9B가 Kev-8B보다 7.3점 앞섰고(95% 신뢰구간 +2.8~+11.7) Brier 점수는 0.08 낮았다. Kev-4B는 2.9점, Kev-0.8B는 0.6B 대비 4.8점 앞섰다.
평가는 decision-v7과 transfer-v4 개발 세트, 그리고 릴리스된 체크포인트마다 모델 선택 이후 한 번만 읽은 동일한 테스트 세트에서 이뤄졌다. 학습에 쓰인 데이터에서 떼어낸 '학습 소스'와, 학습하지 않은 데이터셋·정책 규칙 유형인 '새 소스'를 나눠 측정했고 Brier는 낮을수록 좋다. Kev-9B는 새 소스 개발 세트에서 Jev에 3.5점 뒤졌고(0.822 대 0.857), Jev가 아직 돌지 않은 테스트 세트에서는 0.852를 기록했다. 다만 Jev가 어떤 데이터로 학습됐는지 알 수 없어 두 아키텍처의 통제된 비교는 아니라고 저자는 선을 긋는다.
2026년 9월 21일에는 생성 예제로 짧은 2차 학습을 한 번 더 돌린 가중치가 올라왔다. 명시적인 일수 계산이 들어간 정책 케이스와, 결정적 증거를 제거해 균일한 답을 내도록 훈련한 케이스가 대상이다. 테스트 세트 기준으로 Kev-9B는 0.837에서 0.852로, Kev-4B는 0.832에서 0.837로, Kev-0.8B는 0.668에서 0.684로 올랐다. 이전 가중치는 v7-base 리비전에 남아 있다.
확률 보정은 기본으로 켜져 있다. 체크포인트마다 분포 내 개발 세트에서 적합한 온도(대략 2.1~2.4)를 저장해두고, 모델을 로드할 때 포인터 헤드가 이를 적용한다. 답 자체는 바뀌지 않는다. 새 소스에서 Kev-9B의 보정 오차는 0.106에서 0.042로, 확률 0.9 이상으로 확신했는데 틀린 비율은 8.7%에서 4.0%로 줄어 Jev의 3.7%에 근접했고 정확도는 그대로였다. 원래 로짓을 보고 싶으면 KEV_TEMPERATURE=1.0으로 두면 된다. 표의 정확도 수치는 어느 쪽이든 같고, Brier 수치는 원래 로짓 기준이다.
선택 옵션도 하나 있다. KEV_DATE_FACTS=1을 켜면 입력에서 발견된 두 절대 날짜 사이의 일수를 덧붙여준다. Kev는 날짜 뺄셈을 안정적으로 하지 못하지만 명시된 일수는 활용할 수 있어서, 마감 정책 질문에서 Kev-9B가 0.80에서 0.90까지 올라간다(Jev는 0.93). 위 평가 표에는 이 옵션을 쓰지 않았다.
실무적으로 보면 Kev는 규칙 기반 라우팅과 소형 분류기를 대체할 수 있는 로컬 실행형 판단 모델에 가깝다. 단일 라벨 대신 확률을 돌려주기 때문에 에스컬레이션 임계값이나 담당 배정 규칙을 확률 기반으로 설계할 수 있다. 다만 Jev와의 비교는 통제되지 않았고, 날짜 연산은 별도 플래그에 의존하며, Qwen3 세대 가중치는 여전히 공개돼 있고 맥에서 더 빠르지만 더 이상 개발되지 않는다. 모든 가중치는 Kev 컬렉션과 GitHub 릴리스에서 받을 수 있고, 릴리스에는 tarball과 SHA-256 체크섬이 포함된다.
관련 글
- Ollaya는 결정 모델을 로컬에서 돌려 RTX 4090에서 8ms로 응답한다.Ollaya는 결정 모델을 자체 하드웨어에서 돌리는 오픈소스 런타임으로, RTX 4090에서 5개 질문을 약 10ms에 처리한다. TypeSafe SDK 0.7.1과 호환되는 API를 제공하고 확률 캘리브레이션도 개선했다.
- Jev에게 '다음 글자'만 물어 챗봇으로 만든 실험, jevchat 공개결정 모델 Jev에게 매 단계 다음 기호를 묻고 확률 분포에서 샘플링해 문장을 만들어내는 실험 도구 jevchat이 공개됐다. 여러 샘플링 전략과 알파벳, 빔 탐색을 지원하며 오프라인 테스트 158개를 갖췄지만 비용은 비현실적이고 결과는 재미를 위한 것이다.
- LLM 분류기를 특징 추출기로 재활용해 확률 보정 문제를 우회한다LLM에게 라벨을 직접 묻는 분류는 성능은 괜찮지만 확률 보정과 임계값 조정이 어렵다. LLM 판정을 특징 하나로 보고 로지스틱 회귀에 얹으면 보정된 확률과 기존 ML의 유연성을 함께 얻는다는 제안이다.