소비자용 하드웨어에서 LLM 실행하기 — 파트 1: 스택 및 첫 번째 벤치마크
요약
소비자용 하드웨어에서 로컬 LLM을 실행하기 위한 소프트웨어 스택과 벤치마크 결과를 다룹니다. Ollama와 양자화 기술을 활용하여 Gemma 4 26B 모델을 구동하고, 처리량과 품질 사이의 최적점을 찾는 과정을 기록합니다.
핵심 포인트
- Ollama를 활용해 AMD(ROCm) 및 NVIDIA(CUDA) 환경 구축
- Gemma 4 26B 모델의 양자화 및 VRAM 최적화 설정 적용
- 처리량(Tokens/sec)과 출력 품질 간의 트레이드오프 분석
- 소비자용 GPU 환경에서의 레이어 분할 실행 전략
이 글은 클라우드 API를 통하는 대신 직접 소유한 소비자용 하드웨어에서 모델을 실행하는 로컬 LLM 프로젝트를 기록하는 빌드 로그 포스트 시리즈의 첫 번째 글입니다. 이번 게시물에서는 하드웨어, 소프트웨어 스택(software stack), 그리고 주요 모델을 선정하기 위해 수행한 벤치마크(benchmarks)를 다룹니다.
하드웨어
두 대의 머신이 사용되었으며, 모두 소비자용 등급입니다. 아래 보고된 모든 벤치마크는 기본 데스크톱에서 얻은 결과입니다.
| 머신 | CPU | RAM | GPU |
|---|---|---|---|
| 기본 데스크톱 (Primary desktop) | Ryzen 5950X | ~80 GB DDR4 | AMD RX 6900XT (16 GB) |
| 보조 박스 (Secondary box) | Ryzen 5600G | 32 GB | NVIDIA GTX 1060 (6 GB) |
소프트웨어 스택
Ollama는 두 가지 GPU 벤더에 걸쳐 모델 러너(model runner) 역할을 합니다. 기본 데스크톱의 AMD 카드를 위해서는 ROCm 5.7을 사용하고, 보조 박스의 NVIDIA 카드를 위해서는 CUDA를 사용합니다.
주요 모델은 Gemma 4 26B로, 약 3.8B의 활성 파라미터(active parameters)를 가진 전문가 혼합(mixture-of-experts) 모델이며, Q4_K_M으로 양자화(quantized)되어 디스크에서 약 18 GB를 차지합니다. RX 6900XT에서는 Q4 가중치와 KV 캐시(KV cache)가 사용 가능한 VRAM 16 GB를 초과하기 때문에, 자동 GPU/CPU 레이어 분할 방식으로 실행됩니다. 여유 공간을 확보하기 위해 flash attention과 8비트(q8_0) KV 캐시와 같은 여러 Ollama 설정이 활성화되었으며, 후자는 캐시 점유 공간을 약 절반으로 줄여줍니다. 가끔 발생하는 더 무거운 작업들을 위해 무료 클라우드 티어(free cloud tier)를 유지하고 있지만, 목표는 가능한 한 많은 것을 로컬에서 실행하는 것입니다.
모델 선정: 벤치마크
주요 모델을 선정하기 전에 설치된 모델들에 대한 벤치마크를 수행했습니다. 두 가지 속성에 주목했습니다: 처리량(throughput)과 출력 품질(output quality).
처리량은 500단어 에세이 프롬프트를 사용하여 기본 데스크톱에서 측정되었습니다 (ollama run <model> --verbose):
| 모델 | 초당 토큰 (Tokens/sec) | 소요 시간 (Duration) | 출력 토큰 (Tokens out) |
|---|---|---|---|
| gemma4:26b | 18.86 | 50.11s | 945 |
| ... |
더 작은 모델들은 실질적으로 훨씬 빠릅니다. 하지만 토큰 수는 더 적으며, 실제로 그들의 응답은 그에 따라 더 얕았습니다.
품질은 논리 (logic), 코딩 (coding), 요약 (summarization), 창의적 글쓰기 (creative writing), 그리고 지시 이행 (instruction-following)을 아우르는 5가지 작업 세트로 평가되었습니다:
| 모델 | 점수 | 비고 |
|---|---|---|
| gemma4-26b (64K) | 50/50 | 결점 없는 지시 이행 |
| ... |
이어서 리포그램 (lipogram), 마음 이론 (theory-of-mind) 질문, 그리고 수수께끼를 포함하는 더 어려운 10가지 작업 변형이 실시되었으며, 여기서 Gemma 4 26B는 초당 약 17개의 토큰 (17 tokens/sec)을 유지하면서 100점 만점에 99점을 기록했습니다. 이는 로컬 최적점 (local optimum), 즉 실행 가능한 속도에서 강력한 품질을 보여주는 지점을 나타냅니다.
이어지는 원칙은 처리량 (throughput)과 품질 (quality)은 서로 상충 관계 (trade-off)에 있으며, 사용 가능한 가장 빠른 모델이 실질적인 업무를 위한 적절한 기본값인 경우는 드물다는 것입니다. Gemma 4 26B는 7B 모델들보다 느리지만 현저하게 더 정확하며, 따라서 주요 모델로 채택되었습니다.
향후 내용
실행 도구 (runner), 모델, 그리고 하드웨어 기준점 (baseline)이 설정되었으므로, 다음 항목들은 이 설정으로부터 유용한 작업을 추출하는 데 집중합니다. 우리는 컨텍스트 길이 (context length)와 KV-캐시 (KV-cache) 사이의 상충 관계, 프리필 (prefill)과 생성 (generation)의 차이, 그리고 왜 GPU가 없는 기기가 대화는 유지하면서도 큰 프롬프트 (prompt)에서는 비틀거리는지에 대해 다룰 예정입니다. 또한 콜드 스타트 (cold-start) 재로드 페널티를 피하기 위해 모델을 상주시키는 관행에 대해서도 다룹니다.
측정된 수치는 막다른 길 (dead ends)을 포함하여 있는 그대로 보고되었습니다. 파트 2가 이어질 예정입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기