핵심 요약
llama.cpp 3.0이 Metal 백엔드 재작성으로 M4 Max에서 처리량을 평균 38% 끌어올렸다. 단일 요청 70B Q4_K_M 모델에서 48 tok/s, 8B 모델 동시 4 세션에서 합산 230 tok/s. 노트북 한 대로 소규모 사내 챗봇을 충분히 운영할 수 있는 시점에 왔다.
1. 측정 환경
MacBook Pro M4 Max 16/40코어, 128GB 통합 메모리, macOS 15.4. llama.cpp 3.0.0, KV cache q8_0, batch 512. 모델은 Llama 3.3 8B / 70B, Qwen 3 32B 비교.
2. 단일 요청 처리량
| 모델 · 양자화 | tok/s | VRAM(통합) |
|---|---|---|
| Llama 3.3 8B Q4_K_M | 118 | 5.1GB |
| Llama 3.3 8B Q8_0 | 91 | 8.4GB |
| Qwen 3 32B Q4_K_M | 62 | 19GB |
| Llama 3.3 70B Q4_K_M | 48 | 42GB |
| Llama 3.3 70B Q5_K_M | 32 | 50GB |
3. 동시 세션 — continuous batching
3.0부터 continuous batching이 안정화. 8B Q4 모델 기준 동시 4 세션 합산 230 tok/s, 8 세션은 280 tok/s까지 오르다 9세션 이후 KV 메모리로 throttle. 사내 50명 동시 사용 챗봇은 8B로 충분.
4. KV 캐시 양자화
# --cache-type-k q8_0 --cache-type-v q8_0
# 70B 모델에서 KV 메모리 절반, 품질 손실 거의 없음
# q4_0까지 떨어뜨리면 긴 컨텍스트에서 환각 증가, 권장 X
5. 서빙 — llama-server + nginx
llama.cpp의 OpenAI 호환 server를 launchd로 띄우고 nginx로 사내 도메인 reverse proxy. systemd-style supervision이 필요하면 plistwatch나 pm2 활용. CORS·rate-limit은 nginx 단에서 처리.
6. 발열·소음
지속 부하 시 팬은 돌지만 4000 RPM 이내. 본체 표면 최대 46℃. 책상 위에서 견딜 만한 수준이지만, 24/7 운영은 Mac mini M4 Pro 클러스터를 권장.
7. 비용 비교
| 구성 | 초기 | 월 전기료(24h) | 월 토큰가(API 환산) |
|---|---|---|---|
| M4 Max 128GB | $4,800 | $8 | API 환산 $620 상당 |
| RTX 4090 24GB 단독 | $3,500 | $32 | API 환산 $580 |
| OpenAI gpt-4o-mini API | $0 | $0 | ~$200/월(동일 트래픽) |
일 5,000 요청 이하의 개인·소형 팀은 여전히 API가 합리적. 데이터 외부 송출이 안 되는 환경에서 M4 Max 한 대의 가치가 커진다.
자주 묻는 질문
Q. MLX 대비 llama.cpp 장점? MLX는 단일 요청 속도는 비슷하나 멀티 세션·OpenAI 호환 서버·양자화 호환성에서 llama.cpp가 앞선다.
Q. Whisper도 같이 돌릴 수 있나? 가능. whisper.cpp + small-q5 모델로 실시간 STT 동시 운영 시 LLM 처리량 12% 감소.

댓글 0