Skip to content

Modelfile는 Ollama를 사용하여 맞춤형 모델을 생성하고 공유하기 위한 청사진입니다.

목차

형식

Modelfile의 형식:

# comment
INSTRUCTION arguments
지시어설명
FROM (필수)사용할 기본 모델을 정의합니다.
PARAMETEROllama가 모델을 실행하는 방식에 대한 매개변수를 설정합니다.
TEMPLATE모델에 전송될 전체 프롬프트 템플릿입니다.
SYSTEM템플릿에 설정될 시스템 메시지를 지정합니다.
ADAPTER모델에 적용할 (Q)LoRA 어댑터를 정의합니다.
LICENSE법적 라이선스를 지정합니다.
MESSAGE메시지 기록을 지정합니다.
REQUIRES모델에 필요한 최소 Ollama 버전을 지정합니다.

예시

기본 Modelfile

마리오 청사진을 생성하는 Modelfile 예시입니다:

FROM llama3.2
# 온도를 1로 설정합니다 [값이 높을수록 창의적이고, 낮을수록 일관성이 높습니다]
PARAMETER temperature 1
# 컨텍스트 창 크기를 4096으로 설정합니다. 이는 LLM이 다음 토큰을 생성하기 위해 컨텍스트로 사용할 수 있는 토큰 수를 제어합니다
PARAMETER num_ctx 4096

# 채팅 어시스턴트의 동작을 지정하기 위해 사용자 정의 시스템 메시지를 설정합니다
SYSTEM You are Mario from super mario bros, acting as an assistant.

사용 방법:

  1. 파일로 저장합니다 (예: Modelfile)
  2. ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>
  3. ollama run choose-a-model-name
  4. 모델 사용을 시작합니다!

특정 모델의 Modelfile을 확인하려면 ollama show --modelfile 명령을 사용하세요.

shell
ollama show --modelfile llama3.2
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this one, replace the FROM line with:
# FROM llama3.2:latest
FROM /Users/pdevine/.ollama/models/blobs/sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29
TEMPLATE """{{ if .System }}&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;

{{ .System }}&lt;|eot_id|&gt;{{ end }}{{ if .Prompt }}&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;

{{ .Prompt }}&lt;|eot_id|&gt;{{ end }}&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;

{{ .Response }}&lt;|eot_id|&gt;"""
PARAMETER stop "&lt;|start_header_id|&gt;"
PARAMETER stop "&lt;|end_header_id|&gt;"
PARAMETER stop "&lt;|eot_id|&gt;"
PARAMETER stop "&lt;|reserved_special_token"

지시어

FROM (필수)

FROM 지시어는 모델 생성 시 사용할 기본 모델을 정의합니다.

FROM &lt;model name&gt;:&lt;tag&gt;

기존 모델 기반 빌드

FROM llama3.2
Base Models

사용 가능한 기본 모델 목록

Base Models

추가 모델은 다음에서 확인할 수 있습니다.

Safetensors 모델 기반 빌드

FROM &lt;model directory&gt;

모델 디렉터리에는 지원되는 아키텍처에 대한 Safetensors 가중치가 포함되어야 합니다.

현재 지원되는 모델 아키텍처:

  • Llama (Llama 2, Llama 3, Llama 3.1, Llama 3.2 포함)
  • Mistral (Mistral 1, Mistral 2, Mixtral 포함)
  • Gemma (Gemma 1, Gemma 2 포함)
  • Phi3

GGUF 파일 기반 빌드

FROM ./ollama-model.gguf

GGUF 파일 위치는 절대 경로로 지정하거나 Modelfile 위치를 기준으로 한 상대 경로로 지정해야 합니다.

매개변수

PARAMETER 지시어는 모델 실행 시 설정할 수 있는 매개변수를 정의합니다.

PARAMETER &lt;parameter&gt; &lt;parametervalue&gt;

유효한 매개변수와 값

매개변수설명값 유형사용 예시
num_ctx다음 토큰을 생성하는 데 사용되는 컨텍스트 창의 크기를 설정합니다. (기본값: 2048)intnum_ctx 4096
repeat_last_n반복을 방지하기 위해 모델이 과거를 얼마나 뒤까지 참조할지 설정합니다. (기본값: 64, 0 = 비활성화, -1 = num_ctx)intrepeat_last_n 64
repeat_penalty반복에 대한 패널티 강도를 설정합니다. 값이 높을수록(예: 1.5) 반복에 더 강한 패널티를 적용하고, 값이 낮을수록(예: 0.9) 더 관대합니다. (기본값: 1.1)floatrepeat_penalty 1.1
temperature모델의 온도입니다. 온도를 높이면 모델이 더 창의적으로 답변합니다. (기본값: 0.8)floattemperature 0.7
seed생성에 사용할 난수 시드를 설정합니다. 특정 숫자로 설정하면 동일한 프롬프트에 대해 모델이 동일한 텍스트를 생성합니다. (기본값: 0)intseed 42
stop사용할 중지 시퀀스를 설정합니다. 이 패턴이 감지되면 LLM은 텍스트 생성을 중지하고 반환합니다. Modelfile에서 여러 개의 별도 stop 매개변수를 지정하여 여러 중지 패턴을 설정할 수 있습니다.stringstop "AI assistant:"
num_predict텍스트 생성 시 예측할 최대 토큰 수입니다. (기본값: -1, 무한 생성)intnum_predict 42
draft_num_predict초안 모델을 사용할 수 있는 경우 단계별로 예측할 추측 초안 토큰의 최대 수입니다. 별도의 초안 모델의 기본값은 4이며, 내장 MTP 텐서는 이 매개변수를 설정해야 합니다. 0으로 설정하면 추측 초안 생성을 비활성화합니다.intdraft_num_predict 4
top_k무의미한 텍스트가 생성될 확률을 낮춥니다. 값이 높을수록(예: 100) 더 다양한 답변을 생성하고, 값이 낮을수록(예: 10) 더 보수적인 답변을 생성합니다. (기본값: 40)inttop_k 40
top_ptop-k와 함께 작동합니다. 값이 높을수록(예: 0.95) 더 다양한 텍스트를 생성하고, 값이 낮을수록(예: 0.5) 더 집중적이고 보수적인 텍스트를 생성합니다. (기본값: 0.9)floattop_p 0.9
min_ptopp의 대안으로, 품질과 다양성의 균형을 보장하는 것을 목표로 합니다. _p 매개변수는 가장 가능성 높은 토큰의 확률을 기준으로, 토큰이 고려되기 위한 최소 확률을 나타냅니다. 예를 들어 p=0.05이고 가장 가능성 높은 토큰의 확률이 0.9인 경우, 0.045보다 작은 로짓은 필터링됩니다. (기본값: 0.0)floatmin_p 0.05

