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

Ollama系列文章:
Ollama入门,一键启动本地DeepSeek大模型
Ollama入门,Ollama技术架构与原理
Ollama进阶,在Python、Java、Go项目中集成Deepseek、QWQ大模型
Ollama进阶,在Javascript(nodejs)前后端项目中集成Deepseek、QWQ大模型
Ollama高手,玩转本地自定义大模型(LLM)
Ollama高手,调优Ollama环境变量,提高性能与安全性
Ollama高手,调优Ollama模型参数,提高模型输出质量


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

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

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

1、Ollama 官方模型

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

模型厂商模型系列模型版本模型用途
阿里巴巴QwenQwen 1.5、Qwen 2、Qwen 2.5、Qwen 2.5 Coder通用大模型、代码生成
阿里巴巴QwQQwQ 32B推理模型
深度求索DeepSeekDeepSeek-R1、DeepSeek Coder V2、DeepSeek V3通用大模型、代码生成
MetaLlamaLlama 2、Llama 3、Llama 3.1、Llama 3.2、Llama 3.3通用大模型
Google DeepMindGemmaGemma、Gemma 2、Gemma 3、Gemma 3 Vision通用大模型、视觉模型
MicrosoftPhiPhi-2、Phi-3、Phi-4通用大模型
Mistral AIMistralMistral、Mistral-Nemo通用大模型、嵌入式模型
LLaVA ProjectLLaVALLaVA视觉模型,多模态模型
StarCoderStarCoderStarCoder2代码生成
TinyLlamaTinyLlamaTinyLlama嵌入式模型
NVIDIA & MistralNemoMistral-Nemo通用大模型,支持长上下文
OllamaDolphinDolphin 3.0通用大模型
OllamaCommand RCommand R 35B通用大模型,长上下文处理
OllamaOrcaOrca 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_ gqaTransformer 层中的 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 "你是谁?"
### 部署在本地Ollama DeepSeek模型进行自定义训练 对于已经部署在本地Ollama DeepSeek模型,想要对其进行自定义训练涉及多个方面的工作。通常情况下,LLM(大语言模型)的微调或定制化训练需要准备特定格式的数据集以及调整超参数设置。 #### 准备数据集 为了对DeepSeek模型实施有效的自定义训练,需先准备好用于训练的数据集。该数据集应遵循一定结构以便被模型理解并从中学习新知识。一般而言,这可能意味着要将文本整理成适合输入给定框架的形式[^1]。 #### 修改配置文件 针对具体的训练需求,修改相应的配置文件来指定诸如批次大小(batch size)、学习率(learning rate)等重要参数。这些设定直接影响着最终模型性能的好坏。由于Ollama提供了较为友好的界面和支持工具,在此过程中可以利用其内置功能简化操作流程[^2]。 #### 使用命令行接口执行训练过程 一旦完成了上述准备工作,则可以通过命令行接口启动实际的训练程序。具体来说就是运用ollama提供的专用指令来进行这一系列动作: ```bash ollama train --model=deepseek-v3 --data=/path/to/your/dataset --output_dir=./results ``` 这条命令假设用户已经在`/path/to/your/dataset`位置放置好了处理完毕后的数据集,并指定了输出目录为当前路径下的`./results`文件夹内保存训练成果。 需要注意的是,尽管Ollama使得本地运行大型语言模型变得简单许多,但对于非专业人士来讲,深入参与到像重新训练这样的高级任务仍然具有一定挑战性。因此建议不具备充分经验者寻求专业技术支持或者参考官方文档获取更多指导信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值