TL;DR
LogitScope는 토큰별 확률분포에서 정보이론 지표를 계산해 LLM의 불확실성, 예측 품질, 대안 선택을 정량적으로 분석하는 Python framework입니다. 모델의 logits를 Softmax 확률로 바꾼 뒤 surprisal, entropy, varentropy, skewentropy, perplexity, probability를 계산하고 결과를 필요할 때 평가해 캐시합니다. HuggingFace causal language model과 호환되며 Python API와 웹 UI에서 토큰별 지표, 상위 후보 토큰, 분포 변화를 확인할 수 있습니다. 이를 활용하면 hallucination이 의심되는 구간 탐지, prompt 비교, Fine-tuning 전후 평가, 배포 중 모델 성능 모니터링을 수행할 수 있습니다.
섹션별 상세
from transformers import AutoModelForCausalLM, AutoTokenizer
from logitscope import LogitScope
# Load model and tokenizer
model = AutoModelForCausalLM.from_pretrained('HuggingFaceTB/SmolLM2-135M-Instruct')
tokenizer = AutoTokenizer.from_pretrained('HuggingFaceTB/SmolLM2-135M-Instruct')
# Initialize LogitScope
scope = LogitScope(tokenizer, model, device='cpu')
# Analyze text
results = scope.measure('The quick brown fox jumps over the lazy dog')
# Access metrics as arrays
print(f"Surprisal: {results.surprisal}")
print(f"Entropy: {results.entropy}")
print(f"Varentropy: {results.varentropy}")
# Iterate over tokens with metrics
# Use repr() to show escape sequences (\
, \\t, etc.) in CLI output
for token in results.iter_tokens(['surprisal', 'entropy', 'perplexity']):
print(
f"{repr(token['token']):15s} | "
f"surprisal={token['surprisal']:.3f} | "
f"entropy={token['entropy']:.3f} | "
f"perplexity={token['perplexity']:.3f}"
)
# Inspect top-k alternatives at specific positions
# repr() makes special characters visible
top_tokens = results.top_k(index=5, k=10)
for token, prob in top_tokens:
print(f"{repr(token):15s} {prob:.4f}")HuggingFace causal language model을 불러온 뒤 입력 문장에서 토큰별 정보 지표와 상위 후보 토큰을 계산합니다.
uv pip install -e .웹 UI 없이 Python API만 사용하는 LogitScope를 editable 방식으로 설치합니다.
uv pip install -e ".[ui]"대화형 웹 UI에 필요한 선택 의존성까지 포함해 LogitScope를 설치합니다.
python -m logitscope.ui --model HuggingFaceTB/SmolLM2-135M-Instruct --device cpu지정한 모델과 CPU를 사용해 LogitScope 웹 인터페이스를 실행합니다.
python -m logitscope.ui --model MODEL_NAME --device cudaCUDA 가속을 사용해 지정한 모델의 실시간 분석 UI를 실행합니다.
용어 해설
- 엔트로피(Entropy)
- — 확률분포가 여러 토큰에 얼마나 넓게 퍼져 있는지를 나타내는 불확실성 지표입니다. 특정 위치에서 각 토큰의 확률이 비슷하게 분산되면 값이 커지고, 하나의 토큰에 확률이 집중되면 값이 작아집니다. 모델의 확신이 낮은 위치를 찾는 데 사용됩니다.
- 분산 엔트로피(Varentropy)
- — 각 후보 토큰의 surprisal 값이 얼마나 넓게 퍼져 있는지를 측정하는 지표입니다. 단순한 평균 불확실성보다 여러 선택지가 서로 다른 수준으로 경쟁하는 분포를 포착합니다. 모델이 뚜렷한 대안들 사이에서 갈등하는 위치를 찾는 데 유용합니다.
- 놀람도(Surprisal)
- — 실제로 선택된 토큰의 확률을 음의 로그로 변환한 값으로, 해당 토큰이 문맥에서 얼마나 예상 밖이었는지를 나타냅니다. 토큰 확률이 낮을수록 surprisal은 커집니다. 생성 결과에서 통계적으로 드문 토큰이나 잠재적 오류를 찾는 데 활용됩니다.
- 혼란도(Perplexity)
- — 시퀀스 전체에서 토큰 예측이 얼마나 잘 맞았는지를 누적해서 나타내는 지표입니다. 평균 surprisal을 지수화해 계산하며 값이 낮을수록 모델이 입력 시퀀스를 더 자연스럽게 예측했다는 뜻입니다. 모델 비교와 배포 환경의 성능 변화 추적에 사용됩니다.
- 로짓(Logits)
- — 언어 모델이 다음 토큰 후보마다 출력하는 Softmax 이전의 점수입니다. LogitScope는 이 원시 점수에 Softmax를 적용해 전체 vocabulary에 대한 확률분포를 만들고, 그 위에서 불확실성과 예측 품질 지표를 계산합니다. 확률 변환 전 모델의 선택 구조를 분석하는 출발점입니다.
기술
- Python
- PyTorch
- Transformers
- NumPy
- FastAPI
- Uvicorn
- HuggingFaceTB/SmolLM2-135M-Instruct
- CUDA
- MPS
- uv
활용 사례
- Hallucination 의심 구간 탐지
- Production monitoring
- Fine-tuning 전후 평가
- Prompt engineering 비교
- Ablation study
- Calibration 연구
- 모델 응답 비교
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.