LOCUS: LLM을 벡터로 압축하는 저차원 Model Embedding 프레임워크
LOCUS: Low-Dimensional Model Embeddings for Efficient Model Exploration, Comparison, and Selection
TL;DR Highlight
수백 개의 LLM 중 최적 모델을 고르는 문제를 '모델을 128차원 벡터로 임베딩'해서 푸는 방법론.
Who Should Read
여러 LLM 중 쿼리에 맞는 모델을 자동으로 라우팅하거나, 비용 대비 최적 모델 조합을 고르고 싶은 MLOps/백엔드 엔지니어. 모델 선택 자동화나 LLM 라우터를 구축 중인 팀에도 유용하다.
Core Mechanics
- 각 LLM의 쿼리 정답 여부(0/1 점수)를 어텐션 레이어로 처리해서 128차원 '모델 임베딩' 벡터 하나로 압축 — 모델 가중치 접근 없이 API 응답만으로 가능
- 새 모델 추가 시 재학습 불필요 — 쿼리 약 128개만 평가하면 기존 임베딩 공간에 바로 배치 (Training-free onboarding)
- 임베딩 간 거리가 모델 능력 차이를 실제로 반영 — Pearson 상관계수 0.887(유클리드 거리 기준)로 정답 불일치율과 강한 양의 상관관계
- 15~20개 모델 포트폴리오만으로 112개 전체 모델 풀의 라우팅 정확도 재현 가능 — k-center/k-medoids 방식으로 임베딩 공간 커버리지 최대화
- 임베딩 거리로 fallback 라우팅 지원 — 선택된 모델이 다운되면 임베딩상 가장 가까운 이웃 모델로 대체, 원래 라우팅 정확도의 85% 유지
- 모델 지문(fingerprinting) 응용 가능 — 다른 API 뒤에 숨은 동일 모델은 독립 샘플링된 쿼리로 임베딩해도 항상 같은 위치에 수렴
Evidence
- LOCUS 라우팅 정확도 64.70% vs EmbedLLM 59.60% vs IRT-Net 63.37% (1024 샘플 기준) — 학습 샘플 4.8배 적게 써도 같은 성능
- 임베딩 거리 ↔ 정답 불일치율 Pearson 상관 0.887(유클리드), Spearman 0.876 — 공간이 기하학적으로 의미 있음을 정량 검증
- 128개 쿼리로 새 모델 임베딩 생성 시 전체 데이터로 학습한 인코더 대비 정확도 차이 1% 미만
- 112개 모델(총 1930B 파라미터) 중 ~150B 파라미터 예산(전체의 8%)만으로 전체 풀 라우팅 정확도에 근접
How to Apply
- LLM 라우터 구축 시: 보유 모델들을 각각 128~256개 벤치마크 쿼리로 평가 → LOCUS 인코더로 임베딩 생성 → 새 쿼리 인코딩과 각 모델 임베딩을 correctness predictor에 넣어 정답 확률 비교 후 가장 높은 모델로 라우팅
- 모델 포트폴리오 축소 시: 전체 모델 임베딩에 k-center 또는 k-medoids 클러스터링 적용 → 임베딩 공간을 커버하는 15~20개 모델 선정 → 나머지 중복 모델 제거해도 라우팅 성능 유지
- 서빙 장애 대비 fallback 설계 시: 미리 각 모델의 임베딩 기준 top-k 이웃 목록을 캐시 → 주 모델 응답 불가 시 1번 이웃으로 자동 전환 (정확도 85% 보전)
Code Example
# LOCUS 활용 예시 (개념 코드)
from sentence_transformers import SentenceTransformer
# 1. 쿼리 인코딩
encoder = SentenceTransformer('all-mpnet-base-v2')
query_embedding = encoder.encode("What is the derivative of x^2?")
# 2. 모델 평가 데이터 준비 (쿼리 임베딩 + 정답 여부)
evaluations = [
{"query_emb": encoder.encode(q), "score": y}
for q, y in zip(sample_queries, correctness_labels) # 128~256개면 충분
]
# 3. LOCUS 인코더로 모델 임베딩 생성 (재학습 불필요)
# github.com/patel-shivam/locus_code_release
model_embedding = locus_encoder.forward(evaluations) # shape: (128,)
# 4. 새 쿼리에 대한 정답 확률 예측 → 라우팅
scores = {
model_name: locus_predictor(model_embedding, query_embedding)
for model_name, model_embedding in model_pool.items()
}
best_model = max(scores, key=scores.get)
# 5. 포트폴리오 축소: k-center로 15개 선택
from sklearn.metrics import pairwise_distances
# 임베딩 행렬에서 farthest-first sampling으로 대표 모델 15개 선정Terminology
Related Resources
Original Abstract (Expand)
The rapidly growing ecosystem of Large Language Models (LLMs) makes it increasingly challenging to manage and utilize the vast and dynamic pool of models effectively. We propose LOCUS, a method that produces low-dimensional vector embeddings that compactly represent a language model's capabilities across queries. LOCUS is an attention-based approach that generates embeddings by a deterministic forward pass over query encodings and evaluation scores via an encoder model, enabling seamless incorporation of new models to the pool and refinement of existing model embeddings without having to perform any retraining. We additionally train a correctness predictor that uses model embeddings and query encodings to achieve state-of-the-art routing accuracy on unseen queries. Experiments show that LOCUS needs up to 4.8x fewer query evaluation samples than baselines to produce informative and robust embeddings. Moreover, the learned embedding space is geometrically meaningful: proximity reflects model similarity, enabling a range of downstream applications including model comparison and clustering, model portfolio selection, and resilient proxies of unavailable models.