开发者-导航 猿导航

Ollama 模型文件

发布时间:

目录

Ollama 模型文件的结构和配置方法,帮助开发者更好地理解和部署 AI 模型。通过清晰的指南和示例,用户可以快速掌握如何创建和优化模型文件,从而提升模型性能和应用效果

提示

Modelfile语法正在开发中

模型文件是使用 Ollama 创建和共享模型的蓝图。

格式 #

Modelfile的格式:

# comment
INSTRUCTION arguments
指令 描述
FROM(必需) 定义要使用的基本模型。
PARAMETER 设置Ollama运行模型时的参数。
TEMPLATE 要发送到模型的完整提示模板。
SYSTEM 指定模板中要设置的系统消息。
ADAPTER 定义要应用于模型的(Q)LoRA适配器。
LICENSE 指定法律许可证。
MESSAGE 指定模型响应时使用的消息历史记录。

示例 #

基础 Modelfile 文件 #

创建 mario 蓝图的Modelfile示例:

FROM llama3.2
# 将 temperature 设置为 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 命令。

ollama show --modelfile llama3.2

Output:

 # 由“ollama show”生成的模型文件
 # 要基于此文件构建新的模型文件,请将FROM行替换为:
 # FROM llama3.2:latest
 FROM /Users/pdevine/.ollama/models/blobs/sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29
 TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>

 {{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>

 {{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>

 {{ .Response }}<|eot_id|>"""
 PARAMETER stop "<|start_header_id|>"
 PARAMETER stop "<|end_header_id|>"
 PARAMETER stop "<|eot_id|>"
 PARAMETER stop "<|reserved_special_token"

指令 #

FROM(必需) #

FROM指令定义创建模型时要使用的基本模型。

FROM <模型名称>:<标签>

从现有模型构建 #

FROM llama3.2

可用基本模型列表:
https://github.com/ollama/ollama#model-library
可在以下位置找到更多模型:
https://ollama.com/library

从Safetensors模型构建 #

FROM <模型目录>

模型目录应包含支持架构的Safetensors权重。

当前支持模型架构:

从GGUF文件构建 #

FROM ./ollama-model.gguf

GGUF文件位置应指定为绝对路径或相对于Modelfile位置。

PARAMETER #

PARAMETER 指令定义在运行模型时可以设置的参数。

PARAMETER <参数> <参数值>

有效参数和值 #

参数 描述 值类型 示例用法
mirostat 启用Mirostat采样以控制困惑度。(默认:0,0 = 禁用,1 = Mirostat,2 = Mirostat 2.0) int mirostat 0
mirostat_eta 影响算法对生成文本的反馈的响应速度。较低的速率将导致调整较慢,而较高的速率将使算法更敏感。(默认:0.1) float mirostat_eta 0.1
mirostat_tau 控制输出的一致性和多样性之间的平衡。较低的值将导致更专注和一致性的文本。(默认:5.0) float mirostat_tau 5.0
num_ctx 设置用于生成下一个标记的上下文窗口大小。(默认:2048) int num_ctx 4096
repeat_last_n 设置模型回溯多远以防止重复。(默认:64,0 = 禁用,-1 = num_ctx) int repeat_last_n 64
repeat_penalty 设置对重复的惩罚强度。较高的值(例如,1.5)将更强烈地惩罚重复,而较低的值(例如,0.9)将更宽容。(默认:1.1) float repeat_penalty 1.1
temperature 模型的温度。增加温度将使模型的回答更具创造力。(默认:0.8) float temperature 0.7
seed 设置用于生成的随机数种子。将此设置为特定数字将使模型对相同的提示生成相同的文本。(默认:0) int seed 42
stop 设置要使用的停止序列。当遇到此模式时,LLM将停止生成文本并返回。可以通过在modelfile中指定多个单独的stop参数来设置多个停止模式。 string stop "AI assistant:"
num_predict 生成文本时要预测的最大标记数。(默认:-1,无限生成) int num_predict 42
top_k 减少生成无意义文本的概率。较高的值(例如100)将提供更多样化的答案,而较低的值(例如10)将更保守。(默认:40) int top_k 40
top_p 与top-k一起工作。较高的值(例如,0.95)将导致更多样化的文本,而较低的值(例如,0.5)将生成更专注和保守的文本。(默认:0.9) float top_p 0.9
min_p top_p的替代方案,旨在确保质量和多样性的平衡。参数p表示相对于最可能标记的概率,标记被考虑的最小概率。例如,当p=0.05且最可能标记的概率为0.9时,值小于0.045的logits将被过滤掉。(默认:0.0) float min_p 0.05

TEMPLATE #

要传递给模型的完整提示模板的TEMPLATE。它可能包括(可选)系统消息、用户的消息和模型的响应。注意:语法可能是特定于模型的。模板使用Go 模板语法

模板变量 #

变量 描述
{{ .System }} 用于指定自定义行为的系统消息。
{{ .Prompt }} 用户的提示消息。
{{ .Response }} 模型的响应。在生成响应时,此变量后的文本将被省略。
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""

SYSTEM #

SYSTEM指令指定在模板中使用的系统消息(如果适用)。

SYSTEM """<system message>"""

ADAPTER #

ADAPTER指令指定应应用于基本模型的微调LoRA适配器。适配器的值应为绝对路径或相对于Modelfile的路径。基本模型应使用FROM指令指定。如果基本模型与适配器微调的基本模型不同,行为将不稳定。

Safetensor适配器 #

ADAPTER <safetensor适配器路径>

当前支持的Safetensor适配器:

GGUF适配器 #

ADAPTER ./ollama-lora.gguf

LICENSE #

LICENSE指令允许您指定使用此Modelfile的模型共享或分发的法律许可证。

LICENSE """
<许可证文本>
"""

MESSAGE #

MESSAGE指令允许您指定模型响应时使用的消息历史记录。使用多个MESSAGE命令迭代来建立对话,这将引导模型以类似的方式回答。

MESSAGE <角色> <消息>

有效角色 #

角色 描述
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

注释 #