Ollama 模型文件
[!注意]
Modelfile
语法正在开发中
模型文件是创建和与 Ollama 共享模型的蓝图。
目录
格式
的Modelfile
:
# comment
INSTRUCTION arguments
指令 | 描述 |
---|---|
FROM (必填) |
定义要使用的基础模型。 |
PARAMETER |
设置 Ollama 如何运行模型的参数。 |
TEMPLATE |
要发送到模型的完整提示模板。 |
SYSTEM |
指定将在模板中设置的系统消息。 |
ADAPTER |
定义要应用于模型的 (Q)LoRA 适配器。 |
LICENSE |
指定合法许可证。 |
MESSAGE |
指定消息历史记录。 |
示例
基本Modelfile
一个Modelfile
创建 Mario 蓝图:
FROM llama3.2
# sets the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1
# sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token
PARAMETER num_ctx 4096
# sets a custom system message to specify the behavior of the chat assistant
SYSTEM You are Mario from super mario bros, acting as an assistant.
要使用它:
- 将其另存为文件(例如
Modelfile
) ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>
ollama run choose-a-model-name
- 开始使用该模型!
要查看给定模型的 Modelfile,请使用ollama show --modelfile
命令。
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 """<|start_header_id|>system<|end_header_id|> <|eot_id|><|start_header_id|>user<|end_header_id|> <|eot_id|><|start_header_id|>assistant<|end_header_id|> <|eot_id|>""" PARAMETER stop "<|start_header_id|>" PARAMETER stop "<|end_header_id|>" PARAMETER stop "<|eot_id|>" PARAMETER stop "<|reserved_special_token"
指令
FROM (必填)
这FROM
指令 定义创建模型时要使用的基本模型。
FROM <model name>:<tag>
从现有模型构建
FROM llama3.2
可用基本型号列表:https://github.com/ollama/ollama#model-library 其他型号可在以下位置找到:https://ollama.com/library
从 Safetensors 模型构建
FROM <model directory>
model 目录应包含受支持架构的 Safetensors 权重。
当前支持的模型架构:
- ParLlama(包括 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 <parameter> <parametervalue>
有效参数和值
参数 | 描述 | 值类型 | 示例用法 |
---|---|---|---|
mirostat | 启用 Mirostat 采样以控制困惑度。(默认值:0、0 = 禁用、1 = Mirostat、2 = Mirostat 2.0) | int | Mirostat 0 系列 |
mirostat_eta | 影响算法响应生成文本的反馈的速度。较低的学习率将导致较慢的调整,而较高的学习率将使算法的响应速度更快。(默认值:0.1) | 浮 | mirostat_eta 0.1 |
mirostat_tau | 控制输出的连贯性和多样性之间的平衡。较低的值将导致文本更集中、更连贯。(默认值:5.0) | 浮 | 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) | 浮 | repeat_penalty 1.1 |
temperature | 模型的温度。提高温度会使模型更有创意地回答。(默认值:0.8) | 浮 | 温度 0.7 |
seed | 设置用于生成的随机数种子。将此设置为特定数字将使模型为同一提示生成相同的文本。(默认值:0) | int | 种子 42 |
stop | 设置要使用的停止序列。遇到此模式时,LLM 将停止生成文本并返回。可以通过指定多个单独的stop 参数。 |
字符串 | 停止 “AI 助手:” |
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) | 浮 | top_p 0.9 |
min_p | 替代top_p,旨在确保质量和多样性的平衡。参数 p 表示相对于最可能标记的概率,考虑标记的最小概率。例如,当 p=0.05 且最可能的标记的概率为 0.9 时,将筛选掉值小于 0.045 的 logit。(默认值:0.0) | 浮 | min_p 0.05 |
模板
TEMPLATE
的完整提示模板。它可能包括(可选)系统消息、用户消息和来自模型的响应。注意:语法可能特定于模型。模板使用 Go 模板语法。
模板变量
变量 | 描述 |
---|---|
`` | 用于指定自定义行为的系统消息。 |
`` | 用户提示消息。 |
`` | 来自模型的响应。生成响应时,将省略此变量后的文本。 |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""
系统
这SYSTEM
instruction 指定要在模板中使用的系统消息(如果适用)。
SYSTEM """<system message>"""
适配器
这ADAPTER
指令 指定应应用于基本模型的微调 LoRA 适配器。适配器的值应该是绝对路径或相对于 Modelfile 的路径。基本模型应使用FROM
指令。如果基本模型与调整适配器的基本模型不同,则行为将不稳定。
Safetensor 适配器
ADAPTER <path to safetensor adapter>
当前支持的 Safetensor 适配器:
- ParLlama(包括 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 """
<license text>
"""
消息
这MESSAGE
指令允许您为模型指定响应时使用的消息历史记录。使用 MESSAGE 命令的多次迭代来构建对话,这将指导模型以类似的方式回答。
MESSAGE <role> <message>
有效角色
角色 | 描述 |
---|---|
系统 | 为模型提供 SYSTEM 消息的另一种方法。 |
用户 | 用户可能询问的内容的示例消息。 |
助理 | 模型应如何响应的示例消息。 |
示例对话
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
笔记
- 这
Modelfile
不区分大小写.在示例中,使用大写指令来更容易将其与参数区分开来。 - 说明可以按任何顺序排列。在示例中,
FROM
指令首先要保持它易于阅读。