nokia-applied-research/AnyJev

Turn any LLM into a Jev-style decision model: typed decisions, real probabilities, no training. (continue updating, welcome any issue and PR request)

📦 AnyJev – 모든 LLM을 보정된 결정 모델로 전환

AnyJev(Any Jev)는 오픈소스 LLM에 유형화된 질문(예: 객관식, 예/아니오, 숫자 평가)을 하고 모델의 next‑token 로짓에서 직접 확률 기반 결정을 받을 수 있는 Python 라이브러리입니다. 텍스트를 생성하지 않으며, 미세 조정이 필요 없고, 제로 라벨 예제로도 작동합니다. 수백 개의 라벨이 있으면 더 높은 정확도의 "L2" 헤드로 업그레이드할 수 있으며, 실행 비용은 본질적으로 단일 전방 패스와 같습니다.


🎯 어떤 문제를 해결하나요?

  • LLM의 원시 로짓은 불안정합니다 – 답변 옵션의 순서를 바꾸면 모델의 예측이 바뀌는 경우가 많고, 신뢰 점수도 제대로 보정되지 않습니다.
  • 점수를 신뢰할 수 없기 때문에 대부분의 파이프라인은 인간 검토로 폴백하여 리소스를 낭비합니다.
  • AnyJev는 세 가지 수준의 보정을 제공합니다:
    • L0 – 옵션 순서 편향을 제거하는 제로 라벨 보정.
    • L1 – 질문당 100-500개 라벨을 사용하는 온도 스케일링.
    • L2 – 100-300개 라벨로 훈련된 폐쇄형 선형 헤드(축소 LDA / ridge). 단일 절단 전방 패스 비용으로 보정된 확률을 제공합니다.

🚀 빠른 시작(README에서)

pip install "anyjev[hf]"
from anyjev import Decider, Question
from anyjev.backends.hf import HFBackend

d = Decider(HFBackend("Qwen/Qwen3-8B"))

# 유형화된 질문 정의
route = Question.choice(
    "어느 팀이 이 작업을 처리해야 하나요?",
    ["billing", "technical", "sales", "other"],
    name="route"
)
risky = Question.noul("이 도구 호출이 파괴적인가요?", name="risky")
done  = Question.score("작업 완료도는?", bins=5, name="done")

# 결정 실행
state = {"conversation": [...], "tool_call": {...}}
result = d.decide(state, [route, risky, done])
print(result["route"].distribution)   # {'billing': 0.81, 'technical': 0.07, ...}
print(result["risky"].p_true)          # 0.12
print(result["done"].value)            # 0.35
print(result.level)                     # "L0"

나중에 라벨을 추가하여 L1/L2로 업그레이드:

# 질문에 대해 100‑500개의 라벨 예제 수집
d.calibrate(risky, states, labels)      # L1 – 온도 스케일링
d.fit_head(route, states, labels)       # L2 – 폐쇄형 헤드

d.save_artifacts("qwen3-8b.json")      # 헤드 저장(≈100 KB)

이제 d.decide(..., level="auto")는 헤드가 있으면 자동으로 L2를 사용하고, 그렇지 않으면 L1 또는 L0으로 폴백합니다.


🧠 작동 방식(높은 수준)

수준 필요한 라벨 기능 하지 않는 것
raw 없음 각 옵션의 토큰 로짓에 대한 soft‑max를 반환합니다(순진한 기준선). 편향 보정이나 보정은 전혀 하지 않습니다.
L0 없음 옵션 목록을 K번 회전시키고 로짓을 평균화하고 추정된 라벨 사전 분포로 나눕니다. 순서 반전 편향을 제거합니다. 모델의 불확실성을 통계적으로 보정하지 않습니다.
L1 질문당 100‑500 L0 위에 온도 스케일링을 피팅합니다. 옵션의 순위를 변경하지 않습니다.
L2 질문당 100‑300 모델 깊이의 약 ⅔ 지점의 은닉 상태에서 폐쇄형 선형 헤드(축소 LDA / ridge)를 풉니다. 입력당 한 번의 프롬프트, 서빙 시 저렴한 행렬 곱셈. 재피팅 없이는 다른 질문이나 모델로 전송할 수 없습니다.

