BrainBank

07 - 如何更改或添加 LLM 模型

2026/7/30 21:24:56 · 更新于 2026/7/30 22:47:32

AI 翻译于 2026/7/30 23:16:24 · 使用 Qwen3.6 35B (fast, default)

#step-by-step#ollama#model-management#local-llm#vram-optimization#model-switching#embedding-models#macos-ai

一本关于在基于 Ollama 的本地 AI 服务器中添加、删除和更换大语言模型(LLM)的实用指南——涵盖 Mac M 系列芯片的显存计算、配置文件更新、嵌入模型切换以及服务层调优。

切换或添加 LLM 模型无需进行任何代理服务器代码更改。所有模型管理均在 Ollama 层完成,受严格的显存(VRAM)限制和三处文档更新规则的约束。更换聊天模型是一个拉取并验证的操作,而更换嵌入模型则会触发知识库的完全重新索引。

为何模型切换对架构透明

apps/agent-server 代码库是刻意构建为与模型无关的。当请求到达时,指定的模型名称会直接透传给 Ollama,无需路由逻辑、硬编码默认值或分支判断。出站请求构建器(位于 agent_loop.py 中的 _prepare_upstream_body())统一处理模型字段。因此,添加新模型仅需将其拉取到 Ollama 并按名称请求即可——无需对服务器进行任何修改。 唯一的架构例外是嵌入模型nomic-embed-text),它奠定了整个知识库向量空间的基础;更换它需遵循后文详述的另一种更复杂的流程。

显存限制与共存容量计算

在拉取任何新模型之前,请验证硬件兼容性。这台 Mac 提供77.8 GiB 的可用显存,Ollama 已配置为最多保留两个驻留模型(OLLAMA_MAX_LOADED_MODELS=2)。请使用以下换算公式计算容量:

Model size in GB ÷ 1.074 = size in GiB (the unit that matters for this math)

当前模型搭配兼容性:

模型组合组合大小能否容纳?
qwen3.6:35b-a3b + qwen3-vl:30b40.5 GiB✅ 是,均能保留在显存中
qwen3.6:35b-a3b + gpt-oss:120b83.1 GiB❌ 超出显存上限
qwen3-vl:30b + gpt-oss:120b79.1 GiB❌ 超出显存上限
共存规则: 任何超过约 55 GiB 的模型都无法与默认的主力模型同时运行。选择容量更大的模型将导致当前已加载的模型被驱逐,并在下一次请求时触发长达数分钟的冷启动延迟。这是硬性物理限制,而非软件缺陷。请主动规划由哪个模型承担大容量角色,而不是靠碰运气去发现取舍关系。

添加与移除模型

添加:

ollama pull <model-name>
ollama list          # Confirm it's there and check its size

300亿至600亿参数(30–60B)的模型通常只需几分钟到超过一小时即可完成下载(最初拉取 gpt-oss:120b 耗时 30–90 分钟)。服务器无需重启;GET /v1/models 会根据需即时查询 Ollama 的实时状态(使用 /api/tags 获取目录,使用 /api/ps 监控驻留内存)。 移除:

ollama rm <model-name>
ollama list          # Confirm it's gone

关键更新规则(同时适用于添加和移除操作): 您必须更新三个特定位置,否则新模型将默默地失败或引发引用错误。

  1. 任何应用的静态模型列表(例如,展示站点的读取器读取的是硬编码表格,而非实时的 Ollama 状态)。
  2. SOP-LLM-OPERATIONS.md 的模型表(第 1 部分)——这是跟踪运行哪些模型及其原因的最高权威来源。
  3. AGENT_SERVER_GUIDE_v2.md 的日常日志——记录变更的理由,以确保上下文在未来的重新调整中得以保留。

⚠️ 警告: 如果某个脚本、应用默认值或定时任务(cron job)仍然引用已移除的模型名称,Ollama 会抛出错误而非优雅地降级。请先审计隐藏的调用者。

测试策略、默认设置与路由限制

试用流程: 在提升生产环境之前,务必先在 LM Studio 中测试。LM Studio 搭载了苹果的 MLX 运行时框架,据报道在 Apple Silicon 芯片上拥有 10–20% 的速度优势。这使得我们能够在不触碰实时 Ollama 环境的情况下,快速进行侧对侧的质量与速度基准测试。经过验证后,运行 ollama pull 将其拉取到本地,以便通过现有的 OpenAI 兼容端点进行路由。

