PostHog의 Jeeves가 추론을 결합해 Jev류 결정 모델 정확도를 높인다
PostHog가 공개한 Jeeves는 Jev 계열 결정 모델에 추론 과정을 얹은 9B 규모 분류기다. 예/아니오, 객관식, 점수 평가라는 서로 다른 형식의 질문을 한 번의 요청 안에서 동시에 처리하고, Jev와 호환되는 API로 확률을 돌려준다. GitHub 저장소에는 학습 코드와 train/dev/test 데이터, 배포된 가중치, 서빙용 추론 서버와 파이썬 SDK가 함께 올라와 있다.
성능은 학습에 쓰지 않은 데이터에서 측정됐다. 테스트 전체에서 0.889를 기록해 Kev-9B의 0.822와 Jev의 0.857을 앞섰고, JevBench 공개 티어에서는 0.935로 Jev의 0.866을 넘었다. 같은 체크포인트를 추론 없이 그리디로 돌리면 2,962문항 테스트 분할에서 0.804, 추론을 켜면 0.840이 나온다. JevBench 수치는 easy·standard·hard 공개 231문항만 포함하며 sealed judge 티어는 빠져 있고, Kev-9B의 JevBench 결과는 공개된 것이 없어 Kev-8B(Qwen3) 수치를 같은 공개 문항에 맞춰 비교했다.
기반 모델은 Qwen3.5-9B에 LoRA r=16과 포인터 헤드를 붙인 형태다. SFT는 8개 GPU에서 2에폭 596스텝으로 진행했고, 12개 공개 데이터셋과 합성 정책 데이터에서 모은 19,126개 질문을 사용했다. 이 가운데 절반에는 베이스 모델이 샘플링한 추론 체인이 붙어 있다. 이어지는 CISPO 강화학습은 624스텝 스케줄 중 402스텝에서 멈췄으며, RL 질문 9,992개를 각 8회씩 온도 1로 롤아웃하고 사고 토큰을 2,560개로 제한했다.
프롬프트와 토큰 설계에도 손이 들어갔다. 상태와 질문은 Qwen 채팅 템플릿에 특수 토큰 형태로 들어가고, 모델이 추론 체인을 만든 뒤 종료 토큰 뒤에 질문을 다시 붙인다. 포인터 헤드는 결정 지점의 은닉 상태와 각 선택지 종료 지점의 은닉 상태를 스케일드 닷 프로덕트로 점수화한다. 이 토큰들은 Qwen 토크나이저에서 거의 쓰이지 않는 희귀 토큰들이며, "State" 같은 평범한 텍스트로 대체하면 성능이 떨어졌다는 어블레이션 결과가 함께 적혀 있다. 추론 블록 뒤에 질문을 반복하지 않는 선택도 성능을 떨어뜨린다. 최종 확률은 선택지 점수에 소프트맥스를 적용한 뒤 dev 세트에서 맞춘 온도로 나눈 값이다.
별도 디렉터리에는 Orthrus에서 착안한 확산 드래프터가 들어 있다. Orthrus가 어텐션 전용 모델만 지원하는 것과 달리, Qwen3.5의 Gated DeltaNet 레이어를 지원하기 위해 마스크 토큰이 해당 레이어의 컨볼루션 이후 키와 밸류에 크로스 어텐션하도록 만들었다. 기본 설정은 블록 4인데, 여러 질문을 배칭할 때 비용이 낮게 유지되기 때문이라고 설명한다.
배경에는 Jev류 모델의 구조적 한계가 있다. 이 계열은 보정된 결정 확률을 내놓지만 정확도가 낮아서, 많은 파이프라인이 추론 모델을 폴백으로 붙여 운영해 왔다. Jeeves는 그 폴백을 걷어내려는 시도로, 결정을 내리기 전에 모델이 스스로 추론하게 만드는 쪽을 택했다.
실무에서 보면 Python 3.12와 CUDA GPU가 필요하고, FP8 커널은 Hopper에서 동작한다. H100 한 장 기준으로 추론 없이 요청당 약 0.3초, 추론을 켜면 중앙값 3.3초가 걸리며 체인 길이를 잘라 지연을 줄일 수 있다. sdk/는 Jev의 파이썬 SDK를 대체하는 드롭인으로, 기본적으로 127.0.0.1:8009에 접속하고 API 키가 필요 없으며 최대 120초까지 기다린다. options 필드는 선택 사항이라 Jev 클라이언트가 보내지 않아도 무시되고, 서버 전역 기본값은 serve 플래그로 지정한다.
재현 경로도 열려 있다. 데이터 준비 스크립트가 Hugging Face의 공개 데이터셋을 고정된 리비전으로 내려받고, 각 데이터셋은 자체 라이선스를 따른다. 8개 GPU와 데이터 디렉터리가 준비되면 run.sh 하나로 SFT, CISPO, 평가, export, 드래프터 생성과 학습까지 이어진다.
주의할 점도 원문에 명시돼 있다. JevBench 수치는 공개 티어 231문항만 포함하고 sealed judge 티어는 제외되며, Kev-9B의 JevBench 결과는 공개되지 않아 Kev-8B 수치로 대신 비교했다. CISPO를 402스텝에서 멈춘 이유는 그 이후 RL 풀이 포화되면서 헤드가 과도하게 날카로워져 보정이 나빠지기 때문이라고 밝혔다.