삼태연구소
SAMTAELABS삼태연구소
가이드2026년 5월 16일·8분 읽기

whichllm: 내 GPU에서 실제로 잘 돌아가는 로컬 LLM을 한 줄로 찾는 법 (github.com)

로컬LLMwhichllmGPU선택LLM추천GGUFllama.cppHuggingFace온디바이스AI모델퀀타이즈CLI도구
whichllm: 내 GPU에서 실제로 잘 돌아가는 로컬 LLM을 한 줄로 찾는 법
목차(4)

한줄 요약

파라미터 수가 아닌 실제 벤치마크로, 내 GPU에 맞는 최적 로컬 LLM을 한 줄 명령어로 찾아주는 도구.

어떤 상황에서 필요한가?

로컬 LLM을 직접 돌려보려는 개발자라면 한 번쯤 이 상황을 겪는다. HuggingFace에서 모델을 찾고, VRAM이 맞는지 계산해보고, 다운로드했더니 OOM이 뜨거나, 돌아가도 너무 느려서 쓸 수 없는 경우다. 더 근본적인 문제는 "VRAM에 들어가는 모델 중 어떤 게 실제로 가장 좋은가"라는 질문에 답해주는 도구가 없다는 점이다.

흔히 하는 실수가 파라미터 수로 모델 품질을 판단하는 것이다. RTX 4090(24GB)을 쓴다면 32B 모델이 들어가지만, whichllm은 27B 모델인 Qwen3.6-27B를 1순위로 추천한다. 이유는 단순하다. 실제 벤치마크 점수가 더 높고 더 최신 세대이기 때문이다. 크기 기반 도구라면 32B를 먼저 내밀었을 것이다.

whichllm은 이 판단을 자동화한다. GPU/CPU/RAM을 자동 감지하고, HuggingFace에서 실시간으로 모델 목록을 가져온 뒤, 여러 벤치마크를 합산한 점수로 순위를 매겨 출력한다. 구매 전 시뮬레이션도 된다. whichllm --gpu "RTX 5090" 한 줄로 아직 갖고 있지 않은 GPU 기준 추천 결과를 미리 확인할 수 있다.

핵심 구현 방법

설치와 기본 사용

가장 빠른 방법은 uvx를 쓰는 것이다. 별도 설치 없이 바로 실행된다.

uvx whichllm

영구 설치를 원하면 아래 중 하나를 선택한다.

uv tool install whichllm   # uv
brew install andyyyy64/whichllm/whichllm  # Homebrew
pip install whichllm       # pip

주요 명령어 패턴

실무에서 자주 쓸 만한 명령어를 정리하면 다음과 같다.

# 내 하드웨어 자동 감지 후 추천
whichllm

# 특정 GPU 시뮬레이션 (구매 전 검토)
whichllm --gpu "RTX 4090"

# 코딩용 모델만 추천
whichllm --profile coding --top 5

# 최소 속도 필터 (30 t/s 이상만)
whichllm --min-speed 30

# JSON 출력으로 파이프라인 연결
whichllm --json | jq '.models[0].model_id'

# Ollama와 즉시 연동
whichllm --top 1 --json | jq -r '.models[0].model_id' | xargs ollama run

# 특정 모델을 돌리려면 어떤 GPU가 필요한지 역산
whichllm plan "llama 3 70b"

whichllm run 명령어는 추천된 모델을 바로 다운로드해서 채팅 세션까지 열어준다. uv로 격리된 환경을 자동 구성하기 때문에 의존성 충돌 걱정이 없다. whichllm snippet은 선택한 모델에 대한 바로 실행 가능한 Python 코드를 출력한다. 프로토타이핑 속도가 체감상 크게 달라진다.

점수 산정 방식

점수는 0~100 사이로 산출되며, 핵심 요소는 벤치마크 품질과 모델 크기다. 여기에 퀀타이즈 패널티, 증거 신뢰도 가중치, 런타임 적합도, 속도, 출처 신뢰도, 인기도가 조정 인자로 작용한다.

벤치마크 소스는 LiveBench, Artificial Analysis, Aider, 멀티모달/비전 지수, Chatbot Arena ELO, Open LLM Leaderboard를 합산한다. 중요한 점은 벤치마크 증거 수준을 5단계(directvariantbase_modelline_interpself_reported)로 구분하고, 각 단계별로 신뢰도를 할인한다는 것이다. 업로더가 자가 보고한 점수는 ×0.55 수준으로 크게 깎인다.