默认模型与路由:代理服务当前未实施默认模型逻辑或服务器端路由。每个调用者都必须在请求体中明确指定模型。目前尚不存在服务器端自动化功能(例如,“始终将具备视觉能力的请求路由至 VL 模型”或“将简短查询导向更快、更小的模型”)。最接近的先例是 ai_chain.py 客户端路由器,它在调用 API 之前选择模型。实现服务器端路由是一个范围明确的功能扩展(参见 08_Extending_The_Harness_Agent.md)。

服务配置与维护频率

三个启动脚本控制着 Ollama 的服务行为。它们的名称仅相差一个单词,这使得很难编辑错误的文件——这三个文件必须保持同步:

  • start-ai-stack.command(主要常规脚本)
  • start-ai-server.command
  • start-ai-server.sh

当前环境默认设置如下:

export OLLAMA_MODELS=/Volumes/AI_DATA/models/ollama
export OLLAMA_MAX_LOADED_MODELS=2
export OLLAMA_KEEP_ALIVE=30m
export OLLAMA_FLASH_ATTENTION=1
export OLLAMA_NUM_PARALLEL=4
export OLLAMA_CONTEXT_LENGTH=65536

要修改这些设置:请对三个脚本进行相同的编辑,运行 stop-ai-stack.command 后跟随 start-ai-stack.command,然后通过以下命令使用实时变数验证:

ps eww $(pgrep -x ollama) | tr ' ' '
' | grep OLLAMA

⚠️ 停机警告: stop-ai-stack.command 还会终止旧版网关,使大约 20 个旧集成短暂下线。请在低流量时段安排服务变更。

未来关注要点:

  • 关注 qwen3.6 是否发布官方(非预览版)的 Ollama 标签。
  • 留意 Ollama 是否引入原生视频输入支持,以替代当前的 ffmpeg 帧提取临时方案。
  • 3–6 个月重新评估一次模型阵容。优秀的开源模型不断更新推出;今日的“主力”只是特定时间点的基线,而非永久固定的选项。

更改嵌入模型(关键路径)

nomic-embed-text 负责生成向量,以对齐知识库文档和传入的搜索查询。更换它将立即导致几何对齐失效。所需流程如下:

  1. 索引将失效: 旧嵌入使用旧的几何空间;新查询将使用新模型的几何空间。两者在数学上变得不可比。
  2. 强制全量重建索引: 运行带强制标志的 kb_sync.pySync-Knowledge-Base.command,重新处理所有知识库。这是一项缓慢的批量操作,而非增量更新。
  3. 更新环境变量: 更改 tools/knowledge_base.py 中的 AGENT_EMBED_MODEL(默认值为 nomic-embed-text),使新查询与重新索引后的模型匹配。

请勿随意更改嵌入模型——它会触发全项目重新索引,应将其视为重大架构操作,而非简单的配置调整。

核心要点

  • 零代码替换: 模型更换无需编辑代理服务器代码;完全依赖 Ollama 的实时状态以及三项关键文档更新。
  • 显存硬性限制: 77.8 GiB 的 Mac 将共存模型对的上限限制在约 55 GiB;体积过大的模型会相互驱逐,并触发长达数分钟的冷启动加载。
  • 先测试后部署: 在将优胜模型晋升至 Ollama 用于生产路由之前,务必先在 LM Studio(MLX 运行时)中进行基准测试。
  • 嵌入模型变更会导致索引失效: 更换 nomic-embed-text 会强制知识库全量重新索引;切勿将其视为简单的配置调整。
  • 同步所有启动脚本: 在调整服务参数时,需对三个启动脚本进行一致更新;并安排在低流量时段进行更换,以避免旧网关服务中断。

学习地图

模型管理路线图

阶段一 — 基础

  • 理解代理服务器为何采用模型无关架构(无硬编码路由)
  • 了解 Ollama 作为模型注册表与推理层的作用
  • 审查 VRAM 容量限制(可用 77.8 GiB,最多同时驻留 2 个模型)

阶段二 — 规划行动

  • 计算组合模型大小,使用公式:Model size in GB ÷ 1.074 = size in GiB
  • 在拉取任何新模型之前,检查哪些模型配对可以共存
  • 若超过 55 GiB 阈值,规划哪个模型作为“主力大模型”

