LLM의 토큰 확률 읽어 단일 함수로 선택지 점수 매기기
원제 A single function Jev-like wrapper for LLMs, including vision models
109 포인트댓글 30

Key Point
LLM의 로그프로브를 활용해 단 한 줄의 함수로 복잡한 다중 선택 평가를 빠르게 구현할 수 있으며, 비전 모델도 지원해 실시간 이미지 분석 애플리케이션의 선택지 점수 매김에 즉시 적용 가능하다.
핵심 요약
- LLM API의 로그프로브(logprobs) 기능을 활용해 한 개 토큰만 생성하도록 강제한 후 각 선택지별 확률을 추출하는 기법을 소개했다.
- 상태와 질문을 프롬프트로 보내고 max_completion_tokens를 1로 설정한 후 top_logprobs로 대안 토큰들의 확률을 받으면, 여러 질문이 같은 상태 접두사를 공유할 때 KV 캐시를 활용할 수 있다.
- 이 방식은 텍스트뿐 아니라 비전 모델과도 작동하며, 이미지를 base64로 인코딩해 전송할 수 있도록 Jev 요청 형식에 attachments 필드를 추가했다.
- 웹캠 프레임을 실시간으로 분석하는 예제를 제시했는데, Gemma 4 12B를 RTX 3090에서 실행할 때 초당 약 1프레임(프레임당 3개 질문)의 처리 속도를 달성했고, OpenAI의 gpt-6-luna를 사용했을 때는 약 0.2 FPS였다.
- 제공된 Python 스크립트는 opencv로 웹캠을 캡처해 사람 존재 여부, 실내/실외 판별, 밝기 수준 같은 조건을 일반 텍스트로 기술해 평가하며, 문제별로 선택지·부울·서수 점수 타입을 지원한다.
- llama.cpp와 OpenAI API의 차이를 처리해 llama.cpp는 Chat Completions, OpenAI는 Responses 엔드포인트를 사용하고, 누락된 선택지 확률이 무시할 수 있는 수준인지 검증하는 로직을 포함했다.
- 로컬에서 실행할 경우 Gemma 4 12B QAT 모델(약 7GB)과 멀티모달 프로젝터(약 175MB)를 다운로드해 llama.cpp로 서빙한 후 Python 스크립트로 연결하면 즉시 사용 가능하다.