Ollama核心概念与架构
先别急着装,搞清楚 Ollama 的内部结构
上一篇选定了 Ollama + vLLM 双栈方案,这一篇正式进入 Ollama 的世界。
不过先别急着装。很多人第一次接触 Ollama,都是在网上看到一句话教程:终端里敲 ollama run qwen3,模型就跑起来了,还能聊天。体验很 好,几分钟搞定。但接下来你会遇到一连串问题——
关掉终端窗口,模型还在不在?跑着呢还是停了?你的 Java 项目要怎么跟它对接?ollama serve 和 ollama run 到底啥关系?模型文件存哪了?同时跑 Chat 和 Embedding 两个模型会不会互相抢显存?别人文章里写的 OLLAMA_KEEP_ALIVE=-1 又是控制什么的?
这些问题网上教程不会讲,Ollama 的官方文档又散落在 GitHub README、FAQ、API 文档好几个地方,你得来回翻才能拼出全貌。
所以这一篇的定位,不是教你敲命令,而是帮你建立一张 Ollama 的完整认知地图。类比一下:你第一次用 Docker 之前,最好先搞清楚 image、container、Dockerfile、daemon 这些概念是什么关系,而不是上来就 docker run——跑是跑起来了,出了问题完全不知道该查哪里。Ollama 也是同样的道理。
下一篇再动手安装、拉模型、写代码。这一篇把概念打通,下一篇你跟着操作时就不会懵。
Ollama 是什么:一句话定位
上一篇讲过,本地部署中间件分两层:底层是推理引擎,负责算得快;上层是服务框架,负责用得爽。
Ollama 是上层服务框架,不是推理引擎。 它底层的推理引擎是 llama.cpp——那个用纯 C++ 写出来、让大模型能在普通电脑上跑起来的项目(最早是在 MacBook 上验证的,现在已经支持 macOS、Linux、Windows 全平台,CPU、NVIDIA GPU、Apple Silicon、AMD GPU 都能跑)。Ollama 做的事情是把 llama.cpp 的能力包装成一个好用的产品:模型仓库帮你管理模型,一条命令 启动服务,REST API 让你的代码能调,CLI 工具让你在终端里交互。
用 Docker 来类比最直观。Docker 底层的容器运行时是 containerd + runc,但你日常打交道的只有 Docker CLI 和 Docker Daemon。你不需要知道 runc 怎么创建 cgroup,你只需要 docker pull 拉镜像、docker run 跑容器。Ollama 跟 Docker 的关系结构几乎一模一样——你不需要操心 llama.cpp 怎么做矩阵乘法,你只需要 ollama pull 拉模型、ollama run 跑推理。
这个类比不是我硬凑的,Ollama 的设计哲学就是对标 Docker。下面这张对照表能帮你快速建立认知锚:
| 维度 | Docker | Ollama |
|---|---|---|
| 后台服务进程 | Docker Daemon(dockerd) | Ollama Server(ollama serve) |
| 客户端工具 | Docker CLI(docker) | Ollama CLI(ollama) |
| 远程仓库 | Docker Hub | Ollama Registry(ollama.com/library) |
| 配置文件 | Dockerfile | Modelfile |
| 拉取命令 | docker pull nginx | ollama pull qwen3 |
| 运行命令 | docker run nginx | ollama run qwen3 |
| 版本标识 | nginx:1.25(image tag) | qwen3:32b(model tag) |
| 本地存储路径 | /var/lib/docker/ | ~/.ollama/models/ |
| 删除命令 | docker rmi nginx | ollama rm qwen3 |
| 查看本地列表 | docker images | ollama list |
记住这张表,后面每讲到一个 Ollama 的概念,你脑子里都能找到一个 Docker 的对应物。
Ollama 的架构:Client-Server 模式
Ollama 的运行架构非常标准:一个后台服务进程 + 多种客户端。理解这个架构是理解后面所有概念的基础。
1. ollama serve:后台服务进程
Ollama 启动后是一个常驻的 HTTP 服务,默认监听在 127.0.0.1:11434。这个进程是整个 Ollama 的核心,它负责四件事:
- 加载模型:把 GGUF 权重文件从磁盘加载到显存(GPU)或内存(CPU)
- 接收请求:通过 REST API 接收推理请求
- 调度推理:调用底层 llama.cpp 执行实际的推理计算
- 返回结果:把生成的文本通过 HTTP 响应返回给客户端
macOS 和 Windows 安装桌面版之后,ollama serve 会随系统自动启动,你在状态栏能看到一个小羊驼图标。Linux 上通过官方安装脚本安装后,会自动配好 systemd 服务并启动;如果你是手动下载二进制文件安装的,则需要自己配 systemd 或手动启动。
不管哪种方式,本质上都是在你的机器上跑了一个 HTTP Server。