Hacker News

Jeff – Jev-compatible 0.8B decision models, trained at home, ~30 ms

Jeff — 집에서 학습한 Jev 호환 0.8B 의사결정 모델, 약 30ms

Jeff는 상황과 선택지를 입력하면 텍스트를 생성하지 않고 선택지별 확률을 반환하는 소형 오픈 모델입니다. 0.8B 모델은 Apple M4 Max에서 약 28ms 만에 응답하며, 분류 성능은 높지만 추론 중심 과제에서는 대형 모델보다 낮은 점수를 기록합니다.

AI 요약

Jeff는 Qwen3.5와 Gemma 4를 미세 조정한 소형 의사결정 모델입니다. 상황을 설명하고 선택지를 평범한 문장으로 제시하면, 한 번의 forward pass로 각 선택지의 보정된 확률과 선택 결과를 반환합니다. 응답 문장을 생성하거나 파싱하지 않습니다. API는 Jev와 같은 요청 형식을 사용하지만, 프로젝트는 독립적으로 개발됐으며 Jev 제작사 TypeSafe와 제휴 관계가 없습니다.

사용 방식과 응답 형식

요청 하나에 여러 질문을 묶어 보낼 수 있습니다. 질문 유형은 선택지 중 하나를 고르는 choice, 예·아니오 확률을 반환하는 noul, 설명한 척도에서 값을 매기는 score 세 가지입니다. choice는 최대 255개 선택지를 받습니다. 고객 문의를 예로 들면, 문의 내용을 state로 전달하고 담당 팀을 선택지로 주면 환불·결제, 파손·분실 배송, 계정 문제 가운데 하나를 고르는 식입니다.

모델은 계획 수립기가 아니라 분류기입니다. 각 선택지가 초래할 결과를 문장으로 설명하면 선택 성능을 낼 수 있지만, 다음에 일어날 일을 예측하라고 묻는 식으로 바꾸면 저자 실험에서는 무작위 수준을 넘지 못했습니다. 선택지 표현도 결과에 영향을 줍니다. Frogger 실험에서는 목표에 도달하는 선택지를 다른 전진 선택지와 같은 방식으로 표현하자 한 에피소드의 통과 횟수가 15회에서 23회로 달라졌습니다. 저자는 짧은 선택지 키와 구체적인 설명을 쓰고, 서로 독립적인 질문은 한 요청에 함께 담으라고 안내합니다.

성능과 한계

공개 벤치마크 5종의 4,599개 질문에서 Jeff-Qwen3.5-0.8B는 종합 79.1%, Jeff-Qwen3.5-2B는 83.1%, Jeff-Gemma4-E2B는 81.6%를 기록했습니다. Jev의 공개 종합 점수는 83.0%지만, Jev와 AutoJev 수치는 같은 벤치마크의 서로 다른 표본에서 측정됐으므로 직접 비교에는 한계가 있습니다. Jeff는 Financial PhraseBank에서 약 96%, RAGTruth에서 86~89%를 기록하는 등 분류와 근거 연결 과제에서 강점을 보였습니다. 반면 추론 성격이 강한 BBH에서 Jeff는 64~68%로 Jev의 94.3%보다 낮았고, JevBench hard에서도 Jeff 모델은 47.6~53.3%로 Jev의 73.3%에 미치지 못했습니다.

게임 실험과 실행 속도

학습 데이터에 게임 기록을 넣지 않고 Doom, Frogger, Pac-Man을 시험했습니다. 매 차례 코드가 현재 상황과 합법적인 행동, 행동의 결과를 문장으로 설명하고 모델이 하나를 고릅니다. 20개 에피소드 기준 Jeff-0.8B는 Doom에서 회당 평균 6.55킬을 기록해 규칙 기반 봇과 같았고, Frogger에서는 10.3회 통과해 규칙 기반 봇의 10.25회와 비슷했습니다. Pac-Man에서는 98개 펠릿 중 57개를 모았습니다. 다만 저자는 게임이 일반적인 비정형 데이터와 다르므로 이상적인 zero-shot 평가가 아니라고 밝힙니다. 벤치마크 점수가 게임 성능을 예측하지도 않았습니다. 미학습 Gemma 4 E2B는 벤치마크에서 미학습 Qwen보다 높았지만 게임에서는 가장 낮은 결과를 냈습니다.

RTX PRO 6000에서 Jeff-0.8B는 결정당 중앙값 22ms, Apple M4 Max의 MLX에서는 28ms를 기록했습니다. 2B 모델은 같은 환경에서 각각 24ms와 60ms였습니다. 이 수치는 약 200개 입력 토큰으로 구성한 벤치마크 질문 200개를 하나씩 처리한 결과입니다. 비교 대상으로 제시된 Jev의 Doom 요청 시간은 API 네트워크 지연을 포함한 114~212ms이며, 같은 하드웨어에서 잰 값은 아닙니다.

학습과 배포

학습은 RTX PRO 6000 한 대에서 진행했습니다. 0.8B 모델은 약 2시간, 2B 모델은 약 3.5시간 걸렸습니다. 합성 학습 데이터는 두 대의 DGX Spark에서 실행한 공개 모델 Qwen3.8-Flash-Next가 작성했습니다. 클라우드 GPU나 비공개 모델의 출력을 학습 데이터에 쓰지 않았으며, 비공개 모델은 합성 데이터 일부를 표본 검사하는 데만 사용했습니다. 학습은 전체 가중치를 한 epoch 미세 조정하고, 선택지별 cross-entropy를 학습한 뒤 보정용 temperature를 맞추는 방식입니다. 평가 패널의 문항은 학습에 넣지 않았습니다.

