문서

Kev-0.5B — 프로토타입 (대체됨)

Kev-0.5B는 의사결정 모델입니다. 하나의 문서(상태)와 타입이 지정된 질문 집합을 받아, 한 번의 포워드 패스로 각 질문에 대한 확률 분포를 반환합니다. 텍스트를 생성하지 않습니다.

이것은 Qwen/Qwen2.5-0.5B 위에 얹은 LoRA 어댑터와 작은 포인터 헤드입니다. Archer Hume이 TypeSafe의 Jev를 위해 Jev’s Architecture Unmasked에서 추론한 아키텍처를 재현하며, TypeSafe의 공개 /v1/systemone API 계약을 서빙합니다.

이 체크포인트는 최초의 프로토타입으로, 메커니즘이 작동함을 보이기 위해 2026년 9월 노트북에서 학습되었습니다. Kev-0.8B, Kev-4B, Kev-9B로 대체되었으며, 후자는 Qwen3.5 베이스, 동결되고 체크섬이 검증된 스위트, 그리고 약 110회의 통제된 실험으로 찾아낸 레시피를 사용합니다. 동일한 도메인 외 항목(transfer-v4 dev)에서 본 모델은 0.561인 반면 이들은 0.643 / 0.794 / 0.812.620 / 0.790 / 0.796입니다. 참고와 재현을 위해 Hub에 남아 있습니다. 그 외의 용도에는 현재 패밀리를 사용하십시오.

  • Hub: jaredpalmer/kev-0.5b (tag v0.1)
  • 코드, 학습 레시피, 평가 및 데모: github.com/jaredpalmer/kev
  • 가중치: GitHub release v0.1.0, kev-0.5b.tar.gz (38 MB; LoRA 어댑터 adapter_model.safetensors, 헤드 head.pt, tokenizer 파일, eval.json, 학습 로그). SHA-256 15639f79…6e12f8, 전체 다이제스트는 sidecar .sha256에 있습니다. runs/kev/에 풉니다. 가중치는 git에 커밋되지 않습니다.

모델 세부 사항

개발자 Jared Palmer, Devin (Cognition)과 함께
모델 유형 인과 transformer, prefill 전용, 블록 인과 브랜치 마스크, 포인터 판독
베이스 모델 Qwen/Qwen2.5-0.5B (494M 파라미터, 동결)
어댑터 LoRA rank 16, alpha 32, dropout 0.05, q_proj k_proj v_proj o_proj gate_proj up_proj down_proj에 적용 (전체 24개 레이어)
헤드 두 개의 선형 매핑 896 → 256 (query는 <decide>에서, key는 각 </opt>에서), 스케일드 닷 프로덕트, 옵션에 대한 softmax
학습 가능 파라미터 9.3M (LoRA 8.8M + 헤드 0.46M), 백본의 1.9%
정밀도 fp32 (Apple MPS에서 학습 및 서빙)
학습에 사용된 컨텍스트 ≤ 384 상태 토큰, 질문 브랜치당 ≤ 1,024 토큰
서빙 시 허용되는 컨텍스트 브랜치당 8,192 (백본은 32k 지원)
질문 유형 noul (예/아니오), choice (2–255개 옵션), score (2–255개 순서가 있는 레벨)
언어 영어
라이선스 어댑터와 헤드는 Apache-2.0. 베이스 모델은 Qwen 라이선스 하에 있습니다 (Qwen2.5-0.5B는 Apache-2.0). 데이터셋은 각자의 라이선스를 가집니다.
버전 Kev-0.5B v0.1, 2026-09-17 학습

의도된 용도

의도된 용도. 의사결정 모델 연구: 직접 확률 판독의 캘리브레이션, 공유 상태 / 격리된 질문 어텐션, 옵션 순서 민감도, 그리고 TypeSafe의 System One 계약과의 API 수준 호환성. 로컬 데모와 교육.

의도되지 않은 용도. 사람에게 영향을 미치는 모든 프로덕션 의사결정: 콘텐츠 검열, 사기, 신용, 채용, 의료 또는 법률 라우팅. 모델의 지식은 0.5B 백본으로 제한되고, 캘리브레이션은 학습 분포에서만 검증되었으며, 익숙하지 않은 작업에서의 출력은 측정되지 않았습니다.

모델 사용 방법

입력은 하나로 패킹된 토큰 시퀀스입니다:

<state> …state…  <q> instr <opt> o1 </opt> <opt> o2 </opt> … <decide>  <q> … <decide>  …
  • 어텐션 마스크는 질문 토큰이 상태와 자기 자신의 브랜치만 볼 수 있게 합니다. 질문들은 서로를 볼 수 없습니다.
  • 각 브랜치는 상태 이후에 position id를 다시 시작합니다.
  • 각 질문에 대해, 헤드는 모든 </opt> 은닉 상태를 <decide> 은닉 상태와 채점하고 softmax를 적용합니다.
  • 애플리케이션 코드는 분포를 API 답으로 바꿉니다: Choice는 choice/confidence, Noul은 p(yes), Score는 기대 레벨.

