메뉴
HN
Hacker News • 53일 전

홈벤치: 로컬 LLM 속도·메모리·성능 벤치마크

IMP
8/10
핵심 요약

홈벤치(Homebench)는 사용자의 PC에 설치된 로컬 LLM(Ollama, LM Studio 등)의 속도, 메모리 사용량, 품질을 측정하여 실시간 터미널 리더보드로 보여주는 도구입니다. 복잡한 설정이나 클라우드 API 키 없이 단 한 줄의 명령어로 실행되어, 개발자가 자신의 하드웨어 환경에 맞는 최적의 로컬 모델을 빠르고 직관적으로 찾을 수 있게 해줍니다.

번역된 본문

원문 제목: Homebench – Benchmark local LLMs for speed, memory, and quality (로컬 LLM의 속도, 메모리, 품질 벤치마크) 소스: hackernews

본문: homebench는 현재 보유한 로컬 LLM의 속도, 메모리, 품질을 실시간 터미널 리더보드 형태로 벤치마크해 줍니다. homebench는 단일 명령어 기반 TUI(텍스트 사용자 인터페이스) 툴입니다. 로컬 모델 러너(Ollama, LM Studio, llama.cpp, vLLM 또는 모든 OpenAI 호환 서버)에 설치된 모델을 자동으로 찾아내고, 엄선된 품질 평가 테스트를 실행하며, 실제 사용자의 머신에서 초당 토큰 수(tokens/sec), 첫 토큰 응답 시간(TTFT), 메모리 사용량을 측정한 뒤 실시간 비교 리더보드를 그려줍니다.

pip install homebench
homebench

명령어 딱 두 줄이면 됩니다. 별도의 설정도, API 키도, 클라우드 연결도 필요하지 않습니다.

왜 이 도구가 필요한가? 이 문제와 관련하여 각각의 절반만 해결하는 훌륭한 도구들은 존재하지만, 로컬 환경에 초점을 맞춰 이 모든 것을 해결하는 도구는 없었습니다. 예를 들어, llama.cpp의 내장 도구인 'llama-bench'는 오직 속도만 측정합니다. 또한 'lm-evaluation-harness'는 품질을 측정하지만 일반 사용자 친화적인 UI가 부족하며 대중들이 로컬에서 주로 사용하는 모델 러너들을 기준으로 설계되지 않았습니다. homebench가 바로 이 공백을 메워줍니다: 로컬 우선(local-first), 제로 설정(zero-config), 그리고 뛰어난 사용자 경험(UX)을 제공합니다. 저장소를 복제(clone)하여 실행하고 이미 다운로드한 모델들을 가리키기만 하면, "내 로컬 모델 중 어느 것이 실제로 좋은가? 그리고 이 노트북에서 얼마나 빠르게 동작하는가?"라는 질문에 한눈에 답을 얻을 수 있습니다.

측정 항목 지표 | 측정 방식 tok/s | 생성된 출력 토큰 수 ÷ 생성 시간. Ollama는 서버 측 평가 시간을 보고하고, OpenAI 호환 백엔드는 토큰 스트림을 기준으로 클라이언트 측에서 시간을 측정합니다. 프롬프트 처리 및 모델 로드 시간은 제외됩니다. TTFT | 첫 번째 스트리밍 토큰이 생성될 때까지의 실제 경과 시간(러너가 보고하는 경우 모델 로드 시간 제외). 메모리(Memory) | 러너가 정보를 제공하는 경우(Ollama /api/ps, LM Studio /api/v0) 상주 모델 크기(Resident model size)를 측정하며, 백엔드 프로세스의 최대 RSS(물리 메모리 사용량) 샘플링을 최선을 다해 추가 측정합니다. 품질(Quality) | 수학, 추론, 사실적 회상, 지시사항 준수/구조화된 출력, 정보 추출 및 코드 이해 영역에 걸쳐 결정론적으로 점수가 매겨지는 31개의 태스크로 구성됩니다. 선택적으로 'LLM-as-judge' 기능을 사용하면 요약, 이메일 작성, 하이쿠(단시), 설명 등의 개방형 태스크를 추가할 수 있습니다.

설치 방법

pip install homebench
# 설치 후 실행:
homebench

격리된 환경에 설치하는 것을 선호하신다면 pipx를 사용하세요:

pipx install homebench

또는 소스 코드에서 직접 설치할 수도 있습니다:

git clone https://github.com/david-g-3654/homebench
cd homebench
pip install .

참고: Python 3.9 이상이 필요합니다.