L2 헤드는 [hidden, K] 행렬, 편향, 표준화 벡터, 온도를 포함하는 작은 아티팩트(≈100 KB)입니다. CPU에서 몇 초 만에 계산되며 단일 절단 전방 패스(예: 36블록 모델의 블록 24에서 중지)로 추론에 사용됩니다.


📊 보고된 결과(BANKING77 20-way 벤치마크에서 Qwen3‑8B)

메트릭 원시 로짓 AnyJev L0(제로 라벨) AnyJev L1(100‑500 라벨) AnyJev L2(100‑300 라벨)
답변 순서 반전률 0.230 0.073 0.077 –
정확도 0.747 0.803 0.807 –
기대 보정 오차 0.240 0.184 0.095 –
자동 결정 가능 @ ≤5 % 오류(안전하게 자동화할 수 있는 트래픽 비율) 7.7 % 46.3 % 52.0 % –

지연 시간: L2의 비용은 Qwen3‑8B에서 전체 전방 패스의 ≈0.68×(프롬프트 하나를 조기 중지). L0는 K번의 프리필이 필요합니다(H100에서 K=20일 때 결정당 약 0.25 초).


🛣️ 로드맵(README 기준)

  • ✅ 단일 프리필로 choice, noul, score 질문 구현.
  • ✅ L0(제로 라벨) 및 L1 아티팩트, 수준 강제.
  • ✅ L2 폐쇄형 헤드, 자동 라벨 프리 적응, observe 루프.
  • ✅ 5개의 Qwen3 모델용 사전 구축 헤드 및 데모 CLI.
  • ⏳ 모든 결정을 더 저렴하게 만드는 속도 최적화.
  • ⏳ vLLM / SGLang을 통한 서빙 지원(고정 블록에서 잔차 스트림 사용).
  • ⏳ 실제 에이전트 내에서 LLM을 대체하는 전체 에이전트 루프 평가.
  • ⏳ 헤드용 공개 허브, 대화형 Space, 기술 보고서.
  • ⏳ 더 많은 기본 모델(Llama, Gemma, Mistral, DeepSeek) 및 더 큰 옵션 세트(>26)로 확장.

⚠️ 제한 사항(명시적으로 나열)

  • 정확도는 교사 LLM에 대해 측정되며, 인간의 골드 스탠다드가 아닙니다.
  • L2 헤드는 질문별, 모델별로 고유합니다. 질문 간 또는 다른 모델로 전송할 수 없습니다(현재 Qwen3 헤드만 제공).
  • 보정은 모델이 작업(예: 미로 탐색, 지뢰 찾기)에 단순히 답할 수 없는 경우를 보상할 수 없습니다.
  • 하나의 라벨이 사전 분포를 지배하는 경우 L0는 정확도를 해칠 수 있습니다.
  • 이 라이브러리는 현재 선택당 최대 26개 옵션을 지원합니다(스팬 판독 계획 중).
  • 5 % 위험에서의 커버리지 추정치는 n = 300 테스트 항목에서 분산이 큽니다.
  • 모든 결정은 엔드투엔드 에이전트 루프 내가 아닌 단독으로 평가됩니다.

📦 설치 및 라이선스

  • 선택적 Hugging‑Face 백엔드로 설치: pip install "anyjev[hf]".
  • 패키지는 PyPI(anyjev)에 게시되어 있으며 Python 3.8+를 지원합니다.
  • 라이선스: Apache‑2.0.

📚 추가 자료 및 인용

  • 전체 메서드 설명: docs/method_v3.md.
  • 벤치마크: docs/results_bench.md, docs/results_exit.md.
  • 데모 스크립트: demo/jev_mode, demo/games(2048, 지뢰 찾기).
  • 인용:
@software{anyjev2026,
  title  = {AnyJev: Turn any LLM into a Jev-style decision model},
  author = {Zhang, Jiamu and Yang, Tianze and Shi, Yucheng and Wu, Liang},
  year   = {2026},
  url    = {https://github.com/nokia-applied-research/AnyJev}
}

결론: AnyJev는 모든 오픈소스 LLM의 원시적이고 노이즈가 많은 로짓을 신뢰할 수 있고 확률적으로 보정된 결정으로 변환하는 실용적이고 라벨이 필요 없는 방법을 제공하며, 경량 폐쇄형 헤드(L2)로 최소한의 추론 비용으로 최첨단에 가까운 정확도를 제공합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트