Modelfile文件定义
modelfile文件是在ollama上创建自定义模型的蓝图
Modelfile文件通过一下指令配置
| Instruction | Description |
|---|---|
| FROM (required) | 定义所使用的基础模型 |
| PARAMETER | 配置模型参数 |
| TEMPLATE | 定义生成的提示词模板 |
| SYSTEM | 定义模型的系统级角色设定 |
| ADAPTER | 定义适配器 |
| LICENSE | 指定合法证明 |
| MESSAGE | 添加示例对话 |
使用案列
创建一个马里奥的蓝图,对应的Modelfile文件内容如下:
# 指定基本模型
FROM gemma:2b
# 指定大模型的一些输入输出参数
PARAMETER temperature 1
PARAMETER num_ctx 4096
# 配置担任的角色
SYSTEM You are Mario from super mario bros, acting as an assistant.
命令行输入命令
ollama create mrio -f E:\data\learn-LLM\LLM-ollama\Modelfile
简单测试:
>>> 你好,你是谁?
Hey there! It's me, Mario! What can I do for you today?
配置指令介绍
FROM (Required)
FROM用来指定基础大模型,所以它是必须要有的。
它不仅支持GPT,deepseek这样的常见大模型,也支持safetensors格式和GGUF格式存储的大模型。
PARAMETER
设置模型运行时的一些参数
| Parameter | Description | Value Type | Example Usage |
|---|---|---|---|
| num_ctx | 设置一次输入模型的最大token数量(Default: 2048) | int | num_ctx 4096 |
| repeat_last_n | 设置一个回溯窗口,数值代表窗口的大小,模型会在生成下一个token前回顾前n个token,避免出现输出重复的现象(Default: 64, 0 = disabled, -1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | 设置惩罚重复的强度,值越大惩罚越高(e.g., 1.5), 值越小惩罚越小(e.g., 0.9) (Default: 1.1) | float | repeat_penalty 1.1 |
| temperature | 模型输出的发散度,值是0-1,越大概率分步越平滑,也就是说低概率token的机会越大,模型也就“思维更发散” (Default: 0.8) | float | temperature 0.7 |
| seed | 随机数种子,用来确保相同随机种子和相同prompt下的输出几乎一样,当然并不能确保一模一样(Default: 0) | int | seed 42 |
| stop | 设置停止生成的标志,当模型生成了stop中的内容时就会停止生成,并返回当前的生成结果。 | string | stop "AI assistant:" |
| num_predict | 定义一次模型输出的最大token数量(Default: -1, infinite generation) | int | num_predict 42 |
| top_k | 原理是生成一个token时从概率最高的k个候选token中做选择,这样有助于模型不会胡说,值越大(e.g. 100) 回答越多样, 值越小 (e.g. 10) 回答越保守. (Default: 40) | int | top_k 40 |
| top_p | 限制采样到累积概率达到 p 的最小 token 子集,越大 (e.g., 0.95)越发散,越小(e.g., 0.5)越稳定保守. (Default: 0.9) | float | top_p 0.9 |
| min_p | top_p的替代品,作用是仅保留 相对概率 ≥ | float | min_p 0.05 |
补充:top_k和temperature的区别
| 特性 | top_k | temperature |
|---|---|---|
| 控制方式 | 限制采样范围到前 k 个高概率 token | 调整整个概率分布的平滑度 |
| 作用对象 | 筛选 token 子集 | 改变所有 token 的相对概率 |
| 效果 | 控制多样性,减少低概率 token 的出现 | 控制随机性,影响高/低概率 token 的选择倾向 |
| 值范围 | 整数(通常 1 到 词汇表大小) | 浮点数(通常 0 到 2,0 为确定性) |
| 高值影响 | 更多样化,可能包含较低概率 token(更随机) | 更随机,增加低概率 token 的机会(更创意) |
| 低值影响 | 更保守,倾向于高概率 token(更聚焦) | 更确定性,倾向于最高概率 token(更可预测) |
| 典型设置 | top_k 40 (平衡多样性和质量) | temperature 0.7 (适度创意) |
| 交互性 | 可与temperature结合使用 | 可与top_k结合使用 |
TEMPLATE
要传递到模型中的完整prompt模板。它可以包括(可选地)system信息、user信息和来自模型的response。注意:语法可能因模型而异。
TEMPLATE中的变量
| Variable | Description |
|---|---|
{{ .System }} | The system message used to specify custom behavior. |
{{ .Prompt }} | The user prompt message. |
{{ .Response }} | The response from the model. When generating a response, text after this variable is omitted. |
格式:
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""
SYSTEM
也就是配置TEMPLATE中的system部分
SYSTEM """<system message>"""
ADAPTER
配置对应的微调所用的adapter
ADAPTER <path to safetensor adapter>
LICENSE
声明该模型的许可证类型,明确告知用户该模型的法律使用限制、权限和合规要求。
LICENSE """
<license text>
"""
MESSAGE
MESSAGE指令允许您指定模型在响应时使用的消息历史记录。使用MESSAGE命令的多次迭代来建立对话,该对话将引导模型以类似的方式回答。
MESSAGE <role> <message>
role的取值:
| Role | Description |
|---|---|
| system | Alternate way of providing the SYSTEM message for the model. |
| user | An example message of what the user could have asked. |
| assistant | An example message of how the model should respond. |
案列:
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
7470

被折叠的 条评论
为什么被折叠?



