Skip to content

LangChain教程 - 4 Ollama模型管理

下面介绍一下 Ollama 的一些常用模型管理的命令,包括模型运行、查看、停止、删除等核心操作。

4.1 运行多个大模型

上一个章节使用 Ollama 运行了 qwen3:1.7b 模型,我们还可以使用 Ollama 同时运行多个模型。

例如,我们再运行一个 gemma3:1b 模型,这个也比较小,没有思考过程,响应很快:

bash
# Docker 部署的 Ollama 运行模型
docker exec -it my-ollama ollama run gemma3:1b

# 补充:非 Docker 部署的 Ollama 直接运行(新手常用)
ollama run gemma3:1b

4.2 查看模型

1 查看所有的模型

可以使用如下方式查看本地所有的模型,不管是否在运行

bash
docker exec my-ollama ollama list

# 简写命令
docker exec my-ollama ollama ls

# 补充:非 Docker 部署
ollama list
ollama ls

输出结果示例:

NAME           ID              SIZE      MODIFIED      
gemma3:1b      8648f39daa8f    815 MB    2 minutes ago      
qwen3:1.7b     7df6b6e09427    1.4 GB    3 hours ago
  • NAMEID 是模型的名称和 ID;
  • SIZE 是模型占用的硬盘空间;
  • MODIFIED 是模型最近一次被下载、更新或重建的时间,用来判断模型“新旧”或最近是否被重新拉取。

2 查看运行中的模型

可以使用如下命令查看运行中的模型:

bash
# Docker 部署
docker exec my-ollama ollama ps   

# 补充:非 Docker 部署
ollama ps

输出结果示例:

NAME          ID              SIZE      PROCESSOR    CONTEXT    UNTIL              
qwen3:1.7b    7df6b6e09427    1.9 GB    100% CPU     4096       4 minutes from now    
gemma3:1b     8648f39daa8f    1.2 GB    100% CPU     4096       4 minutes from now
  • 前面两列是模型的名称和ID;

  • SIZE 表示模型当前占用的内存大小,而不是磁盘上的文件大小;

  • 100% CPU 表示模型推理当前运行在 CPU 上;

  • CONTEXT 表示模型一次对话最多能“记住”的 token 数;

  • UNTIL 表示自动卸载倒计时,如果在这段时间内没有新的请求,该模型会被自动从内存中卸载,以释放系统资源,每当模型接收到一次请求,这个倒计时都会重新计算,也就是说 Ollama 可以同时运行多个模型,但是 Ollama 会定时卸载不使用的模型。

可通过环境变量修改 UNTIL 时长:OLLAMA_KEEP_ALIVE=10m(设置为 10 分钟,Docker 部署需在启动容器时配置):

bash
# 示例1:设置为 1 小时自动卸载
docker run -d \
  -v /Users/foooor/docker/my-ollama:/root/.ollama \
  -p 11434:11434 \
  -e OLLAMA_KEEP_ALIVE=1h \
  --name my-ollama \
  ollama/ollama

# 示例2:设置为永不卸载(模型常驻内存)
docker run -d \
  -v /Users/foooor/docker/my-ollama:/root/.ollama \
  -p 11434:11434 \
  -e OLLAMA_KEEP_ALIVE=0 \  # 0 表示禁用自动卸载
  --name my-ollama \
  ollama/ollama
  • 如果你的 my-ollama 容器已经启动过,需要先删除旧容器,再执行上面的新命令。

  • 时长格式支持:时长格式支持 s(秒)、m(分)、h(时),0 表示永不自动卸载(模型加载后常驻内存,适合高性能服务器),-1 = 使用 Ollama 默认值(通常是 5 分钟)

3 模型的状态

在 Ollama 中,一个模型会处于以下三种状态之一:

  1. 已下载(存在于磁盘),使用 ollama list 可以查看;
  2. 正在运行(已加载到内存),使用 ollama run 运行,使用 ollama ps 查看;
  3. 未加载(磁盘存在,但不占内存),使用 ollama list 可以查看;

4.3 停止模型

其实 Ollama 没有单独的 stop 命令来停止模型,这是有意的设计。

Ollama 提供了 stop 命令,可主动将运行中的模型从内存卸载(磁盘文件保留),实现 “释放内存、临时禁用模型访问” 的需求:

bash
# Docker 部署:停止指定模型(如 qwen3:1.7b)
docker exec my-ollama ollama stop qwen3:1.7b
  • 执行后模型会从内存中卸载,ollama ps(运行中模型列表)中不再显示该模型;

  • 模型文件仍保存在磁盘中(ollama list 可查看),不会被删除;

  • 但是需要注意,停止后,使用 API 依然能够访问,Ollama 会自动重新加载模型到内存,所以此时调用该模型的 API 会短暂延迟,加载完成后即可正常响应。

如需重新手动加载模型,执行之前运行模型的命令就可以了:

bash
docker exec -it my-ollama ollama run qwen3:1.7b

那你想问,我运行了指定的模型,通过API可以访问,如果我想主动卸载模型,让API不访问,只是在我需要的时候,再次启动该模型,并允许访问,这样的需求无法实现吗?

这个需要在 API 层面去控制,控制哪些模型对外开放,那么模型暂时禁用。

4.4 删除模型

如果要删除指定的模型,使用如下命令:

bash
docker exec my-ollama ollama rm qwen3:1.7b
  • 需要注意,模型文件从磁盘中彻底删除ollama list 中不再显示;
  • 当前运行中的模型会立即被卸载,无法再通过 API 或命令行访问。

删除模型后,再次通过如下命令运行模型:

bash
docker exec -it my-ollama ollama run qwen3:1.7b
  • Ollama 发现本地不存在模型,自动重新下载模型文件,下载完成后加载运行。