로컬 환경에서 Ollama로 오픈소스 LLM(Llama 3, Qwen, Gemma 등)을 구동하다 보면, 기본 설정값 그대로 썼을 때 긴 문서 요약 시 이전 맥락이 싹둑 잘리거나, GPU VRAM이 애매하게 부족해 모델이 멋대로 시스템 RAM(CPU)으로 밀려나며 답변 속도가 심각하게 느려지는 현상을 겪게 됩니다.

매번 실행할 때마다 파라미터나 시스템 지침을 일일이 입력하지 않고, Modelfile을 생성해 모델 자체에 최적화 세팅을 박아두고 쓰는 핵심 노하우 3가지 정리해 둡니다.

1. PARAMETER num_ctx로 기본 2048 컨텍스트 길이 확장하기

Ollama의 기본 컨텍스트 윈도우는 2048 토큰으로 꽤 타이트하게 잡혀 있습니다. 긴 코드나 긴 문서를 입력하면 앞쪽 내용이 잘려 엉뚱한 소리를 하기 십상입니다. Modelfile에 'PARAMETER num_ctx 8192' (또는 16384)를 명시해 두면 모델이 긴 맥락을 온전히 기억합니다. 컨텍스트를 늘릴수록 KV 캐시 메모리가 추가로 소모되므로, 그래픽카드 VRAM 용량(12GB~16GB 기준 8192~16384 적정)에 맞춰 설정하는 것이 안전합니다.

2. PARAMETER num_gpu로 GPU 오프로딩 레이어 수동 제어하기

기본 자동 감지는 VRAM이 1~2GB라도 모자라면 전체 연산 중 절반 이상을 CPU로 넘겨버려 추론 속도가 초당 2~3토큰 수준으로 곤두박질칩니다. 이때 Modelfile에 'PARAMETER num_gpu 33'처럼 전체 레이어(예: 32~40개) 중 GPU에 올릴 레이어 수를 직접 지정해 두면, VRAM을 한계까지 알뜰하게 채워 넣고 남은 몇 개 레이어만 CPU로 분산시켜 속도 저하를 최소화할 수 있습니다.

3. SYSTEM 프롬프트와 PARAMETER temperature 0.2 내장하기

코딩이나 업무용 분석 모델은 답변이 들쭉날쭉하면 실전에서 쓰기 어렵습니다. Modelfile에 'PARAMETER temperature 0.2'와 'PARAMETER top_p 0.9'를 고정하고, SYSTEM """...""" 구문으로 한국어 응답 원칙과 답변 서식을 미리 빌드해 두면, 클라이언트 앱이나 웹 UI에서 매번 시스템 프롬프트를 따로 세팅하지 않아도 항상 일관되고 정제된 답변을 얻을 수 있습니다.

Modelfile 작성 후 'ollama create 내모델명 -f ./Modelfile' 명령어로 한 번만 빌드해 두면 기존 가중치를 공유하므로 추가 디스크 용량 부담도 없습니다. 로컬 LLM 돌리면서 매번 프롬프트 다시 넣거나 메모리 부족으로 헤매셨던 분들은 세팅 점검해 보시면 좋을 것 같습니다.