大模型笔记8:ollama中的自定义模型

发布于:2025-06-18 ⋅ 阅读:(19) ⋅ 点赞:(0)

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的替代品,作用是仅保留 相对概率 ≥ min_p × 最高概率token的token. (Default: 0.0)

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


网站公告

今日签到

点亮在社区的每一天
去签到