사용법 homebench # 빠른 기본 실행: 가장 작은 3개 모델, 빠른 평가 제품군 실행 (TUI 모드) homebench --all # 탐색된 모든 모델 벤치마크 homebench --full # 전체 품질 평가 제품군 실행 (빠른 서브셋만 실행하지 않음) homebench --no-tui # 일반 실시간 렌더러 (파이프 및 CI 환경에 적합) homebench -m llama3.2,qwen3:8b # 특정 모델만 실행 homebench --limit 3 # 모델 수 제한 homebench --provider lmstudio # 자동 감지 대신 LM Studio 사용 homebench --provider llamacpp # llama.cpp 서버(llama-server) 사용 homebench --provider vllm # vLLM 사용 homebench --provider openai --host http://localhost:5000 # 모든 OpenAI 호환 서버 지정 homebench --refresh-cache # 캐시된 응답을 재사용하지 않고 다시 계산 homebench --no-quality # 속도 및 메모리만 측정 (빠름) homebench --no-speed # 품질만 측정 homebench --judge qwen3:8b # LLM-as-judge 활성화 (개방형 태스크 추가) homebench --tasks mypack.yaml # 내장 제품군 대신 커스텀 태스크 팩 사용 homebench --add-tasks mypack.yaml # 내장 제품군에 커스텀 팩 추가 homebench --label " before tuning " # 나중에 비교(diff)하기 위해 이번 실행에 태그 지정 homebench --md results.md # 마크다운 보고서로 내보내기 homebench --json results.json # 원시 JSON 형태로 내보내기 homebench list # 탐색된 모델 목록만 출력 homebench tasks # 품질 평가 제품군 표시 (--tasks로 팩 미리보기 가능) homebench history # 과거 실행 기록 목록 (자동 저장됨) homebench diff # 가장 최근 두 번의 실행 기록 비교 homebench diff 3 1 # 3번 실행(기준)과 1번 실행(최신) 비교 homebench throughput # 배치 처리량 스윕 (동시 실행 1, 2, 4, 8) homebench throughput --concurrency 1,8,16 --provider vllm # vLLM을 이용한 특정 동시성 테스트 homebench fit # 내 하드웨어에 인기 있는 모델 중 어떤 것을 구동할 수 있는지 확인

전체 옵션 목록을 보려면 homebench --help를 실행하세요.

예시 출력 Ollama를 통해 Apple M1(16 GB) 머신에서 실제로 빠른 평가 제품군(quick-suite)을 실행한 결과입니다: 최종 리더보드 ┏━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━━┓ ┃ # ┃ 모델 ┃ 파라미터 ┃ 품질 ┃ 통과 ┃ tok/s ┃ TTFT ┃ 메모리 ┃ ┡━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━╇━━━━━━━

