Ollama高手:玩转本地自定义大模型(LLM)

Ollama进阶过程中,我们通过前面的两篇文章了解了如何将Ollama大模型服务应用到自己的项目中,这使得Deepseek、QWQ之类的本地大模型有了具体的用途。

然而在实际的项目中,需求往往是千变万化的,一个大模型可能满足不了需求,甚至有时需要的也不一定是大模型,而是嵌入式模型、视觉模型、语音模型等等面向特定需要的模型。

好在Ollama官方提供了模型库,用户可以通过ollama pull命令拉取到本地使用。

Ollama高手:玩转本地自定义大模型(LLM)

1、Ollama 官方模型

Ollama 收录了主流厂商的开源大模型,包括阿里巴巴的Qwen、深度求索的DeepSeek、Meta的Llama、Google的Gemma、Microsoft的Phi等等,详细如下表:

模型厂商 模型系列 模型版本 模型用途
阿里巴巴 Qwen Qwen 1.5、Qwen 2、Qwen 2.5、Qwen 2.5 Coder 通用大模型、代码生成
阿里巴巴 QwQ QwQ 32B 推理模型
深度求索 DeepSeek DeepSeek-R1、DeepSeek Coder V2、DeepSeek V3 通用大模型、代码生成
Meta Llama Llama 2、Llama 3、Llama 3.1、Llama 3.2、Llama 3.3 通用大模型
Google DeepMind Gemma Gemma、Gemma 2、Gemma 3、Gemma 3 Vision 通用大模型、视觉模型
Microsoft Phi Phi-2、Phi-3、Phi-4 通用大模型
Mistral AI Mistral Mistral、Mistral-Nemo 通用大模型、嵌入式模型
LLaVA Project LLaVA LLaVA 视觉模型,多模态模型
StarCoder StarCoder StarCoder2 代码生成
TinyLlama TinyLlama TinyLlama 嵌入式模型
NVIDIA & Mistral Nemo Mistral-Nemo 通用大模型,支持长上下文
Ollama Dolphin Dolphin 3.0 通用大模型
Ollama Command R Command R 35B 通用大模型,长上下文处理
Ollama Orca Orca Mini 3B、7B、13B、70B 通用大模型,入门级硬件

一般情况下可以直接从官方模型库中选择合适的模型使用。

2、自定义模型

如果在实际项目中需要根据自身行业特征、企业自有数据集对一些通用模型进行微调,如专业的医疗诊断、法律助手、企业客服机器人等;或者其他平台如Hugging Face提供了,但Ollama模型库中还没有的模型,这时就需要自定义模型。
要自定义模型可以按以下步骤进行:

STEP1、准备自定义模型

在开始自定义模型前需要明确以下几点:
1.Ollama主要支持GGUF Engine、LLAMA.cpp两类推理引擎;
2.Ollama 支持 LLaMA、Mistral、Gemma 等架构。确保您的模型文件符合支持的架构。
3.事先需要准备好自定义模型文件,Ollama支持的格式包括 SafetensorsGGUF

STEP2、创建 Modelfile

Ollama 使用 Modelfile 来定义模型的加载和配置。Modelfile的格式如下:

指令 描述
FROM(必需) 定义要使用的基础模型或者架构。
PARAMETER 设置Ollama运行模型的参数。
TEMPLATE 要发送到模型的完整提示模板。
SYSTEM 指定将设置在模板中的系统消息。
ADAPTER 定义要应用于模型的(Q)LoRA适配器。
LICENSE 指定法律许可。
MESSAGE 指定消息历史。

下面是一个具体的示例:

# 使用基础模型
FROM llama2

# 指定模型路径
MODEL /path/to/model.safetensors

# 设置参数
PARAMETER temperature=0.7
PARAMETER max_tokens=4096

一个模型可以设置一个或多个参数,具体有:

参数 描述 值类型 示例用法
mirostat 启用 Mirostat 采样以控制困惑度。(默认值: 0, 0 = 禁用, 1 = Mirostat, 2 = Mirostat 2.0) 整数 mirostat 0
mirostat_eta 影响算法对生成文本反馈的响应速度。较低的学习率会导致调整速度较慢,而较高的学习率会使算法更具响应性。(默认值: 0.1) 浮点数 mirostat_eta 0.1
mirostat_tau 控制输出的连贯性和多样性之间的平衡。较低的数值会导致更加聚焦和连贯的文本。(默认值: 5.0) 浮点数 mirostat_tau 5.0
num_ctx 设置用于生成下一个 Token 的上下文窗口大小。(默认值: 2048) 整数 num_ctx 4096
num_ gqa Transformer 层中的 GQA 组数。某些模型需要,例如 llama2:70b 需要设置为 8 整数 num_ gqa 1
num_gpu 发送到 GPU 的层数。在 macOS 上,默认值为 1 以启用 Metal 支持,为 0 则禁用。 整数 num_gpu 50
num_thread 设置计算过程中要使用的线程数。默认情况下,Ollama 会检测以获得最佳性能。建议将此值设置为系统实际物理 CPU 核心数(而非逻辑核心数)。 整数 num_thread 8
repeat_ last_ n 设置模型回顾以避免重复的范围。(默认值: 64, 0 = 禁用, -1 = num_ctx) 整数 repeat_ last_ n 64
repeat_penalty 设置惩罚重复的强度。较高的值(例如 1.5)会更严厉地惩罚重复,而较低的值(例如 0.9)会更宽容。(默认值: 1.1) 浮点数 repeat_penalty 1.1
temperature 模型的温度。增加温度会使模型更具创造性。(默认值: 0.8) 浮点数 temperature 0.7
seed 设置用于生成的随机数种子。将其设置为特定数字将使模型对相同提示生成相同的文本。(默认值: 0) 整数 seed 42
stop 设置要使用的停止序列。当遇到此模式时,LLM 将停止生成文本并返回。可以通过在模型文件中指定多个单独的 stop 参数来设置多个停止模式。 字符串 stop “AI assistant:”
tfs_z 尾部自由采样用于减少输出中较不可能的 Token 的影响。较高的值(例如 2.0)会更大程度地减少影响,而值为 1.0 则禁用此设置。(默认值: 1) 浮点数 tfs_z 1
num_predict 生成文本时要预测的最大 Token 数。 (默认值: 128, -1 = 无限生成, -2 = 填充上下文) 整数 num_predict 42
top_k 减少生成无意义文本的概率。较高的值(例如 100)会给出更多样化的答案,而较低的值(例如 10)会更保守。(默认值: 40) 整数 top_k 40
top_p 与 top-k 一起使用。较高的值(例如 0.95)会导致更多样化的文本,而较低的值(例如 0.5)会生成更聚焦和保守的文本。(默认值: 0.9) 浮点数

STEP3、导入模型

使用以下命令导入模型:

ollama create my-custom-model -f /path/to/Modelfile

参数解析

  • my-custom-model:自定义模型的名称。
  • -f:指定 Modelfile 的路径。

导入成功后,模型会被存储在 Ollama 的本地模型库中。

STEP4、运行和测试模型

导入完成后,可以直接运行模型进行测试:

ollama run my-custom-model

示例:

ollama run my-custom-model -p "你是谁?"
阅读剩余
THE END