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

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

Modelfile文件定义

modelfile文件是在ollama上创建自定义模型的蓝图

Modelfile文件通过一下指令配置

InstructionDescription
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

设置模型运行时的一些参数

ParameterDescriptionValue TypeExample Usage
num_ctx设置一次输入模型的最大token数量(Default: 2048)intnum_ctx 4096
repeat_last_n设置一个回溯窗口,数值代表窗口的大小,模型会在生成下一个token前回顾前n个token,避免出现输出重复的现象(Default: 64, 0 = disabled, -1 = num_ctx)intrepeat_last_n 64
repeat_penalty设置惩罚重复的强度,值越大惩罚越高(e.g., 1.5), 值越小惩罚越小(e.g., 0.9) (Default: 1.1)floatrepeat_penalty 1.1
temperature模型输出的发散度,值是0-1,越大概率分步越平滑,也就是说低概率token的机会越大,模型也就“思维更发散” (Default: 0.8)floattemperature 0.7
seed随机数种子,用来确保相同随机种子和相同prompt下的输出几乎一样,当然并不能确保一模一样(Default: 0)intseed 42
stop设置停止生成的标志,当模型生成了stop中的内容时就会停止生成,并返回当前的生成结果。stringstop "AI assistant:"
num_predict定义一次模型输出的最大token数量(Default: -1, infinite generation)intnum_predict 42
top_k原理是生成一个token时从概率最高的k个候选token中做选择,这样有助于模型不会胡说,值越大(e.g. 100) 回答越多样, 值越小 (e.g. 10) 回答越保守. (Default: 40)inttop_k 40
top_p

限制采样到累积概率达到 p 的最小 token 子集,越大

(e.g., 0.95)越发散,越小(e.g., 0.5)越稳定保守. (Default: 0.9)
floattop_p 0.9
min_p

top_p的替代品,作用是仅保留 相对概率 ≥ min_p × 最高概率token的token. (Default: 0.0)

floatmin_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中的变量

VariableDescription
{{ .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的取值:

RoleDescription
systemAlternate way of providing the SYSTEM message for the model.
userAn example message of what the user could have asked.
assistantAn 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

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值