ollama 设置 ollama_models

模型与算力

讲清 OLLAMA_MODELS 环境变量的作用与配置方法,解决模型默认存到系统盘、迁移路径后拉不到模型的问题。

很多人装完 ollama 拉了几个模型,过阵子发现 C 盘或系统盘被吃满,想换到别的盘,改完变量却发现模型「丢了」。这篇只讲一件事:OLLAMA_MODELS 到底控制什么、不同系统怎么配、配完怎么验证生效。不涉及模型选型和跑分对比,那些另开页面看。

很多人装完 ollama,随手拉了几个模型,过阵子才发现系统盘被吃满。想换到别的盘,改完环境变量却发现模型「丢了」——列表空白、拉不动、跑不起来。这篇只讲一件事:OLLAMA_MODELS 到底控制什么、不同系统怎么配、配完怎么验证生效。不涉及模型选型和跑分对比,那些另开页面看。

先说结论:它不是一个可有可无的优化项,而是决定模型仓库落在哪的关键开关。配错的典型表现不是报错,而是「静默走回默认路径」,你以为改了,服务进程其实没读到。下面按「它管什么 → 分系统怎么设 → 存量模型怎么搬 → 怎么验证和排查」四步走。

OLLAMA_MODELS 到底管什么

它指的是模型权重与清单文件的存放根目录。改它等于换掉整个模型仓库的位置,不是单独指定某一个模型。所以它影响的是「所有本地已拉取的模型放在哪」,而不是「从哪拉」。很多人第一次踩坑就是误以为改完能自动搬家,其实不会。

作用范围
整个模型仓库的根目录,含权重文件和清单,不是单个模型
默认位置
跟系统走,一般在用户目录下;目录名以本机 ollama 的输出为准,不凭记忆写
影响边界
只管本地已拉取的模型,不影响拉取源,也不需要重装
生效前提
必须让真正在跑的那个服务进程读到,只 export 到当前 shell 往往没用

三个系统分别怎么设

不同系统的坑点完全不一样,核心区别在于「谁是那个读变量的进程」。后台服务、图形界面启动的程序、终端里前台启动的程序,读到的环境可能不是同一份。所以配置方法要对准实际启动方式。

系统写到哪里改完必须做什么
Linux写进服务的启动环境,不是当前 shell 的 export重新加载服务,只 export 对后台服务无效
macOS写进系统级环境,或改为从终端前台启动图形界面启动的进程读不到 shell 里的 export
Windows设成用户或系统级变量完全退出 ollama 再重开,托盘没退干净照样读旧路径
容器写进容器环境配置挂载的卷要指向同一路径,否则重启即丢
  • Linux:确认服务是用哪个用户、哪份配置启动的,把变量写到那一层,而不是随手在终端 export 一下
  • macOS:判断你平时是怎么启动的,图形界面启动和终端启动是两条路径,选一条并保持一致
  • Windows:设完变量后别只点关闭窗口,去托盘确认进程真的退出了再重开
  • 容器:环境变量和卷挂载必须配对,路径写错一个字符就会在容器里新建一个空目录
  • 不管哪个系统,改完都别急着拉新模型,先做下一步的验证

已拉好的模型怎么搬过去

换目录最容易被忽略的是「存量模型」。变量改对了,新目录是空的,旧模型还在原处躺着,于是你看到的还是「模型丢了」。搬迁本身不难,难在顺序——先停服务,再动文件,最后验证。

  1. 停服务先把 ollama 的服务进程停干净。运行中直接拷贝容易出现清单与实际文件对不上,问题还很难查。
  2. 整体搬目录把整个模型根目录搬走,不要只挑体积大的那几个文件。清单和引用关系都在目录里,缺一个就对不上。
  3. 验证文件到位到新路径下确认目录结构完整,别只看文件夹在不在,看一眼里面的层级是否和原来一致。
  4. 先列清单再启动新目录就位后,先在终端里列一次模型清单,能列出来再启动服务,把问题挡在推理之前。
  5. 确认读写正常分卷或网络盘上放模型要留意读取延迟。出问题先怀疑存储,而不是先怀疑模型本身坏了。

什么情况下不适合这么搬?如果你的模型目录本身就在一块慢速外接盘或网络盘上,搬迁只是换个位置,读取延迟问题不会消失,这时候要权衡的是「盘够不够大」和「跑起来快不快」两件事,而不是简单换个路径。

怎么确认生效、出问题按什么顺序查

验证不要一上来就跑推理,那样出错了也分不清是路径问题还是模型问题。按「路径 → 清单 → 写入 → 推理」四层往下查,每层都能独立确认,能快速定位问题出在哪一环。

  • 第一层:查服务实际读到的路径是不是你配的那个,不是就回到上一节检查配置层级
  • 第二层:列模型清单,能为空说明路径可能写错了一层,注意要不要带末尾的目录名
  • 第三层:拉一个小模型试写,能写进去说明目录权限和剩余空间没问题
  • 第四层:再去跑推理,这一层出问题多半和存储性能、挂载方式有关,而不是路径

想回退也简单:把变量删掉或指回原目录即可。原来的模型只要没删,一般还在原处。所以搬之前建议先复制而不是直接移动,确认新路径跑通再清理旧的,这样最坏情况也有退路。

如果你要对比不同模型的资源占用、或者想看清各家 API 的计费差异,这些和本地路径配置是两回事,去站内对应页面核对当时的数字,别靠记忆下判断。

下一步配置改完先别急着大干一场,按本文的四层验证走一遍,再顺手去工具目录挑个速度测试工具摸清本机底子,配错了也好对比出来。

常见问题

改了 OLLAMA_MODELS,之前拉的模型全不见了怎么办?

先别急着重拉。这个变量只是换仓库位置,旧文件大概率还在原目录。把旧目录整体搬到新路径,或者把变量删掉指回原目录,重启服务后清单一般就回来了。两个目录都有文件时,以服务实际读到的那个为准。

能不能只让某一个模型放到别的盘?

不支持按模型单独指定路径。这个变量是仓库根目录级别的,一改就是全仓库换位置。如果确实要分开存,通常的做法是给模型目录做软链接,或者干脆在别的盘再起一个独立的数据目录,用不同实例分开管,不要指望一个变量管两个盘。

Windows 上设了变量还是不生效,为什么?

最常见是进程没重启干净。托盘图标退出、任务管理器里确认没有残留进程,再重新打开。其次是变量设到了当前会话而不是用户或系统级,图形界面启动的进程读不到。最后检查路径里有没有中文或空格,写成带引号的形式再试。

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