1. Ollama基础与架构概览

大家好,我是这次课程的主讲。今天咱们聊聊Ollama——这个在本地跑大模型的神器。

说实话,我第一次接触Ollama的时候,心里还犯嘀咕:这玩意儿能有多好用?结果用了一个下午,我就把团队里好几个同事都拉下水了。为什么?因为它真的太省事了。

Ollama是什么

Ollama,说白了就是一个本地大模型运行框架。你不需要折腾CUDA、Python环境、各种依赖库。装好它,一条命令就能把Llama、Mistral、Qwen这些模型拉下来跑。

我个人的理解是:Ollama = 模型下载器 + 推理引擎 + API服务。三个角色合为一体。

核心定位:让开发者像使用Docker一样使用大模型。你想想看,docker pull、docker run,Ollama也是ollama pull、ollama run,是不是很熟悉?

Ollama的架构组件

咱们来看看Ollama内部到底长什么样。我画了一张架构图,帮你快速理解。

Ollama 核心架构组件 CLI 命令行接口 ollama pull / ollama run / ollama list / ollama serve REST API 服务层 POST /api/generate | POST /api/chat | GET /api/tags 模型调度与加载器 GPU/CPU 分配 | 显存管理 | 并发请求排队 模型存储与版本管理 ~/.ollama/models/ | GGUF格式 | 分层存储 底层推理引擎 llama.cpp | Metal (macOS) | CUDA (NVIDIA) | Vulkan

从这张图你能看到,Ollama分了五层。最上层是CLI,你敲命令的地方。中间是API服务,供程序调用。再往下是调度层,负责分配资源。然后是模型存储,最后是推理引擎。

我在项目中遇到过一个问题:同时跑两个模型,结果第二个模型加载时第一个模型被挤掉了。后来才发现,Ollama默认的调度策略是「后进先出」。嗯,这个坑咱们后面章节会详细讲。

Ollama的安装与配置

安装Ollama,其实就三步。我习惯用Linux服务器,所以先讲Linux的安装方式。

Linux 安装

curl -fsSL https://ollama.com/install.sh | sh

就这么一行。它会自动检测你的系统,装好依赖,配置好服务。我第一次装的时候,全程不到两分钟。

小提示:如果你在macOS上,直接去官网下载安装包就行。Windows用户目前用预览版,或者用WSL2跑Linux版本。

验证安装

ollama --version
# 输出类似:ollama version 0.1.32

看到版本号,说明装好了。接下来启动服务:

ollama serve

默认监听在 127.0.0.1:11434。你可以用浏览器或者curl测试一下:

curl http://localhost:11434

返回 Ollama is running,就对了。

配置环境变量

Ollama有几个关键环境变量,我建议你提前配好:

变量名 作用 我的建议值
OLLAMA_HOST 监听地址 0.0.0.0(允许远程访问)
OLLAMA_MODELS 模型存储路径 /data/ollama/models(大磁盘目录)
OLLAMA_KEEP_ALIVE 模型驻留时间 5m(5分钟无请求则卸载)
OLLAMA_NUM_PARALLEL 并行请求数 1(默认,后续章节会调优)

注意:我曾经在生产环境忘了配 OLLAMA_HOST,结果只能本机访问。排查了半天才发现默认绑定的是127.0.0.1。这个坑你千万别踩。

Ollama的模型管理基础

模型管理,是Ollama最让我省心的地方。咱们从拉模型开始。

拉取模型

# 拉取Llama 3.1 8B
ollama pull llama3.1:8b

# 拉取Qwen 2.5 7B
ollama pull qwen2.5:7b

# 拉取Mistral
ollama pull mistral

它会自动下载模型文件,存到 ~/.ollama/models/ 目录下。你想想看,以前跑大模型要配Python环境、装PyTorch、下载模型权重、写推理代码……现在一条命令搞定。

查看已安装的模型

ollama list

输出类似这样:

NAME              ID              SIZE      MODIFIED
llama3.1:8b       123abc...       4.9 GB    2 days ago
qwen2.5:7b        456def...       4.5 GB    1 day ago
mistral:latest    789ghi...       4.1 GB    5 hours ago

运行模型

# 交互式对话
ollama run llama3.1:8b

# 单次推理
ollama run llama3.1:8b "请用中文介绍一下Ollama"

我个人习惯用API方式调用,方便集成到系统里:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3.1:8b",
  "prompt": "请用中文介绍一下Ollama",
  "stream": false
}'

删除模型

ollama rm llama3.1:8b

模型文件占磁盘空间,不用的就删掉。我有一台测试机,经常拉各种模型做对比,隔段时间就得清理一次。

核心要点:Ollama的模型管理,本质上就是「拉取-运行-删除」三个操作。但底层涉及模型格式转换、量化版本选择、显存适配等问题。这些咱们后面章节会逐个深入。

小结

这一章咱们把Ollama的底牌翻了个遍。从它是什么,到架构怎么分层,再到怎么装、怎么配、怎么管模型。说白了,Ollama就是让你用最少的精力,把大模型跑起来。

下一章,我会带你深入模型调度层。为什么同时跑两个模型会互相影响?怎么让多个模型和平共处?这些问题,咱们到时候一个一个拆解。


专注资料整理