예약 토큰은 기존 Qwen 특수 토큰입니다 (<|fim_prefix|>, <|fim_middle|>, <|box_start|>, <|box_end|>, <|fim_suffix|>). 사용자 텍스트는 그것들을 생성할 수 없도록 정제됩니다.

python -m kev.serve --run runs/kev로 서빙하고 POST /v1/systemone을 호출하거나, typesafe-sdk를 base_url="http://127.0.0.1:8009"와 함께 사용하십시오.

학습 데이터

여섯 개의 공개 데이터셋을 TypeSafe 형태의 요청으로 변환하고, 서빙 시점에 사용되는 것과 동일한 코드 경로(api.to_record())로 렌더링했습니다. 표준 train 분할에서 소스당 1,500개 레코드를 샘플링하여 9,000개 레코드와 13,500개 질문(Choice 4,500, Noul 6,000, Score 3,000)을 얻었습니다.

소스 분할 변환 대상 비고
Banking77 train Choice, K = 77 인텐트 이름을 옵션 키로; 템플릿화된 설명, 50%는 null
BoolQ train Noul 지문을 상태로; 40%는 true/false 판단 기준 포함
AG News train Choice K = 4 + 2 Noul 주제 질문과 함께 패킹된 파생 예/아니오 질문
MNLI train Choice K = 3 전제를 상태로, 가설은 지시에
SST-5 train Score, 5 레벨
Yelp Review Full train Score 5 레벨 + Noul 텍스트를 220단어로 절단; recommend = 별점 ≥ 4

변환 시점에 적용되는 렌더링 변형: 약 30%는 null 옵션 설명, 약 10%는 구조화된 {"what": …} 설명, 약 15%는 구조화된 {"question", "focus"} 지시, 약 32%는 상태를 객체나 배열로 감쌈({"document"}, {"ticket": {"channel","body"}}, [{"role","content"}]).

인코딩 전에 레코드마다 한 번 적용되는 증강: 옵션 순서를 섞음; 확률 0.10으로 진짜 옵션을 other: None of the above로 교체; 확률 0.15로 무관한 디스트랙터 옵션을 추가.

LLM이 생성한 데이터는 없습니다. 원본 데이터셋 외에 사람이 주석을 달지 않았습니다.

학습 절차

목적 함수 옵션에 대한 교차 엔트로피, 레코드 내 질문에 대해 평균
옵티마이저 AdamW, lr 2e-4, weight decay 0.01, OneCycle 스케줄 (10% 워밍업)
배치 스텝당 레코드 1개, 그래디언트 누적 8, 그래디언트 클리핑 1.0
에포크 2 (2,250개 옵티마이저 스텝)
하드웨어 Apple M5, 32 GB 통합 메모리, PyTorch 2.8 MPS 백엔드
실소요 시간 약 1h45m (레코드당 약 0.29 s)
시드 0
최종 학습 손실 0.27

이 체크포인트는 이제 kev/train.py의 기본값인 두 손실 항보다 앞선 것입니다: Score의 서수 항(--ord_w)과 Choice의 순열 일관성 KL(--perm_kl). 이 체크포인트를 정확히 재현하려면:

uv run python -m kev.train --n_per_source 1500 --epochs 2 --accum 8 --perm_kl 0 --ord_w 0 --out runs/kev

증강은 이제 인코딩 시점에 고정되는 것이 아니라 매 에포크 다시 적용되므로, 재실행해도 비트 단위로 동일하지는 않습니다.

평가

동일한 여섯 소스의 홀드아웃 test / validation 분할, 소스당 150개 레코드, 1,350개 질문, 시드 1. 전체 결과는 runs/kev/eval.json에 있습니다.

정확도와 캘리브레이션

소스 K zero-shot 베이스 zero-shot Instruct Kev-0.5B
acc / ECE acc / ECE acc / ECE / NLL
banking77 77 – – 0.860 / 0.057 / 0.56
agnews 4 0.813 / 0.069 0.787 / 0.160 0.940 / 0.028 / 0.22
agnews yes/no 2 0.780 / 0.103 0.853 / 0.062 0.960 / 0.017 / 0.10
boolq 2 0.427 / 0.274 0.607 / 0.084 0.753 / 0.136 / 0.63
mnli 3 0.460 / 0.225 0.433 / 0.390 0.747 / 0.100 / 0.63
sst5 5 0.373 / 0.083 0.447 / 0.344 0.533 / 0.121 / 1.17 (MAE 0.59 levels)
yelp 5 0.313 / 0.043 0.353 / 0.078 0.553 / 0.118 / 0.95 (MAE 0.54 levels)
yelp yes/no 2 0.833 / 0.129 0.833 / 0.066 0.887 / 0.084 / 0.33
전체 0.799 / 0.065

베이스라인: Qwen/Qwen2.5-0.5B(원시)와 Qwen/Qwen2.5-0.5B-Instruct(chat 템플릿), 동일한 렌더링 텍스트, 옵션 문자 A–H에 대한 다음 토큰 logits; K = 77에는 실행하지 않았습니다. ECE는 최고 확률에 10개의 등폭 빈을 사용합니다.