원문 보기
원문 보기 (영어)
homebench Benchmark the local LLMs you already have — speed, memory, and quality — as a live terminal leaderboard. homebench is a single-command TUI that discovers the models installed in your local runner ( Ollama , LM Studio , llama.cpp , vLLM , or any OpenAI-compatible server), runs a curated quality suite, measures tokens/sec , time-to-first-token , and memory footprint on your actual machine , and renders a live comparison leaderboard. pip install homebench homebench That's it. No config, no API keys, no cloud. Why There are great tools for one half of this problem, but nothing local-first that does both: llama-bench (inside llama.cpp) measures speed only . lm-evaluation-harness measures quality but has no polished laptop UX and isn't built around the model runners most people actually use locally. homebench fills the gap: local-first, zero-config, UX-driven. Clone-and-run, point it at the models you already pulled, and get an at-a-glance answer to "which of my local models is actually good, and how fast is it on this laptop?" What it measures Metric How tok/s Output tokens ÷ generation time. Ollama reports server-side eval timing; OpenAI-compatible backends are timed client-side from the token stream. Excludes prompt processing and model load. TTFT Wall-clock time to the first streamed token (minus model-load time where the runner reports it). Memory Resident model size when the runner exposes it (Ollama /api/ps , LM Studio /api/v0 ), plus a best-effort peak-RSS sample of the backend's processes. Quality 31 deterministically-graded tasks across math, reasoning, factual recall, instruction-following/structured-output, extraction, and code understanding. Optional LLM-as-judge adds open-ended tasks (summaries, email, haiku, explanations). Install pip install homebench # then run: homebench Prefer an isolated install? Use pipx : pipx install homebench Or from source: git clone https://github.com/david-g-3654/homebench cd homebench pip install . Requires Python 3.9+ . Usage homebench # fast default: 3 smallest models, quick suite (TUI) homebench --all # benchmark every discovered model homebench --full # run the full quality suite (not just the fast subset) homebench --no-tui # plain live renderer (great for piping / CI) homebench -m llama3.2,qwen3:8b # only these models homebench --limit 3 # cap the number of models homebench --provider lmstudio # use LM Studio instead of auto-detect homebench --provider llamacpp # llama.cpp server (llama-server) homebench --provider vllm # vLLM homebench --provider openai --host http://localhost:5000 # any OpenAI-compatible server homebench --refresh-cache # recompute instead of reusing cached responses homebench --no-quality # speed + memory only (fast) homebench --no-speed # quality only homebench --judge qwen3:8b # enable LLM-as-judge (adds open-ended tasks) homebench --tasks mypack.yaml # use a custom task pack instead of the built-in suite homebench --add-tasks mypack.yaml # add a pack on top of the built-in suite homebench --label " before tuning " # tag this run for later diffing homebench --md results.md # also export a Markdown report homebench --json results.json # also export raw JSON homebench list # just list discovered models homebench tasks # show the quality suite (add --tasks to preview a pack) homebench history # list past runs (saved automatically) homebench diff # diff the two most recent runs homebench diff 3 1 # diff run #3 (base) against run #1 (newer) homebench throughput # batch-throughput sweep (concurrency 1,2,4,8) homebench throughput --concurrency 1,8,16 --provider vllm homebench fit # which popular models fit YOUR hardware? Run homebench --help for the full flag list. Example output A real quick-suite run on an Apple M1 (16 GB), via Ollama: Final leaderboard ┏━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━━┓ ┃ # ┃ Model ┃ Params ┃ Quality ┃ Pass ┃ tok/s ┃ TTFT ┃ Memory ┃ ┡━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━━┩ │ 1 │ llama3.2:latest │ 3.2B │ 75% │ 6/8 │ 16.8 │ 545 ms │ 2.4 GB │ │ 2 │ alibayram/smollm3 │ 3.1B │ 38% │ 3/8 │ 16.9 │ 829 ms │ 2.1 GB │ └───┴──────────────────────┴────────┴─────────┴──────┴───────┴────────┴────────┘ (Numbers are for that laptop at that moment — see Limitations .) Providers At least one local model runner must be reachable: Provider --provider Default host Host env var Notes Ollama ollama http://localhost:11434 OLLAMA_HOST Native API; reports model memory via /api/ps . LM Studio lmstudio http://localhost:1234 LMSTUDIO_HOST Enriches metadata + memory via native /api/v0 . llama.cpp llamacpp http://localhost:8080 LLAMACPP_HOST llama-server , OpenAI-compatible. vLLM vllm http://localhost:8000 VLLM_HOST Set VLLM_API_KEY if started with --api-key . OpenAI-compatible openai — OPENAI_BASE_URL Any /v1 server (Jan, LocalAI, TGI, …); pass --host . Auto-detection tries Ollama → LM Studio → llama.cpp → vLLM (the generic openai provider is explicit-only). Force one with --provider . Override host with --host or the env var above. How quality grading works The suite is small on purpose — enough tasks across categories to separate models, few enough that every model runs in a couple of minutes on a laptop. Each task is graded deterministically (exact numeric match, multiple-choice letter, substring, valid-JSON, regex). Temperature is 0 and a fixed seed is used for reproducibility. See homebench tasks for the list. The optional --judge MODEL flag turns on an LLM-as-judge (any local model) that scores open-ended tasks 1–5 against a reference answer. It's a signal, not an oracle. Fast by default Benchmarking every model on the full suite takes a while on a laptop, so the defaults are tuned for a quick first look: 3 smallest models by default (smallest first, so results appear fast) — --all for everything, -m to choose. A fast quality subset (~8 tasks across all categories) — --full for all 31. Response caching : quality runs use temperature 0 + a fixed seed, so responses are deterministic and cached under ~/.homebench . Re-running only regenerates new models/tasks (unchanged ones are re-graded from cache in milliseconds); --refresh-cache forces recompute, --no-cache disables it. In practice this turns a first run from ~15–25 min (all models, full suite) into ~1–2 min, and a re-run into seconds. For a thorough pass (CI, final numbers) use homebench --all --full . Custom task packs Bring your own evals with a JSON or YAML pack — no Python required. --tasks replaces the built-in suite; --add-tasks appends to it. YAML needs the optional extra ( pip install "homebench[yaml]" ); JSON works out of the box. # mypack.yaml — homebench --tasks mypack.yaml name : my-pack tasks : - id : capital_japan category : factual prompt : " What is the capital of Japan? Answer with just the city name. " grader : {type: contains_any, values: ["Tokyo"]} reference : Tokyo - id : add category : math prompt : " What is 12 + 30? End with the answer on its own line. " grader : {type: exact_number, value: 42} - id : explain # no grader -> open-ended, scored only with --judge category : open prompt : " Explain photosynthesis in one sentence. " reference : " Plants convert sunlight, water, and CO2 into glucose and oxygen. " Grader type values: exact_number ( value , tol ), multiple_choice ( value ), contains_any ( values ), regex ( pattern , ignorecase ), valid_json ( keys ), valid_json_array ( length ). Omit grader for a judge-only task. Runnable examples live in examples/ ; preview any pack with homebench tasks --tasks mypack.yaml . History & diffing Every run is saved automatically to $HOMEBENCH_HOME/runs (default ~/.homebench/runs ); disable with --no-save , and tag runs with --label . homebench history # table of past runs (newest first) homebench diff # previous run -> latest homebench diff 3 # run #3 -> latest homebench diff 3 1 # run #3 (base) -> run #1 (newer) diff compares models by name and shows per-model deltas in quality and t