기록할 값 tg128 의 t/s → 생성 속도, pp512 의 t/s → 프롬프트 처리 속도. 표시된 ± 값은 반복 사이의 흩어짐입니다. 생성한 토큰 수에는 -n 값(128)을 적습니다.
기본 값은 문맥이 거의 비어 있는 상태의 속도입니다. 긴 문맥에서의 속도를 보려면 -d 옵션으로 이미 채워진 문맥 깊이를 줄 수 있지만, 이 옵션은 버전에 따라 다를 수 있으므로 --help 로 확인해 주세요. 이때 문맥 길이에는 -d 값을 적습니다.
실제 서버로 재고 싶을 때의 방법입니다. 서버를 문맥 8192, 동시 슬롯 1로 띄운 뒤 프롬프트 캐시를 끄고 한 번 요청합니다. 응답의 timings 항목에서 값을 읽습니다.
명령 예시 · llama.cpp
llama-server -m ./models/MODEL.gguf -c 8192 -ngl 99 --parallel 1
curl http://127.0.0.1:8080/completion -d '{"prompt":"Explain how a transformer language model works.","n_predict":256,"temperature":0,"cache_prompt":false}' | jq '.timings'
기록할 값 timings 의 predicted_per_second → 생성 속도, prompt_per_second → 프롬프트 처리 속도, predicted_n → 생성한 토큰 수. 문맥 길이에는 -c 값, 동시 요청에는 1을 적습니다.
MLX (mlx_lm)
Apple 실리콘 Mac 용 mlx-lm 패키지입니다. 생성 명령이 끝나면 프롬프트와 생성 속도, 최대 메모리를 한 번에 출력해 줍니다.
--max-tokens 로 생성 길이를 고정하고 --temp 0 으로 무작위성을 줄입니다. 끝에 출력되는 'Prompt: … tokens-per-sec' 와 'Generation: … tokens-per-sec' 줄을 읽습니다.
명령 예시 · MLX
pip install -U mlx-lm
python -m mlx_lm.generate --model mlx-community/MODEL --prompt "Explain how a transformer language model works." --max-tokens 256 --temp 0
기록할 값 Generation 줄의 tokens-per-sec → 생성 속도, Prompt 줄의 tokens-per-sec → 프롬프트 처리 속도, Generation 줄의 tokens 앞 숫자 → 생성한 토큰 수, Peak memory → 최대 메모리 사용(GB). 첫 실행은 모델을 불러오느라 느릴 수 있어 두 번째부터 쓰세요.
최신 mlx-lm 에는 mlx_lm.benchmark 가 있어 프롬프트 길이(-p)와 생성 길이(-g)를 정하고 여러 번(-n) 재 줍니다. 예열을 한 뒤 시행마다의 값과 'Averages' 줄을 출력합니다. 이전 버전에는 없을 수 있으니 설치된 버전에서 되는지 확인해 주세요.
기록할 값 Averages 줄의 prompt_tps → 프롬프트 처리 속도, generation_tps → 생성 속도, peak_memory → 최대 메모리 사용. 생성한 토큰 수에는 -g 값을 적고, 사용한 -p 값은 명령 입력란에 명령과 함께 남겨 주세요. 출력 형식은 버전에 따라 다를 수 있습니다.
Ollama
Ollama 는 --verbose 옵션을 주면 답변 뒤에 속도 통계를 보여 주고, API 응답에는 토큰 수와 걸린 시간이 담겨 있습니다.
--verbose 로 한 번 실행하면 끝에 'prompt eval rate' 와 'eval rate' 가 tokens/s 로 나옵니다. 간단하지만 문맥 길이와 생성 길이를 고정하기 어려워 대략적인 확인용입니다.
명령 예시 · Ollama
ollama run MODEL:TAG --verbose "Explain how a transformer language model works."
기록할 값 eval rate → 생성 속도, prompt eval rate → 프롬프트 처리 속도, eval count → 생성한 토큰 수. 생각 과정(thinking)이 켜진 모델은 그 토큰도 포함되는지 확인해 주세요.
API 로 문맥 길이(num_ctx), 생성 길이(num_predict), 무작위성(temperature)을 고정해 한 번 요청합니다. 응답의 eval_count 와 eval_duration(나노초)으로 생성 속도를 직접 계산합니다. jq 가 필요합니다.
명령 예시 · Ollama
OLLAMA_NUM_PARALLEL=1 ollama serve
curl -s http://localhost:11434/api/generate -d '{"model":"MODEL:TAG","prompt":"Explain how a transformer language model works.","stream":false,"options":{"num_ctx":8192,"num_predict":256,"temperature":0}}' | jq '{gen_tps: (.eval_count / .eval_duration * 1e9), prompt_tps: (.prompt_eval_count / .prompt_eval_duration * 1e9), eval_count, prompt_eval_count}'
기록할 값 출력된 gen_tps → 생성 속도, prompt_tps → 프롬프트 처리 속도, eval_count → 생성한 토큰 수, num_ctx → 문맥 길이. prompt_eval_count 가 아주 작게 나오면 이전 요청의 캐시가 쓰인 것이므로 프롬프트 처리 속도는 믿을 수 없습니다.
동시 요청을 1로 맞추려면 서버를 띄울 때 OLLAMA_NUM_PARALLEL=1 환경 변수를 주고, 같은 시간에 다른 요청이 들어가지 않게 하세요. 기본값은 버전과 환경에 따라 다를 수 있습니다.
흔한 실수
생각 토큰을 포함할지 정하지 않았다추론(생각) 과정을 먼저 출력하는 모델은 그 토큰도 생성 토큰에 들어갈 수 있습니다. 속도 자체는 비슷해도 '답까지 걸린 시간'은 크게 달라지므로, 포함했는지 명령 입력란에 적어 주세요.
프롬프트 캐시가 켜져 있었다같은 프롬프트를 반복하면 엔진이 앞부분을 다시 읽지 않고 저장해 둔 것을 씁니다. 이러면 프롬프트 처리 속도가 비정상적으로 빠르게 나옵니다. 캐시를 끄거나 매번 다른 프롬프트를 쓰세요.
첫 요청까지 평균에 넣었다첫 요청은 모델을 메모리에 올리거나 GPU 를 깨우느라 느립니다. 한 번은 미리 돌려 보고(워밍업), 그다음부터의 값을 쓰세요.
토큰 수를 글자 수로 착각했다토큰은 글자나 단어와 다릅니다. 같은 문장도 모델마다 토큰 수가 다르므로, 속도는 직접 센 글자 수가 아니라 엔진이 알려 주는 토큰 수로 계산된 값을 쓰세요.
서로 다른 양자화·문맥으로 비교했다Q4 와 Q8, 문맥 4096 과 32768 처럼 조건이 다른 값은 같은 줄에 놓고 비교할 수 없습니다. 비교하려면 한 가지만 바꾸고 나머지는 같게 두세요.
동시 요청 수의 의미를 섞었다동시 요청을 2 이상으로 쟀다면, 적은 속도가 요청 하나당 속도인지 전체 합계인지 반드시 명령 입력란에 적어 주세요. 구분이 없으면 비교할 수 없습니다.
열 때문에 느려진 값을 대표값으로 썼다오래 돌리면 발열로 속도가 내려가는 기기가 있습니다. 대표값이 목적이라면 반복 측정의 중앙값을 쓰고, 속도가 계속 내려가는 모습이 보이면 그 사실도 함께 적어 주세요.
다 재셨나요?
결과 화면을 캡처하고 위에서 적어 둔 값과 함께 제출해 주세요. 검수 후 '사용자 제출 · 증거 확인됨' 등급으로 공개합니다.