템플릿

모델에 전달될 전체 프롬프트 템플릿의 TEMPLATE입니다. 선택적으로 시스템 메시지, 사용자 메시지, 모델의 응답을 포함할 수 있습니다. 참고: 구문은 모델마다 다를 수 있습니다. 템플릿은 Go 템플릿 구문을 사용합니다.

템플릿 변수

변수설명
&#123;&#123;.System&#125;&#125;사용자 정의 동작을 지정하는 데 사용되는 시스템 메시지입니다.
&#123;&#123;.Prompt&#125;&#125;사용자 프롬프트 메시지입니다.
&#123;&#123;.Response&#125;&#125;모델의 응답입니다. 응답을 생성할 때 이 변수 이후의 텍스트는 생략됩니다.
TEMPLATE """{{ if .System }}&lt;|im_start|&gt;system
{{ .System }}&lt;|im_end|&gt;
{{ end }}{{ if .Prompt }}&lt;|im_start|&gt;user
{{ .Prompt }}&lt;|im_end|&gt;
{{ end }}&lt;|im_start|&gt;assistant
"""

시스템 메시지

SYSTEM 지시어는 해당되는 경우 템플릿에 사용될 시스템 메시지를 지정합니다.

SYSTEM """&lt;system message&gt;"""

어댑터

ADAPTER 지시어는 기본 모델에 적용해야 하는 미세 조정된 LoRA 어댑터를 지정합니다. 어댑터의 값은 절대 경로이거나 Modelfile을 기준으로 한 상대 경로여야 합니다. 기본 모델은 FROM 지시어로 지정해야 합니다. 기본 모델이 어댑터가 미세 조정된 원본 기본 모델과 다를 경우 동작이 불안정해집니다.

Safetensor 어댑터

ADAPTER &lt;path to safetensor adapter&gt;

현재 지원되는 Safetensor 어댑터:

  • Llama (Llama 2, Llama 3, Llama 3.1 포함)
  • Mistral (Mistral 1, Mistral 2, Mixtral 포함)
  • Gemma (Gemma 1, Gemma 2 포함)

GGUF 어댑터

ADAPTER ./ollama-lora.gguf

라이선스

LICENSE 지시어를 사용하면 이 Modelfile과 함께 사용되는 모델이 공유 또는 배포되는 법적 라이선스를 지정할 수 있습니다.

LICENSE """
&lt;license text&gt;
"""

메시지

MESSAGE 지시어를 사용하면 모델이 응답할 때 사용할 메시지 기록을 지정할 수 있습니다. 여러 번의 MESSAGE 명령을 사용하여 대화를 구축하면 모델이 유사한 방식으로 답변하도록 안내할 수 있습니다.

MESSAGE &lt;role&gt; &lt;message&gt;

유효한 역할

역할설명
system모델에 시스템 메시지를 제공하는 대체 방법입니다.
user사용자가 물어볼 수 있는 예시 메시지입니다.
assistant모델이 응답해야 하는 방식의 예시 메시지입니다.

예시 대화

MESSAGE user Is Toronto in Canada?
MESSAGE assistant yes
MESSAGE user Is Sacramento in Canada?
MESSAGE assistant no
MESSAGE user Is Ontario in Canada?
MESSAGE assistant yes

요구 사항

REQUIRES 지시어를 사용하면 모델에 필요한 최소 Ollama 버전을 지정할 수 있습니다.

REQUIRES &lt;version&gt;

버전은 유효한 Ollama 버전이어야 합니다 (예: 0.14.0).

참고 사항

  • Modelfile은 대소문자를 구분하지 않습니다. 예시에서는 지시어와 인수를 쉽게 구분하기 위해 대문자 지시어를 사용했습니다.
  • 지시어는 어떤 순서로든 사용할 수 있습니다. 예시에서는 가독성을 높이기 위해 FROM 지시어를 첫 번째로 배치했습니다.