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

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

### Ollama 模型查看与文档介绍 对于希望深入了解 Ollama 平台上的模型及其使用方法的用户来说,官方提供了详尽的支持资源。GitHub 上托管着一系列关于如何操作该平台的具体指导材料[^1]。 #### 使用 GitHub 获取帮助和支持 Ollama 的官方文档位于其 GitHub 仓库内,其中包含了名为《Import a model》的文章,这篇文章特别针对那些想要将自己的模型引入到 Ollama 环境下的开发者们设计而成。通过阅读这篇文档,可以了解到有关于自定义模型导入过程中的每一个细节以及必要的步骤说明。 #### 存储位置的重要性及相关指南 当涉及到管理已下载至本地环境内的 Ollama 模型时,理解它们被保存的位置是非常重要的。这方面的信息同样可以在官方提供的资料中找到详细的解释。掌握这一点可以帮助用户更高效地处理模型文件,无论是为了优化工作流程还是出于维护目的都显得尤为关键[^2]。 #### Obsidian 插件增强功能体验 另外值得注意的是,在第三方应用方面也有相应的支持存在——例如 Obsidian 中集成有专门用于简化同 Ollama 协作过程的一个插件。此工具允许用户不仅仅局限于默认设定好的提示语句;相反,它给予了一定程度上定制化的能力,使得交互变得更加灵活多样。不仅如此,还能够方便快捷地把生成的内容嵌入现有的笔记体系之中,极大地提高了工作效率和便捷度[^3]。 ```python import requests def connect_to_ollama(api_key, endpoint="https://api.ollama.com/v1/models"): headers = {"Authorization": f"Bearer {api_key}"} response = requests.get(endpoint, headers=headers) if response.status_code == 200: models_info = response.json() return models_info else: raise Exception(f"Failed to fetch data: {response.text}") ``` 上述 Python 脚本展示了连接并获取 Ollama API 提供的服务列表的方法之一,这对于进一步探索可用的功能和服务非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值