阶段三 — 添加模型

  • 通过 ollama pull <model-name> 拉取模型
  • 使用 ollama list 进行验证
  • 更新三个位置:应用静态模型列表、SOP-LLM-OPERATIONS.md 表格、AGENT_SERVER_GUIDE_v2.md 每日日志
  • 无需重启代理服务器——拉取完成瞬间新模型即可选

阶段四 — 测试与上线

  • 先在 LM Studio 中试用(MLX 运行时,Apple Silicon 上快 10%–20%)进行对比
  • 确认质量/速度达标后,再将其正式部署至 Ollama
  • 规划移除此前已退役的模型:检查脚本、应用与 cron 任务中是否仍有残留引用

阶段五 — 服务配置

  • 同步三个启动脚本:start-ai-stack.command、start-ai-server.command、start-ai-server.sh
  • 调整 OLLAMA_MAX_LOADED_MODELS、OLLAMA_KEEP_ALIVE、OLLAMA_NUM_PARALLEL、上下文长度等参数
  • 使用 ps eww $(pgrep -x ollama) | tr ' ' ' ' | grep OLLAMA 进行验证

阶段六 — 嵌入模型变更(独立且需谨慎的流程)

  • 理解:更改嵌入模型会立即破坏所有知识库之间的可比性
  • 需要通过 kb_sync.py 对全量知识库重新进行数据摄入/处理
  • 更新 AGENT_EMBED_MODEL 环境变量以保持一致

阶段七 — 维护周期

  • 每 3–6 个月重新评估一次模型阵容
  • 关注官方 Ollama 标签(如 qwen3.6 稳定版更新)
  • 监控 Ollama 原生视频输入支持,以适配视觉类工作流程

动手实践——分步指南

  1. 检查当前显存情况 — 运行 ps eww $(pgrep -x ollama) | tr ' ' ' ' | grep OLLAMA 查看服务配置,然后通过公式 GB ÷ 1.074 计算现有模型组合的总大小(单位:GiB)。

  2. 拉取你想尝试的新模型 — 执行 ollama pull <model-name> 并等待下载完成(120B 参数模型通常需要 30–90 分钟以上,较小模型会更快)。

  3. 验证是否显示成功 — 运行 ollama list 确认新模型已列示,并核对列出的大小。

  4. 更新应用的静态模型选择器 — 如果你使用了展示站点或前端且硬编码了模型表格,请在此处添加新模型名称,以便用户可选。

  5. 更新文档 — 编辑 SOP-LLM-OPERATIONS.md 第一部分(模型清单表)与 AGENT_SERVER_GUIDE_v2.md 的每日运行日志,记录此项变更以供日后参考。

  6. 优先通过 LM Studio 测试(可选但推荐) — 将同一模型拉取至 LM Studio,打开左右并排的两个对话窗口分别输入提示词,对比旧模型与新模型在 Apple Silicon MLX 运行时下的响应质量与延迟。

  7. 若决定停用旧模型 — 运行 ollama rm <model-name>,然后更新上述三份文档(应用选择器、SOP 表格、指南日志)以移除对其的引用。仔细检查定时任务与脚本是否仍在按名称请求该模型。

  8. 按需调整服务参数 — 同步编辑 start-ai-stack.commandstart-ai-server.commandstart-ai-server.sh,使用新设置更新 OLLAMA_MAX_LOADED_MODELSOLLAMA_KEEP_ALIVEOLLAMA_NUM_PARALLEL 等变量,随后通过先执行 stop-ai-stack.command 再执行 start-ai-stack.command 进行重启。

  9. 验证运行配置 — 重启后再次运行前述 grep 命令,确认所有环境变量均已正确生效。

三大推荐资源

  1. 1
    Ollama Documentation

    Official Ollama model registry and documentation covering pulling, listing, removing models and server configuration.

    https://ollama.com/library

  2. 2
    Llama.cpp / GGUF Model Format Guide

    Technical reference for the GGUF quantization format that Ollama uses — understanding model sizes, quantization levels (Q4_K_M, FP16, etc.), and VRAM requirements.

    https://github.com/ggerganov/ggml/blob/master/docs/gguf.md

  3. 3
    LM Studio Documentation

    Official LM Studio docs covering model management, MLX runtime configuration on Apple Silicon, and side-by-side model comparison workflows.

    https://lmstudio.ai/docs

链接由 AI 推荐——使用前建议快速核实。