ollama 离线 部署 模型 linux

模型与算力

给内网运维的离线部署流程:在无外网 Linux 机器上装好 Ollama、把模型文件搬进去、验证能跑起来并排掉常见报错。

内网服务器不能连外网,但业务又要在上面跑本地模型,很多人卡在第一步:装包要用在线脚本,拉模型要访问模型仓库,两边都通不了。这篇按顺序讲清离线安装、模型文件搬运、路径与权限设置、以及起服务后的自检方式,顺带说明什么情况下这套做法不适用,比如需要多卡高并发就换别的推理框架。

内网服务器不能连外网,但业务又要在上面跑本地模型,很多人卡在第一步:装包要靠在线脚本,拉模型要访问模型仓库,两边都通不了。这篇按顺序讲清离线安装、模型文件搬运、路径与权限设置、以及起服务后的自检方式。不聊概念,只讲在无外网 Linux 机器上把这件事做完的具体动作。

先说一句适用范围:这套做法适合单机、并发不高、模型规模能塞进一台机器显存或内存的场景。如果你需要多卡高并发、要做请求排队与弹性扩缩,那就该换专门的推理框架,别硬用单机方案扛。运维要省的是时间,不是省一个组件。

先在有网的机器上把该下的东西备齐

离线部署的成败,八成取决于准备阶段。内网机器上没有回头路,缺一个依赖就得重新走一遍审批和拷贝流程。所以先在一台有网、且和目标机器尽量同发行版同架构的机器上把东西凑齐,再整体搬。别指望到了内网再补。

  • 按目标机器的发行版和 CPU 架构选对应安装包,别直接下通用脚本;架构选错,装完启动必报错
  • 把模型文件、安装包、校验值放同一个目录,记录来源和版本,内网搬运最怕说不清这包是哪来的
  • 准备好内网可达的存储路径和账号权限,机器上的模型目录通常不在业务账号的家目录下
  • 提前确认目标机器有没有可用的 GPU 驱动和运行库,没有的话先解决这一层,模型拷进去也跑不动
  • 把安装步骤写成一份带命令的清单带进去,别到现场凭记忆操作
准备项要确认什么不确认的后果
安装包发行版、架构、依赖是否匹配装不上或启动即退出
模型文件格式、文件数量、是否完整加载报错,且难判断是文件坏了还是配置错
存储路径目录存在、空间够、业务账号可读服务能起但看不到模型
算力环境驱动、运行库、显存余量退到内存跑,慢到不可用

离线安装与模型文件搬运

安装走本地包方式,不依赖在线脚本。装完先确认服务单元存在、能被 systemd 托管,这一步过了再谈模型。服务托管方式决定了后面环境变量从哪读,很多「看不见模型」的问题其实出在这里,而不是模型本身。

  1. 装本地包在有网机器上取好对应的本地安装包,拷进内网后本地安装。装完用服务管理命令查状态,确认单元文件已生成。
  2. 确认托管方式用 systemd 启停一次,看进程是否按预期拉起。如果手工跑能起、托管起不来,先查环境变量和工作目录的差异。
  3. 搬模型文件把模型目录整体拷贝到目标机器的模型存储路径。不要在内网机器上执行任何拉取命令,它根本连不出去。
  4. 对齐属主与权限把模型目录的属主改成运行服务的账号,权限按最小可读设置。用切换到该账号的方式实际读一下文件,别只看 ls 结果。
  5. 统一环境变量确认模型存储目录的环境变量在 systemd 单元和命令行两种启动方式下写的是同一个值,写岔了就会出现「装了却看不到模型」。

搬完先别急着接业务。用一条很短的提示词做一次本地推理,确认能出结果、确认落在预期的算力设备上。这一步只花几分钟,但能把「配置问题」和「模型问题」提前分开。

起服务后怎么确认真的能用

能启动不等于能用。业务关心的是稳定出结果和可接受的响应速度。自检顺序建议是先短提示词、再长一点的输入、最后模拟业务的并发量,每步都记下观察到的现象。

观察点正常表现异常时先查
首次加载能加载完并给出响应模型目录权限、文件完整性
算力占用任务跑在预期的算力设备上驱动与运行库、服务账号权限
响应速度在预期范围内是否退到内存、模型档位是否偏大
并发表现并发上来后不崩、不假死监听配置、内存余量、是否需要换方案

显存装不下时会退到内存,表现是慢到不可用。这种情况改量化档位或换更小的模型,而不是硬扛。至于具体哪档量化对应多大资源、不同机器的实测速度差多少,这类数字一直会变,到 测速工具(/tools/speed-test) 和 排行(/rankings) 里核对当时的数字,别拿一篇旧文里的结论当标准。

另外提醒一句不适用的场景:如果你的业务要求多模型随时切换、或单机并发明显超出它擅长的范围,这套单机方案会很快顶到天花板。判断标准不是「能不能跑起来」,而是「高峰期延迟抖不抖、有没有排队」。抖了就该换架构。

出问题按这个顺序排查

内网机器重装一次成本很高,所以排查要有固定顺序,别一上来就怀疑模型。按下面这个顺序走,能最快把问题范围缩小到一个环节。

  1. 看服务状态与日志先确认是服务压根没起来,还是起来了但加载模型失败。这两种情况后面的排查方向完全不同。
  2. 查文件完整性与目录归属核对模型文件数量与校验值,确认目录属主和权限对得上运行服务的账号。
  3. 查算力与显存确认任务是否落到预期设备、显存是否够。不够就调档位或换小模型,不要硬扛。
  4. 查配置一致性对比环境变量、监听地址、启动方式三处配置是否一致,尤其是 systemd 与手工启动的差异。
  5. 最后才怀疑模型本身换一个确认可用的小模型做对照实验。能跑通说明原模型文件或配置有问题,跑不通说明环境还有毛病。
  • 每次变更只动一个变量,并留回退方案,方便定位是哪一步引入的问题
  • 把每次改动的命令和结果记在同一份文档里,下次同类机器可以直接复用
  • 别在生产机器上做第一次验证,先在测试机走通全流程
  • 留一份最小的可用配置作为兜底,出问题时能快速回退到能跑的状态

如果你还在选型阶段、或者想先看看别人踩过哪些坑,站内的中转站与工具目录里有一些经验性内容可以对照,但它们是辅助,最终判断还得看你自己的机器和业务峰值。价格、速度这类会变的数字,一律以站内当页为准。

下一步把你手上的发行版、架构、显存和并发量记下来,先到测速工具页对照一遍同类机器的实测表现,再决定要不要调整模型档位或换方案,能少走一轮返工。

常见问题

内网机器完全没有外网,ollama 还能装吗?

能,前提是你提前在有网环境把安装包和模型文件都备好再拷进去。难点不在安装本身,而在依赖是否齐全、以及模型目录权限是否对;装完先用一个短提示词自测,通了再让业务接入。

模型文件能不能直接从一台机器拷到另一台?

可以,整目录拷贝是最省事的做法,但要保证两台机器的 Ollama 大版本接近、存储目录配置一致。拷贝后要重新核对属主和可读权限,否则服务起来会提示找不到模型。

离线环境和在线环境跑同一个模型,效果会不一样吗?

模型权重一样,输出质量就没有本质差别,差异通常在算力:离线机器显卡弱、走内存推理时会很慢,容易让人误以为模型变差了。装好先测一下输出速度,判断瓶颈在模型还是在硬件。

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