Ollama Modelfile 실전 설정, 시스템 지침·컨텍스트·메모리를 함께 조정하는 법

로컬 AI 워크스테이션과 빈 노트가 놓인 책상에서 Ollama 모델 설정을 구성하는 장면 1

AI를 활용하여 생성한 이미지입니다.

Ollama에서 모델을 바꿀 때마다 같은 시스템 지침과 옵션을 다시 입력하고 있다면, 먼저 Modelfile로 고정할 조건과 요청마다 바꿀 조건을 나누는 편이 좋습니다. Modelfile은 모델을 새로 학습시키는 파일이 아니라, 기반 모델 위에 실행 규칙과 프롬프트 형식을 묶어 두는 설정 청사진입니다.[1] 설정을 많이 넣는 것보다 재현해야 할 조건을 선별하는 일이 먼저입니다.

Modelfile에서 고정할 것과 요청에 남길 것

구성 역할 기본값으로 둘 때
FROM 기반 모델과 태그를 지정합니다. 모델 프로필을 만들 때 필수입니다.
PARAMETER temperature, num_ctx 같은 실행 기본값입니다. 프로젝트 전체에서 반복되는 기본 동작일 때 적합합니다.
SYSTEM 역할, 독자, 금지 조건을 지정합니다. 여러 요청에서 공통으로 지켜야 할 때 유용합니다.
TEMPLATE·MESSAGE 프롬프트 형식과 예시 대화를 지정합니다. 기반 모델의 요구 형식을 확인했을 때만 건드립니다.

Ollama 문서에서 FROM은 Modelfile의 필수 항목입니다.[1] 따라서 처음에는 기반 모델과 SYSTEM만 둔 작은 파일을 만들고, 실제 요구가 생길 때 PARAMETER를 한 항목씩 추가하는 방식이 안전합니다. 한 파일에 글쓰기, 코드 검토, 긴 문서 요약의 지침을 모두 넣으면 어떤 규칙이 결과를 바꿨는지 추적하기 어려워집니다.

최소 설정을 만들고 이름으로 목적을 구분하기

FROM qwen2.5:7b
PARAMETER temperature 0.2
PARAMETER num_ctx 8192
SYSTEM """
한국어 기술 문서를 읽고 확인된 사실과 추론을 구분해 설명합니다.
모르는 값은 추정하지 않고 필요한 조건을 먼저 질문합니다.
"""

파일을 Modelfile로 저장했다면 다음처럼 별도 모델 이름을 만들 수 있습니다.

ollama create tech-ko -f ./Modelfile
ollama run tech-ko
ollama show --modelfile tech-ko

FROM에 적은 모델과 태그가 로컬에 실제로 설치돼 있어야 합니다. 태그가 바뀌거나 기반 모델을 지웠다면 생성이 실패할 수 있으므로, 팀에서 공유할 때는 모델 이름과 Ollama 버전, 필요한 라이선스 원문 링크를 함께 기록하세요. ollama show --modelfile 결과를 통째로 덮어쓰기보다 필요한 설정만 새 파일로 옮기면 숨은 변경을 줄일 수 있습니다.

temperature, num_ctx, keep_alive를 분리해서 이해하기

temperature는 출력의 변동성에 영향을 주는 값이고, num_ctx는 한 요청에서 사용할 컨텍스트 창의 기본값입니다. 긴 문서를 넣는다고 temperature를 올릴 이유는 없습니다. 사실 추출이나 코드 검토는 낮은 temperature와 충분한 컨텍스트를 별도로 정하는 쪽이 설명하기 쉽습니다. Ollama FAQ는 기본 컨텍스트 창을 4096토큰으로 설명하고 실행 옵션이나 환경 설정으로 바꿀 수 있다고 안내합니다.[2]

컨텍스트를 32K로 키우면 긴 자료를 담을 여지는 커지지만, 모델 크기와 동시에 처리하는 요청 수까지 메모리를 사용합니다. 큰 값이 모든 질문의 정확도를 보장하는 것도 아닙니다. 짧은 질의는 기본값을 쓰고, 긴 문서만 요청 단위로 올리는 정책이 관리하기 좋습니다.

curl http://localhost:11434/api/generate -d '{
  "model": "tech-ko",
  "prompt": "문서를 요약해줘",
  "options": {"num_ctx": 16384},
  "keep_alive": "10m"
}'

위 요청처럼 기본 Modelfile을 바꾸지 않고 특정 호출의 options.num_ctx만 조정할 수 있습니다. 로컬 API를 사용하는 프로그램에서는 실제 요청 JSON과 모델 이름을 로그에 남겨, 어떤 설정으로 결과가 나왔는지 확인하세요.[3]

keep_alive는 모델을 메모리에 얼마나 남겨 둘지 정합니다. FAQ에 따르면 시간 문자열, 초 단위 숫자, 음수로 계속 유지, 0으로 즉시 해제하는 방식을 사용할 수 있습니다.[2] 한 모델을 연속 호출하는 개발 세션은 조금 길게 둘 수 있지만, 여러 모델을 번갈아 쓰거나 메모리가 빠듯하면 짧게 두거나 일회성 호출 뒤 해제하는 편이 낫습니다. ollama ps로 상주 모델과 상태를 확인하지 않고 컨텍스트만 키우면 첫 요청 뒤 다음 요청이 대기할 수 있습니다.

