Ollama 快速入门:模型文件(Modelfile)
在使用 Ollama 进行本地部署和运行大型语言模型时,Modelfile 扮演着至关重要的角色。它是一个文本文件,用于定义和配置模型的行为和特性。
什么是 Modelfile?
Modelfile
是使用 Ollama 创建和共享模型的方案。它包含了构建模型所需的所有指令和参数,使得模型的创建和部署变得简单而直接。
格式
Modelfile
的格式:
# comment
INSTRUCTION arguments
操作说明 | 描述 |
---|---|
FROM (必须) |
定义要使用的基础模型 |
PARAMETER |
设置 Ollama 如何运行模型的参数 |
TEMPLATE |
要发送给模型的完整提示模板. |
SYSTEM |
指定将在模板中设置的系统消息. |
ADAPTER |
定义适用于模型的 (Q)LoRA 适配器. |
LICENSE |
指定合法的许可证。 |
MESSAGE |
指定消息历史记录。 |
示例
基础 Modelfile
创建 mario 的 Modelfile
示例:
FROM llama3
# sets the temperature to 1 [higher is more creative, lower is more coherent]
# 将温度设置为 1 [越高越有创意,越低越连贯]
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
# 将上下文窗口大小设置为 4096,这控制了 LLM 可以使用多少个 token 作为上下文来生成下一个 token
PARAMETER num_ctx 4096
# sets a custom system message to specify the behavior of the chat assistant
# 设置自定义系统消息来指定聊天助手的SYSTEM行为
SYSTEM You are Mario from super mario bros, acting as an assistant.
按下面操作:
- 将其保存为文件 (e.g.
Modelfile
) ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>'
ollama run choose-a-model-name
- 开始使用该模型!
要查看给定模型的模型文件,请使用 ollama show --modelfile
命令。
> ollama show --modelfile llama3
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM llama3:latest
FROM E:\Ollama\models\blobs\sha256-6a0746a1ec1aef3e7ec53868f220ff6e389f6f8ef87a01d77c96807de94ca2aa
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 num_keep 24
指令
FROM (必须)
FROM
指令定义了创建模型时要使用的基础模型。
FROM <model name>:<tag>
从 llama3 构建
FROM llama3
可用基础模型列表: https://github.com/ollama/ollama#model-library
从 bin
文件构建
FROM ./ollama-model.bin
该 bin 文件位置应指定为绝对路径
或相对于该Modelfile
位置的路径。
PARAMETER
PARAMETER
指令定义了模型运行时可以设置的参数。
PARAMETER <parameter> <parametervalue>
有效参数和值
参数 | 描述 | 值类型 | 示例用法 |
---|---|---|---|
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 将停止生成文本并返回。可以通过stop 在模型文件中指定多个单独的参数来设置多个停止模式。 |
string | stop “AI assistant:” |
tfs_z | 尾部自由采样用于减少输出中可能性较小的标记的影响。较高的值(例如 2.0)将进一步减少影响,而值 1.0 则禁用此设置。(默认值:1) | float | tfs_z 1 |
num_predict | 生成文本时要预测的最大标记数。(默认值:128,-1 = 无限生成,-2 = 填充上下文) | 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 |
TEMPLATE
TEMPLATE
传递到模型中的完整提示模板。它可能包括(可选)系统消息、用户消息和模型的响应。注意:语法可能特定于模型。
模板变量
变量 | 描述 |
---|---|
{{ .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 的路径
,并且文件必须采用 GGML 文件格式。应根据基础模型调整适配器,否则行为将不明确。
ADAPTER ./ollama-lora.bin
LICENSE
LICENSE
指令允许您指定与此 Modelfile 一起使用的模型在何种合法许可证下共享或分发。
LICENSE """
<license text>
"""
MESSAGE
MESSAGE
指令允许您指定模型在响应时使用的消息历史记录。使用 MESSAGE 命令的多次迭代来构建对话,这将引导模型以类似的方式回答。
MESSAGE <role> <message>
有效角色
角色 | 描述 |
---|---|
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
提示
Modelfile
不区分大小写. 在示例中,使用大写指令是为了更容易与参数区分开来。- 指令可以按任意顺序排列。在示例中,
FROM
指令排在最前面,以保持易读性。
作者:Jeebiz 创建时间:2024-07-21 11:24
最后编辑:Jeebiz 更新时间:2024-11-21 01:00
最后编辑:Jeebiz 更新时间:2024-11-21 01:00