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 指令放在最前面是為了方便閱讀。