ollama本地部署怎么做微调

模型与算力

讲清 Ollama 本地部署之后想微调模型的三种可行做法、各自的硬件门槛与限制,帮你判断该不该走这条路。

很多人先用 Ollama 把模型拉下来跑通了,接着就想拿自己的数据再训一训,让它更懂自己的业务。但一上手就卡住:Ollama 只管推理,不给训练入口,模型文件还是量化过的,拿来微调效果打折。这篇按你的数据量、显卡和产出目标,给出三条可落地的路径和判断标准,顺带说清什么情况下这条路根本不值得走。

很多人是先用 Ollama 把模型拉下来跑通了,接着就想拿自己的数据再训一训,让它更懂自己的业务。这个念头一冒出来,动手时基本都会卡在同一个地方:Ollama 命令行翻遍了,找不到 train、finetune 这类子命令,只有 pull、run、serve 这一套。

原因不复杂,Ollama 的定位是推理运行时,它负责下载、量化、加载、把接口挂起来。训练这件事从头到尾不在它的职责范围里。所以真正的问题不是「怎么在 Ollama 里微调」,而是「怎么绕开它去训,训完再拿回来用」。下面按你的数据量、显卡和产出目标,拆成三条路径和各自的判断标准。

先认清一件事:Ollama 是推理工具,不是训练工具

把这条想明白,后面的动作才顺。Ollama 默认拉下来的大多是量化过的权重,量化本身就有精度损失,你在这上面做微调,等于在一张已经被压缩过的画布上重画,底子就打了折。而且它没有暴露训练入口,也没有梯度、优化器这些概念,命令行层面根本没打算让你训。

  • 没有训练子命令:pull 和 run 管拉取和对话,serve 管起服务,整条链路到推理为止
  • 权重是量化格式:拿它当训练起点,精度已经掉过一轮,效果上限被压住
  • 缺少训练配套:数据集加载、超参配置、检查点保存这些环节它一概不管
  • 结论:想微调,第一步是绕开 Ollama 去拿原始权重,训完再转回来做推理,这是常见分工

三条路:不改权重、加适配器、全量重训

路径选择比技术细节重要得多,选错了后面全是白工。三条路的核心区别在于:动不动权重、显存门槛多高、后期维护要不要反复重训。

做法改动面适合什么需求明显短板
提示词 / 挂知识库不碰权重知识更新快、格式约束、内部文档问答每次带上下文,长文档场景吃 token
LoRA 一类适配器冻结主干,只训小矩阵风格、话术、固定输出格式这类稳定诉求产物要合并回原模型才能用
全量微调改动面最大需要模型底层能力真的迁移显存和卡数要求高,个人设备基本别想

三条路的硬件门槛、数据量要求和维护成本差别很大,不是同一个量级的事。选之前先到 /stacks/fine-tuning 看看有哪些服务商和方案类型,把可选范围过一遍再定方向。

动手前先算显存和数据,别训到一半崩

显存判断有个固定顺序:先确认基座模型参数量,再看你打算用哪种微调方式。适配器微调和全量微调之间的差距往往是量级级别的,光凭感觉估十有八九估错。具体倍数去 /models/deploy 的部署测算页,按当时的模型算一遍。

  1. 确认基座与方式先定模型参数量和微调方式,这两个变量决定显存量级,不要跳过
  2. 按站内测算页核数到 /models/deploy 输入规格算一遍,得到的是当时的参考值,不要靠记忆里的旧数字
  3. 备一份小数据集几百条格式统一、互相不矛盾的样本先跑通,比一上来堆几千条有用
  4. 看损失曲线试跑阶段只确认一件事:损失有没有真的在降,没降就别加大数据量,先查数据格式
  5. 本地跑不动就换显存不够会走 CPU 卸载,速度慢到不可接受,容易被误判成「微调没用」;这时去 /compute/gpus 和 /compute/sizing 对一遍规格与卡数

数据量这条要单独说:不是越多越好。几百条高质量、格式统一的样本,往往比几千条口径互相打架的样本有用。训练前花时间洗数据,比训练后调参划算得多。

训完之后怎么回到 Ollama 用

训完不代表结束,回载这一步最容易出问题。如果训练产物是适配器权重,要先和原模型合并,再转成 Ollama 能加载的格式。合并这一步做错,效果会整块丢掉,流程细节参考 /stacks/fine-tuning。

转换后本地加载测试,别只看训练集里的样本,那样一定好看。重点测三类:训练里出现过的、同义改写的、完全没见过的。第三类掉得厉害,说明过拟合了,回去加数据或减训练轮次。

适配器合并
把训练出的小矩阵并回原模型,不合并就无法单独加载
格式转换
转成 Ollama 认的格式再写 Modelfile 引用
三类样本测试
见过、改写、没见过各测一批,看泛化而不是看记忆
过拟合信号
训练样本表现好、没见过的样本明显变差

还有一点常被搞混:如果只是想让模型记住内部文档,先试试知识库方案。微调解决的是「怎么说话」,知识库解决的是「知道什么」,判断标准可对照 /ai-dict/category/tech。

这些情况下别做微调

微调不是默认选项,它更像是给已经稳定的需求做固化。下面这几种情况,做了大概率是给自己找维护负担。

  • 数据还在天天变、口径经常调整:微调等于把版本冻住,每次改动都要重训,维护成本高于收益
  • 只是想让输出更规范:先试提示词约束和输出格式校验,能解决就别训
  • 只有一张消费级卡却想要接近全量的效果:现实里很难两全,可考虑租算力或直接调托管服务
  • 训练数据来源和授权不清楚:尤其涉及内部文档和用户数据时,先过一遍 /safety 的要求再动手

算力方案和成本口径这件事,别凭印象拍脑袋,到 /compute/finetune 对比当时的方案;本地实在跑不动的场景,租卡和托管服务往往更省事。

先看方案再动手三条路径的门槛和产出差别很大,动手前花十分钟把可用方案和测算页过一遍,比训到一半发现显存不够划算。

常见问题

Ollama 本身有没有微调命令?

没有。Ollama 定位是推理和模型管理,训练相关的活它不干。你要么用别的训练框架(本地或租卡)训完,再把权重转成它能加载的格式,要么干脆走提示词加知识库这条路。把它当训练工具会一直卡住。

一张普通显卡能微调多大的模型?

没有统一答案,取决于模型参数量、微调方式和你用的量化程度,LoRA 和全量微调差得很远。建议先到站内 /models/deploy 按你手上的卡和目标任务算一遍,再决定是本地训还是租算力,别凭感觉开跑。

微调完需要多少数据才有效?

质量比数量重要,格式统一、标注一致的几百条样本经常就能看出方向性变化,而几千条自相矛盾的样本只会把模型带偏。正确做法是先拿一小批跑通流程,看效果曲线,再决定要不要扩数据。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。