【ollama部署本地语言模型qwen参数调整,改变语气及性格】
本文介绍了如何使用Ollama部署本地Qwen语言模型并调整参数以改变输出风格。主要内容包括:1)关键参数说明(temperature、top_k、top_p等)及其推荐设置范围;2)Modelfile编写方法,包含模型基础配置、系统消息定义和示例对话;3)模型重建步骤,通过Modelfile创建自定义模型;4)桥接器配置修改方法。通过调整这些参数,可以控制生成文本的创造性、多样性、连贯性等特性,
参考资料
https://docs.ollama.com/modelfile#valid-parameters-and-values
简介
哎,没有在线的好
1. temperature
作用:
控制文本生成的创造性和多样性。温度越高,生成的文本越随机;温度越低,生成的文本越稳定和一致。
取值范围:
0.0 - 1.0:0.0 会使得模型生成的内容非常保守,通常是最有可能的输出。1.0 使得模型生成的文本更具创造性、更多样,但也可能更不连贯。
1.0:某些情况可以使用更高的温度,但通常会使文本更加不可预测。
默认值:
通常为 0.8,适中。
推荐范围:
0.6 到 1.0,根据你需要的创造性程度调整。
2. top_k
作用:
控制生成文本时,模型从多少个候选词中选择下一个词。较低的 top_k 会使得模型在选择词时更为保守,而较高的 top_k 会允许更多样的选择。
取值范围:
1 - 数值很大:1 时,相当于 Greedy Search(贪婪搜索),每次选择概率最高的词,生成的文本最为一致和保守。随着 top_k 值的增加,生成的文本将会更具多样性和随机性。
通常范围:10 到 100,通常 top_k 设置在这个范围内能得到较为自然的文本。
默认值:
通常为 40。
推荐范围:
10 到 50,适合生成多样性与连贯性平衡的文本。
3. top_p
作用:
配合 top_k 使用,控制生成的多样性。top_p 定义了一个累积概率的阈值,模型会从概率和之和超过 p 的最可能的候选词中进行选择。较小的 top_p 值限制了可能性,产生更集中和保守的输出;较大的 top_p 值允许更多样的输出。
取值范围:
0.0 - 1.0:0.0 意味着只选择最可能的词,而 1.0 则允许几乎所有的词都能作为候选。
默认值:
通常为 0.9。
推荐范围:
0.8 到 0.95,在多样性和连贯性之间取得较好平衡。
4. num_ctx
作用:
控制模型可以看到的最大上下文窗口大小。num_ctx 是模型在生成下一个单词时所能考虑的最大 token 数。较大的 num_ctx 值可以让模型更好地捕捉长文本的上下文关系。
取值范围:
通常为 2048 到 8192:不同的模型和硬件限制可能有所不同。上下文窗口越大,模型能够理解的上下文越丰富。
默认值:
通常为 2048 或 4096。
推荐范围:
根据你的硬件,4096 是一个常见且合适的值。
5. repeat_penalty
作用:
用于惩罚重复的词汇。模型在生成文本时,若检测到重复的部分,会按照此值进行惩罚。较高的 repeat_penalty 会强烈惩罚重复部分,从而减少重复内容的生成。
取值范围:
0.0 - 2.0+:1.0 表示没有惩罚;大于 1.0 会增加惩罚力度,减少重复生成;小于 1.0 会降低惩罚,从而允许更多的重复。
默认值:
通常为 1.1。
推荐范围:
1.0 到 1.5,视具体应用而定。
6. num_predict
作用:
设置模型生成的最大 token 数量。num_predict 限制了生成文本的长度。可以使用此参数来控制每次生成的输出长度。
取值范围:
1 到几千:具体值取决于模型的上下文窗口大小以及生成的具体内容。一般来说,可以设置为 100、150 或更高,生成较长文本时需要调整。
默认值:
通常为 -1,表示生成无限制长度,直到 stop 被触发。
推荐范围:
50 到 200,控制生成长度。
7. stop
作用:
设置生成停止的标志,模型生成文本时遇到这些标志符号会停止继续生成。可以用来控制生成的内容不超出预设的范围。
取值范围:
任意字符串:如 <|end_header_id|>、“AI assistant:” 等。可以使用任意字符串作为停止符,多个停止符号之间用空格分开。
默认值:
无默认停止符,用户自定义。
推荐范围:
可以设置为模型的某个特殊 token 或者一些常见的文本结束符。
8. seed
作用:
设置随机种子,确保每次生成相同的结果。固定的 seed 值可以使得相同的输入在多次调用时产生一致的输出。
取值范围:
任意整数:任何整数值,通常设置为 42 或其他任何整数。
默认值:
0,表示随机。
推荐范围:
通常设置为 42,也可以根据需要自定义。
modelfile编写
参数需要根据说明自行调整
# 选择基础模型
FROM qwen2.5:1.5b
# 设置生成参数
PARAMETER temperature 0.9
# 控制模型的创造性,数值越高生成的文本越随机。推荐范围:0.6 到 1.0。
PARAMETER top_k 80
# 控制生成的多样性,数值越高生成的文本越多样。范围:10 到 100。
PARAMETER top_p 0.9
# 与 top_k 配合使用,数值越高输出越多样。范围:0.0 到 1.0。
PARAMETER num_ctx 4096
# 设置上下文窗口的大小,影响模型能看到多少内容。范围:2048 到 8192。
PARAMETER repeat_penalty 1.2
# 重复惩罚,数值越高惩罚越强,减少重复内容。范围:0.0 到 2.0+。
PARAMETER num_predict 150
# 控制生成的最大 token 数量。范围:50 到 200,适用于较长文本的生成。
PARAMETER stop "<|end_header_id|>"
# 停止符。可以使用自定义的停止标志,如 "<|end_header_id>"。
PARAMETER seed 42
# 设置随机数种子,确保生成结果的可重复性。默认值为 0,表示随机。
# 定义系统消息
SYSTEM """你是一个智能助手,能够回答各种问题,并提供具有情绪和详细的回答。"""
# 设置模型模板(如何构建用户输入和模型输出)
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>"""
# 示例对话
MESSAGE user "请告诉我机器学习的基本概念。"
MESSAGE assistant "机器学习是一种通过数据训练模型,使其能够做出预测或决定的技术。"
MESSAGE user "深度学习是什么?"
MESSAGE assistant "深度学习是机器学习的一种方法,基于神经网络,尤其是多层神经网络,用于处理复杂的任务,如图像识别和语音识别。"
# 可选 LoRA 适配器或许可证
# ADAPTER ./path_to_adapter
# LICENSE """Your license text here"""
可改的地方:
各类参数
定义系统消息
可以定义个性格,角色等
# 定义系统消息
SYSTEM """你是一个智能助手,能够回答各种问题,并提供具有情绪和详细的回答。"""
示例对话
可以写两句,他会按着问题稍稍发散
# 示例对话
MESSAGE user "请告诉我机器学习的基本概念。"
MESSAGE assistant "机器学习是一种通过数据训练模型,使其能够做出预测或决定的技术。"
MESSAGE user "深度学习是什么?"
MESSAGE assistant "深度学习是机器学习的一种方法,基于神经网络,尤其是多层神经网络,用于处理复杂的任务,如图像识别和语音识别。"
模型重建
在进行ollama运行的时候,不再运行基础程序,而是需要运行从modelfile生成的模型:
ollama create 你根据modelfile创建新的模型的名字 -f C:\Users\LinderVen\.ollama\Modelfile
例如:
ollama create model -f C:\Users\LinderVen\.ollama\Modelfile
ollama run 你根据modelfile创建新的模型的名字
例如:
ollama run model
桥接器修改
# ========== 配置 ==========
MQTT_BROKER = "192.168.###.###" # 虚拟机 EMQX IP
MQTT_PORT = 1883
TOPIC_REQUEST = "ai/request"
TOPIC_RESPONSE = "ai/response"
OLLAMA_URL = "http://127.0.0.1:11434/api/generate"
# MODEL_NAME = "qwen2.5:1.5b"
MODEL_NAME = "你根据modelfile创建新的模型的名字"
# ==========================
只用修改配置里面MODEL_NAME 的值就行,将原来的qwen2.5:1.5b改为 你根据modelfile创建新的模型的名字
测试

更多推荐
所有评论(0)