또 하나 주목할 부분은 최신성 보정이다. 오래된 리더보드 점수는 모델 계보를 따라 자동으로 강등되기 때문에, 2024년 모델이 구식 점수로 현세대 모델을 앞서는 상황이 발생하지 않는다.

실전에서 주의할 점

MoE 모델의 속도 해석

MoE(Mixture of Experts) 모델은 속도와 품질 계산 기준이 다르다. whichllm은 속도는 활성 파라미터 기준으로, 품질 점수는 전체 파라미터 기준으로 계산한다. 예를 들어 Qwen3-30B-A3B가 102 t/s로 보이는 건 전체 30B가 아닌 활성 파라미터 3B 수준으로 동작하기 때문이다. 속도 숫자만 보고 품질을 오해하지 않도록 주의해야 한다.

부분 오프로드 상황

VRAM이 모자랄 때 일부 레이어를 RAM으로 오프로드하는 경우, 점수에 ×0.72 페널티가 적용된다. CPU 전용 실행은 ×0.50이다. 이는 실제 체감 성능 저하를 반영한 합리적인 설계지만, 숫자만 보면 같은 모델이 하드웨어에 따라 점수가 크게 달라 보일 수 있다.

캐시 TTL 관리

모델 목록은 6시간, 벤치마크는 24시간 캐시된다. HuggingFace 모델 생태계가 빠르게 바뀌는 상황에서 캐시가 오래됐다면 --refresh 플래그로 강제 갱신할 수 있다. 반대로 오프라인 환경이나 API rate limit 상황에서는 큐레이션된 폴백 데이터로 자동 전환된다.

Apple Silicon에서의 제약

Apple Silicon과 CPU 전용 환경에서는 안정성을 이유로 GGUF 포맷만 지원한다. AWQ나 GPTQ 포맷을 쓰려면 Linux + NVIDIA 조합이 필요하다. M3 Max(36GB)에서 Qwen3.6-27B Q5_K_M을 돌리면 점수는 89.4로 높지만 속도는 ~9 t/s 수준이다. 대화형 용도라면 허용 범위지만, 배치 처리 목적이라면 GPU 서버를 고려해야 한다.

자주 묻는 질문

Q.VRAM이 충분한데 왜 더 큰 모델 대신 작은 모델이 1순위로 뜨는가?

whichllm은 단순히 VRAM에 들어가는 최대 크기 모델을 추천하지 않는다. 실제 벤치마크 점수, 모델 세대, 추론 속도를 종합해서 순위를 매기기 때문에 더 작아도 점수가 높은 최신 세대 모델이 상위에 오를 수 있다. 예를 들어 RTX 4090 환경에서 32B 모델이 들어가도 27B 모델이 1순위인 이유는 실제 벤치마크 점수가 더 높기 때문이다. 크기 기반 추천과 품질 기반 추천의 결과가 다른 것이 이 도구의 존재 이유다.

Q.벤치마크 점수 옆에 `~` 표시가 뜨는 경우는 어떻게 해석해야 하는가?

`~` 표시는 해당 모델에 대한 직접적인 벤치마크 데이터가 없어서 동일 모델 패밀리의 점수를 상속받거나 보간한 값임을 의미한다. 이 경우 증거 신뢰도에 따라 점수가 자동으로 할인된 상태다. 점수 자체는 참고할 수 있지만, 같은 점수라도 직접 측정된 모델보다 불확실성이 높다는 점을 감안해야 한다. 정확한 데이터가 필요하다면 `--evidence strict` 또는 `--direct` 플래그로 직접 측정된 모델만 필터링할 수 있다.

Q.`whichllm plan` 명령어는 어떤 상황에서 유용한가?

특정 모델을 반드시 돌려야 하는 상황에서 어떤 하드웨어가 필요한지 역산할 때 쓴다. 예를 들어 `whichllm plan "llama 3 70b"` 를 실행하면 해당 모델을 어떤 퀀트로 돌리려면 VRAM이 얼마나 필요한지 계산해준다. GPU 구매를 계획 중이거나 클라우드 인스턴스 스펙을 결정할 때 실질적인 근거 자료로 활용할 수 있다. `--context-length` 옵션으로 컨텍스트 길이에 따른 KV 캐시 VRAM 영향도 함께 확인할 수 있다.

직접 따라하기 어려우면, 대표 개발자가 1:1로 진행해드립니다

누적 매출 20억 / 1인 에이전시. 중간 과정 없이 의도 그대로.

관련 아티클

관련 사례

이 글의 키워드와 맞닿은 실제 개발 사례를 함께 보세요.