온도 스케일링

짝수 인덱스 레코드에 적합하고 홀수 인덱스에서 테스트: T = 1.47. 홀드아웃 NLL 0.505 → 0.481, ECE 0.057 → 0.031. 이 모델은 스케일링 전에 약간 과신합니다.

메커니즘 테스트

테스트 결과
격리 (형제 질문에 비밀 / 없음 / 상태에 있음) p = 0.03 / 0.03 / 0.99
패킹 vs 분리, 최대 확률 절대차 3.7e-6 (패킹이 2.0× 빠름, 요청당 약 2.7개 질문)
순열, 4개 순서, Choice K ≥ 3 argmax 변동 7.4%; p(correct) 평균 산포 0.065, p90 0.25
IIA, 무관한 옵션 하나 추가 top-2 |Δ log-odds| 평균 = 0.13, p90 0.34
경계 위조, 가짜 구분자가 있는 옵션 텍스트 옵션 수 불변; 위조된 옵션 p ≤ 0.09

한계

  • 분포 내에만 해당. 위의 모든 수치는 학습 데이터셋의 홀드아웃 분할에 대한 것입니다. 이 체크포인트의 소스 외 일반화는 측정되지 않았습니다.
  • 작은 백본. 0.5B 파라미터. TypeSafe 문서의 구조화된 판단 기준 예시에서 모델은 return_status를 고르는 Jev와 달리 return_policy를 고릅니다. 독해력(BoolQ 0.75, MNLI 0.75)은 최신 수준에 훨씬 못 미칩니다.
  • 좁은 작업 커버리지. 여섯 개 데이터셋과 약 열 개의 지시 템플릿. 코드, 표, 멀티턴 대화, 산술, 다단계 조건은 학습되지 않았습니다.
  • 순서 민감도가 남아 있습니다. 옵션 재정렬 시 argmax 변동 7%, 확률 산포 p90 0.25. 의사결정 경계 근처의 임계값은 행동을 바꿀 수 있습니다.
  • Score 신뢰도는 체크포인트가 아니라 서빙 코드가 계산합니다. 이 카드를 작성할 당시에는 1 − E|level − mode| / (L − 1)였고, 지금은 max(0, 1 − E|level − mode| / D)이며, D는 레벨에 대한 균등 분포의 평균 절대 편차로, TypeSafe의 참조 어댑터(system-one-adapter 0.2.1)와 같습니다.
  • 캘리브레이션은 보장이 아닙니다. 이 소스들에서 온도 스케일링을 한 뒤의 ECE 0.03은 새로운 워크플로에서의 캘리브레이션에 대해 아무것도 말해주지 않습니다. 적절한 채점 규칙은 올바른 인센티브를 줄 뿐, 결과 데이터에 대한 필요를 없애지는 않습니다.
  • 상속된 한계는 Qwen2.5-0.5B와 데이터셋에서 비롯되며, 그들의 레이블 노이즈, 인구통계적 편향(예: Yelp, 은행 인텐트), 그리고 영어 전용 커버리지를 포함합니다.

편향, 위험 및 권고

학습 세트는 그 소스의 편향을 지닙니다: 미국 중심의 뉴스 카테고리, 영어 은행 용어, 레스토랑 리뷰, 크라우드소싱된 NLI 레이블. 모델은 이를 그대로 반영할 것입니다.

직접적인 확률 출력은 권위 있어 보입니다. 이 모델의 confidence: 0.92는 세 옵션에 대한 자기 자신의 분포에 관한 통계일 뿐, 맞을 확률의 검증된 값이 아닙니다. 먼저 자신의 레이블된 결과에 대해 캘리브레이션을 측정하지 않고서는 중대한 결정에 이를 임계값으로 삼지 마십시오.

질문 격리 속성은 실제 안전 기능이며(한 질문의 텍스트가 다른 질문의 답을 조작할 수 없음), 검증되었습니다. 구분자 위조 방어는 다섯 개의 예약 토큰에 대해 검증되었습니다. 상태 텍스트를 통한 다른 프롬프트 인젝션 경로는 연구되지 않았습니다.

환경 영향

한 번의 학습 실행: 단일 Apple M5 노트북 SoC에서 약 1.75시간, 대략 30–40 W, 즉 약 0.06 kWh. 평가와 스모크 실행이 비슷한 양을 더합니다. 이는 작습니다.

인용

@software{kev2026,
  title  = {kev: a laptop-scale reconstruction of a Jev-style decision model},
  author = {Palmer, Jared},
  year   = {2026},
  url    = {https://github.com/jaredpalmer/kev}
}

@misc{hume2026jev,
  title  = {Jev's Architecture Unmasked},
  author = {Hume, Archer},
  year   = {2026},
  url    = {https://archerhume.com/posts/jevs-architecture-unmasked}
}

연락처

github.com/jaredpalmer/kev에 이슈를 열어 주십시오.