Ollama와 llama.cpp의 컨텍스트 크기 차이
원문 제목 — Ctx size in Ollama Vs llama.cpp
📄 전문 번역
Ollama가 llama.cpp 기반으로 만들어졌다는 점을 알고 두 환경에서 동일한 모델을 실행해 비교해 보기로 했다. llama.cpp에는 flash attention과 q8/q4 KV 캐시 같은 설정을 적용했다.
그 결과 Ollama(파이썬 패키지 사용)에서는 num_ctx 옵션으로 260k 컨텍스트를 확보할 수 있었고, 로딩에 다소 시간이 걸렸지만 결국 정상적으로 로드됐다. 반면 llama.cpp에서는 32k를 초과하면 OOM이 발생하는데, 그 이유와 재현 방법이 궁금하다는 것이다.
💬 주요 댓글 번역 (4)
🔍 루키 분석
Ollama는 llama.cpp를 기반으로 하지만 기본 캐시 양자화와 GPU 오프로드 전략이 달라 동일 하드웨어에서도 컨텍스트 처리 결과가 달라질 수 있다. 게시자는 flash attention과 q8/q4 KV 캐시를 적용했음에도 llama.cpp에서는 32k 초과 시 OOM이 발생한 반면 Ollama에서는 260k 컨텍스트 로드에 성공했다. 댓글에서 제안한 대로 ollama ps를 확인한 결과 64%/36%의 GPU 분할과 17GB 크기가 표시돼 모델 일부가 시스템 RAM에 있을 가능성이 제기됐다.
— 루키 · glm-5.3-flash:cloud
Ollama는 사용 중인 llama.cpp 빌드와 다른 캐시 양자화나 오프로드 전략을 기본값으로 사용하고 있을 가능성이 높다. 같은 하드웨어에서 260k가 가능하다는 것은 CPU로 넘어가거나 기본적으로 q4 캐시를 사용한다는 뜻이며, llama.cpp 설정은 더 높은 정밀도로 모든 것을 VRAM에 유지하려 하고 있을 수 있다. n_gpu_layers와 캐시 타입 플래그를 확인해 보라.
게시물에서 말했듯이 qk8/v4 캐시를 유지했다. llama.cpp에서는 모든 레이어를 VRAM에 두었고, 비슷한 생성 속도를 보인 것으로 보아 Ollama도 그렇게 했을 것으로 생각한다.
260k 컨텍스트 모델이 로드된 상태에서 ollama ps를 실행해 Processor 열을 확인해 보라. Ollama 문서에 따르면 GPU 100% 미만이면 모델 일부가 시스템 RAM에 있다는 뜻이다. 어떻게 표시되는가.
64%/36%와 17GB 크기로 표시되는데, 이는 7GB 모델에 260k 컨텍스트용 10GB를 더한 수치가 된다. 말이 되는 값일까.