TEMPLATE를 수정하기 전에 확인할 순서

대부분의 설정은 FROM, PARAMETER, SYSTEM만으로 시작할 수 있습니다. TEMPLATE은 기반 모델이 기대하는 대화 형식을 바꾸므로, 역할 토큰이나 메시지 변수를 모른 채 수정하면 답변이 잘리거나 역할 구분이 깨질 수 있습니다.

  1. 기본 모델로 고정 질문을 실행해 기준 결과를 남깁니다.
  2. Modelfile에서는 SYSTEM만 바꿔 차이를 확인합니다.
  3. 출력 형식이 깨질 때만 기반 모델의 템플릿을 확인합니다.
  4. 변경마다 새 모델 이름이나 커밋을 남겨 이전 상태로 돌아갈 수 있게 합니다.

응답이 갑자기 짧아졌다면 먼저 TEMPLATE보다 프롬프트와 출력 제한을 확인하세요. 모델이 로드되지 않으면 FROM의 태그와 설치 상태를 보고, 메모리 부족이면 keep_alive: 0인 요청으로 다시 확인합니다. 여러 모델이 남아 있다면 ollama stop 모델명으로 비운 뒤 같은 입력을 실행하면 원인 분리가 쉬워집니다.

프로필을 나누고 회귀 확인하기

같은 기반 모델을 글쓰기와 코드 검토에 모두 쓰더라도 하나의 파일에 모든 규칙을 넣을 필요는 없습니다. tech-ko-codetech-ko-summary처럼 목적을 이름에 넣으면 어떤 프로필이 긴 컨텍스트와 메모리를 쓰는지 바로 보입니다. 비밀키나 개인정보를 SYSTEM 문구에 넣어 모델 이름과 함께 공유하는 일은 피해야 합니다.

Modelfile을 고친 뒤 질문 하나만 보고 좋아졌다고 결론내리지 마세요. 사실 추출, 긴 입력, 금지 조건, 구조화 출력처럼 성격이 다른 고정 입력을 준비하고 이전 프로필과 새 프로필을 차례로 비교합니다. 답변 형식, 누락 여부, 첫 응답까지의 시간, 전체 처리 시간, 메모리 상태를 기록하되 공식 문서에 없는 성능 수치는 환경별 결과로만 다뤄야 합니다.

설정 우선순위와 공유 범위 정하기

팀에서 Modelfile을 공유할 때는 파일의 기본값과 요청이 덮어쓸 수 있는 값을 문서로 구분하세요. 공통 SYSTEM 지침과 모델 태그는 파일에 두고, 특정 문서만 긴 컨텍스트가 필요한 경우에는 요청의 options.num_ctx로 처리하는 식입니다. 같은 파라미터를 파일과 호출 양쪽에 넣으면 실제 적용값을 로그 없이는 알기 어렵습니다.

설정 변경 기록에는 모델 태그, Ollama 버전, 운영체제, 주요 파라미터, 입력 종류를 남기세요. 파일만 복사해도 기반 모델이 다른 컴퓨터에 없거나 태그가 바뀌면 같은 결과를 재현할 수 없습니다. 라이선스와 모델 배포 조건도 원문 링크로 관리하고, SYSTEM 문구에 API 키나 개인정보를 넣어서는 안 됩니다.

메모리가 부족한 경우 컨텍스트만 낮추는 것이 유일한 해결책은 아닙니다. 상주 중인 다른 모델을 정리하고, 동시에 들어오는 요청 수를 줄이고, 긴 문서를 조각으로 처리하는 선택지를 함께 비교하세요. 한 번에 하나씩 바꾼 기록이 있어야 속도 저하와 응답 품질 저하를 구분할 수 있습니다.

자주 묻는 질문

컨텍스트를 크게 고정하면 더 좋은가요?

항상 그렇지는 않습니다. 긴 입력이 실제로 필요한 작업만 요청 단위로 늘리고, 메모리와 동시 요청 수를 함께 확인하세요.[2]

Modelfile이 모델을 재학습시키나요?

아닙니다. 기반 모델 위에 실행 파라미터와 시스템 지침, 프롬프트 형식을 묶는 설정 파일입니다.[1]

여러 모델을 동시에 써도 되나요?

가능하지만 상주 시간과 컨텍스트 창이 겹치면 메모리 압박이 커질 수 있습니다. ollama ps와 요청 로그를 보면서 프로필을 나누세요.

설정 파일을 배포하기 전에는 새 컴퓨터에서 FROM 모델을 받을 수 있는지, SYSTEM 지침에 환경 의존 경로가 없는지, 요청별 옵션이 예상대로 적용되는지 확인하세요. 이 세 가지를 확인하면 파일은 같은데 결과가 다를 때 설정 차이와 실행 환경 차이를 나누어 볼 수 있습니다.

Sources

  1. [1] Ollama Documentation, Modelfile Reference
  2. [2] Ollama Documentation, FAQ
  3. [3] Ollama 로컬 Generate API 엔드포인트 예시

함께 읽을 글