Skip to content

Modelfile 是用來建立與分享使用 Ollama 自訂模型的藍圖。

目錄

格式

Modelfile 的格式:

# 註解
INSTRUCTION 參數
指令描述
FROM(必要)定義要使用的基礎模型。
PARAMETER設定 Ollama 執行模型時的參數。
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 <檔案位置,例如 ./Modelfile>
  3. 執行 ollama run choose-a-model-name
  4. 開始使用模型!

要檢視特定模型的 Modelfile,請使用 ollama show --modelfile 指令。

shell
ollama show --modelfile llama3.2
# 由 "ollama show" 產生的 Modelfile
# 要根據此 Modelfile 建立新的 Modelfile,請將 FROM 行替換為:
# 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 指令用於定義建立模型時要使用的基礎模型。

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

從現有模型建立

FROM llama3.2
基礎模型

可用基礎模型清單

基礎模型

更多模型可在此查閱

從 Safetensors 模型建立

txt
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 指令用於定義執行模型時可設定的參數。

txt
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_p與 top-k 搭配使用。較高的數值(例如 0.95)會產生更多樣化的文字,較低的數值(例如 0.5)則會產生更聚焦、更保守的文字。(預設值:0.9)floattop_p 0.9
min_p作為 top-p 的替代方案,旨在確保品質與多樣性的平衡。參數 p 代表相對於最有可能的權杖機率,某個權杖被考慮的最低機率。例如,當 p=0.05 且最有可能的權杖機率為 0.9 時,數值小於 0.045 的 logits 會被過濾掉。(預設值: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為模型提供 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 指令放在最前面是為了方便閱讀。