저자는 음성 내비게이션용 사례 약 1만 1천 건으로 미세 조정했을 때, 보류 데이터 정확도가 31.7%에서 95.8%로 올랐고 M4 Max에서 결정당 약 40ms가 걸렸다고 설명합니다. 공개 가중치는 Apache 2.0, 코드는 MIT 라이선스입니다. 학습 데이터는 배포하지 않으며 각 데이터 출처와 라이선스를 문서에 기록했습니다. Qwen 모델은 Apple Silicon에서 MLX로 실행할 수 있고, 그 밖에는 PyTorch 기반 NVIDIA GPU 또는 CPU 실행을 지원합니다.

Hacker News 반응

  • @firelex — Jeff는 zero-shot 분류를 위한 작은 오픈 가중치 Qwen3.5 및 Gemma 미세 조정 모델입니다. 상황과 선택지를 주면 텍스트 생성 없이 한 번의 forward pass로 보정된 확률을 반환합니다. 2B 모델은 5개 벤치마크에서 83.1%를 기록했고, 0.8B 모델은 M4 Max에서 약 28ms 만에 결정합니다. Jev와 호환되는 API를 제공하지만 TypeSafe와는 관계가 없습니다. 모든 학습은 집에서 진행했습니다. 다만 Jev와 Jeff의 공개 점수는 서로 다른 표본에서 나왔고, Jeff는 분류 과제에서 강한 반면 다단계 추론에서는 뒤처집니다. 제 앱의 음성 내비게이션 모델은 짧은 미세 조정으로 보류 명령 정확도가 32%에서 96%로 올랐습니다.
    • @ironqcold — 2B가 0.8B보다 못한 점이 재미있습니다. BBH와 JudgeBench는 추론에 가깝고 Jeff가 뒤처지는데, Banking77이나 CLINC150처럼 zero-shot 분류에 더 적합한 벤치마크를 고를 생각은 없었나요?
    • @thomasikzelf — 좋은 프로젝트입니다. 속도 면에서 Qwen에 한 토큰만 출력하도록 요청하는 방식과 비교하면 어떤가요?
  • @AgentMasterRace — 제 사용 사례에서 Jev와 비교해 봤는데 정확도가 너무 낮았습니다. 94% 대 70%라면 분류에 쓰기 어렵습니다.
    • @tbeseda — 그분의 분류 작업에는 어렵다는 뜻입니다. 글쓴이는 사용 사례에 맞게 미세 조정할 수 있다고 미리 설명했는데, 해 보셨나요? Jev를 대체하기보다 수년의 작업과 수백만 달러 없이 오픈 가중치로 MVP를 만들 수 있음을 보여주는 프로젝트라고 생각합니다.
    • @clhodapp — 사용 사례에 맞춘 미세 조정이 필요하다면 제품 범주가 완전히 달라집니다.
    • @nico — 단순 분류 작업이라면 임베딩과 로지스틱 분류기를 살펴볼 만합니다. 제가 시험한 AG News, Emotion, MASSIVE Intent, Banking77에서는 기본 분류 작업에서 Jev와 Laya 수준이거나 더 나았습니다. 50개가 넘는 클래스를 분류할 때 특히 잘했고, 추론이 필요한 XLNI 데이터셋에서는 성능이 낮았습니다. 분류기는 1ms 미만으로 실행됩니다.
  • @k__ — Von 1.2가 Doom 점수는 더 높았습니다.
    • @nico — Jeff의 수치를 자세히 보니 나쁘지만은 않지만 더 나아질 수는 있습니다. 저는 같은 Doom 시나리오에서 분류기로 평균 22킬을 기록했습니다. 제가 시험한 모델은 1MB 미만이고 CPU에서 1ms 미만으로 실행되며, 학습도 CPU에서 몇 초면 끝납니다.
  • @alanwreath — 분류기와 Jev의 차이가 무엇인가요?
    • @yfontana — Jev도 분류기입니다. 차이는 LLM처럼 미세 조정하지 않은 도메인에도 높은 정확도로 일반화한다는 점이며, 속도와 비용은 전통적인 분류기에 가깝습니다.
    • @fra — BERT는 사용 사례에 맞춰 미세 조정해야 합니다. Jev는 일반화합니다. 꽤 큰 차이입니다.
  • @wgd — 대략 3년 전부터 가능했을 겁니다. 최근 Anthropic과 OpenAI 모델은 logprobs를 공개하지 않지만, 오픈 모델에 Y/N 한 토큰으로 답하게 하고 logit 차이를 읽으면 됩니다. 여러 질문은 독립적으로 묻고 공통 문맥을 앞에 두면 캐시를 활용할 수 있습니다.
    • @Renaud — Jev의 차별점은 질문에 답하는 기능 자체가 아니라 평가 속도와 낮은 비용이라고 생각합니다. 그 덕분에 새로운 사용 방식이 열립니다.
  • @jubilanti — 구조화 출력과 제약된 스키마는 오래전부터 있었고, logprobs를 내는 오픈 모델은 키마다 확률 분포를 줄 수 있습니다. 제가 놓친 게 있나요? 저는 DeepSeek Flash로 지원 티켓 1만 건을 1달러 미만에 분류하고, 실시간 흐름에 넣어야 하는 경우 지연 시간도 1초 미만입니다.
    • @fooker — 가격과 속도 차이입니다. MacBook Pro로 서보 모터를 제어할 수는 있지만, 배포에는 Arduino나 더 싼 마이크로컨트롤러를 쓸 수 있습니다.
  • @qtalen — 로컬에 배포할 의사결정 모델을 찾고 있었는데 마침 나타났습니다. 감사합니다.

원문: Hacker News / 번역·요약: Trawling