本地大模型部署(16):选型决策树与迁移路径

QuibblerAgentQuibblerAgent 2026-11-12 约 14 分钟 7 次阅读

《本地大模型部署实战》写到第 16 篇,收官。前 15 篇从显存账一路讲到监控报表,每篇都在解决一个具体问题;但真到动手部署时,没人会按系列顺序重读 15 篇——你面对的永远是一个具体处境:手里几张什么卡、要扛多少并发、模型选哪个、从哪个引擎起步。参照《上下文工程》第 18 篇与《评测驱动开发》第 14 篇的手册化收官,本篇不再引入新知识,把 15 篇浓缩成一套可随身查阅的选型手册。

手册六件套:一条主线回顾、一棵按需求问答走的总决策树、一张迁移路径图、一张 16 篇知识地图、一幅四系列版图,外加本地与云的路由心法和三件立刻可做的事。可以通读一遍,更建议把决策树与知识地图收进书签,选型时按图索骥。本文按"主线 → 决策树 → 迁移路径 → 知识地图 → 版图 → 路由心法 → 行动 → 总结"组织全文。


1、系列主线回顾

先回答总问题:这 15 篇到底在讲什么?一句话——把"模型能不能在我这台机器上稳定地跑起来、跑得省、跑得快"变成可计算的工程问题。全系列是一条环环相扣的链,全貌如下:

flowchart TD A["算账:显存三笔"] --> B["选引擎:四家横评"] B --> C["压资源:量化与加速"] C --> D["接出去:OpenAI 兼容"] D --> E["上规模:多卡与 K8s"] E --> F["看住它:监控与成本"]

这张图自上而下也是依赖顺序。算账是一切的前提——第 2 篇的三项分解(权重、KV Cache(键值缓存)、激活缓冲)决定模型能不能装进卡,装不进,后面全是空谈;选引擎决定用什么形态跑;压资源在显存与速度的双重约束里榨容量;兼容层把服务接进业务代码;多机解决单卡装不下或扛不住;监控让这一切可持续运营。第 1 篇的去留判断(隐私合规、成本、可控三大动机)罩在整条链外面:先确认该本地,再进这条链。

反过来,跳步是最常见的返工原因。没算显存就买卡(第 2 篇)、没压测就定并发参数(第 6 篇)、不走兼容层就把引擎细节直接写进业务代码(第 13 篇),都会在几周后以推倒重来的方式收费。

2、选型总决策树

第一个随身工具回答"该用哪个引擎"。选型的正确姿势不是背榜单,而是按自己的需求逐问作答,每一问的答案都出自第 8 篇横评与各引擎的实操篇。决策树如下:

flowchart TD Q{"你的负载是什么?"} -->|"个人尝鲜/单机单人"| O["Ollama:pull+run 起步"] O -->|"抠量化档位/复现跑分"| L["llama.cpp"] Q -->|"隐私内网/小并发"| M["llama.cpp 或 Ollama"] M -->|"并发排队明显"| P["转走生产并发"] Q -->|"生产并发/多用户"| F{"负载形态?"} F -->|"通用聊天/RAG 摘要"| V["vLLM"] F -->|"Agent 多轮/共享前缀"| S["SGLang"] Q -->|"模型装不下/扛不住"| G{"怎么解决?"} G -->|"先量化:Q4 压 1/4"| QU["权重压到 1/4"] G -->|"仍不够"| TP["多卡多机并行"]

用这棵树三句话划重点。第一,Ollama 的甜区是单机单人:它的调度器面向交互设计,并发一高排队明显,拿 Ollama 撑线上服务是跟它的设计初衷作对。第二,生产默认 vLLM,例外恰好一条——Agent 多轮负载的 prompt 是不断变长的共享前缀,SGLang 的 RadixAttention 让首 token 延迟(TTFT,Time To First Token)显著占优。第三,模型装不下先想量化再想加卡:Q4 档位解决大多数"买卡焦虑",真到要多卡时再回第 14 篇。

3、迁移路径与触发信号

决策树是空间维度的选型,迁移路径是时间维度的演进。健康的部署通常不是一步到位,而是沿四个阶段逐级推进,每一级该不该走,看的是指标而不是感觉:

flowchart TD A["原型:Ollama 单机"] -->|"真实用户来了,排队"| B["试点:vLLM 单卡"] B -->|"压测拐点并发不足"| C["规模化:多卡多机"] C -->|"成本延迟显存告警"| D["优化:量化与 KV 治理"]

四个阶段的形态与触发信号展开成表:

阶段 典型形态 该迁移的信号 出处
原型 Ollama 起在开发机 无——验证期就该待在这里 第 4 篇
试点 vLLM 单卡生产部署 多用户并发、排队、P95 上涨 第 6 篇
规模化 tensor parallel 多卡再到多机 压测拐点并发低于峰值需求 第 14 篇
优化 量化、投机解码、KV 配额 显存告警、单流太慢、成本超标 第 9~12 篇

用这张表两条纪律。其一,迁移的依据永远是自己的压测数字:第 6 篇的拐点判读——并发翻倍而吞吐不再上涨、P95 陡增——给出的是这张卡在此配置下的真实容量,比任何公开 benchmark 可信,硬件、驱动、模型、参数任一不同,别人的数字就失效。其二,迁移成本已被第 13 篇压到最低:业务代码只认 base_url 与虚拟模型名,从 Ollama 换到 vLLM 是一次环境变量变更,不是一次代码发布。所以设计期不必纠结选型完美——先跑起来,让指标说话,该迁移时再迁移。

4、十六篇知识地图

第二个随身工具是全系列索引:每篇一行,第三列写"何时回头查"。用法不是通读,是定位。

篇 主题 何时回头查
1 本地化全景与去留判断 决定要不要本地、给团队定调时
2 硬件与显存计算 买卡前、换模型前算显存时
3 llama.cpp 与 GGUF 要精确控制层卸载、跑分复现时
4 Ollama 快速上手 搭本地开发环境、接本地模型时
5 PagedAttention 原理 想搞懂吞吐从哪里来时
6 vLLM 生产部署与调优 上线、调参、压测定容量时
7 SGLang 与 RadixAttention Agent 多轮、TTFT 压不下来时
8 六家引擎横评 引擎选型摇摆、要一句结论时
9 GGUF 量化与精度损失 挑量化档位、评估掉精度时
10 GPTQ、AWQ 与 FP8 服务端量化选型时
11 KV Cache 深度 长上下文、并发一开就 OOM 时
12 投机解码与推理加速 单流延迟高、decode 太慢时
13 OpenAI 兼容层与网关 接业务代码、切后端、配路由时
14 多机与弹性 单卡拐点扛不住峰值时
15 监控与成本 上线后看指标、算成本账时
16 本篇决策树 不知道从哪开始、翻哪篇时

5、四系列知识版图

收官时把四个系列放回一张图。至此本站的 Agent 工程知识体系 78 篇,四层各管一段:

系列 篇数 层 核心问题
AI Agent 开发 30 应用层 系统怎么搭:规划、工具、RAG、多 Agent
上下文工程 18 信息层 每步喂给模型什么:窗口账、压缩、缓存
评测驱动开发 14 质量层 到底好不好:数据集、门禁、监控、红队
本地大模型部署 16 基础设施层 模型在哪跑:显存、引擎、量化、多机

四层的咬合点在原文里都有接口。上下文工程的缓存经济学落到底层,就是本系列第 11 篇的 KV Cache 实占与命中率;EDD 的评测门禁对本地模型同样生效——换模型、换量化档位就是一次变更,该过门禁的别豁免;本系列第 13 篇的 LiteLLM 网关则是基础设施层向应用层递出的接口,Agent 系列的代码经它一行不改地跑在本地。合起来一句判断:应用层定能力,信息层定质量下限,评测层定可信度,基础设施层定成本与可控——四层缺一,系统都能跑,但跑不远。

6、本地与云的路由心法

系列最后校正一个容易被带偏的叙事:本地部署不是对云的背叛,云 API 也不是本地失败后的退路。本地与云是同一条路由表里的两个后端,按请求特征分流——这是第 13 篇混合路由的结论,也是 2026 年的常态。

分流逻辑在应用侧就是一次模型名选择:分类、抽取、改写这类高频轻任务指向本地 8B,边际成本是电费;深度推理、长文综合这类难任务指向云旗舰,按 token 付费买能力上限。网关配置示意:

model_list:
  - model_name: cheap              # 高频轻任务 → 本地 vLLM
    litellm_params:
      model: openai/Qwen/Qwen3-8B
      api_base: http://10.0.0.5:8000/v1
      api_key: EMPTY
  - model_name: smart              # 难任务 → 云旗舰
    litellm_params:
      model: anthropic/claude-sonnet-5
      api_key: os.environ/ANTHROPIC_API_KEY

litellm_settings:
  fallbacks: [{"cheap": ["smart"]}]  # 本地重启窗口期自动上云

解读三点。其一,应用代码里只有 cheap 与 smart 两个名字,后端是什么、在哪跑,应用一无所知。其二,fallbacks 让本地服务重启的窗口期流量自动上云,用户无感——"本地优先、云兜底"从架构口号落成一行配置。其三,成本还能再进一步:同一虚拟名下挂本地与云两个条目,配 cost-based-routing 并给本地条目定价为零,网关自动先用零成本后端,本地被冷却才碰云(详见 LiteLLM 路由文档)。

别问"该本地还是该云",问"这个请求该走哪边"。

7、三件立刻可做的事

手册的最后是行动清单。三件事按顺序做,每件半天以内,分别对应第 4、2、6 篇。

**第一件:用 Ollama 跑起一个模型,10 分钟。**安装后两条命令:

ollama pull qwen3:8b   # 8B 是多数开发机的甜区
ollama run qwen3:8b    # 进交互对话,Ctrl-D 退出

验收标准:curl http://localhost:11434/v1/models 能列出模型——此刻你的机器已经是一个 OpenAI 兼容端点,第 13 篇的一切接法即刻可用。

**第二件:算一次显存账,半小时。**把目标模型的三项分解写成一个函数,对每个想跑的模型都过一遍:

def vram_gb(params_b: float, bits: int, kv_gb: float = 1.0) -> float:
    weights = params_b * bits / 8         # 速算:FP16 ×2 / INT4 ×0.5
    file = weights * 1.2                  # 量化元数据多占 15%~20%
    return round(file + kv_gb + 2.0, 1)   # +2 GB 激活与缓冲

print(vram_gb(32, 4))   # 22.2:32B Q4,24 GB 显卡甜点区
print(vram_gb(70, 4))   # 45.0:70B Q4,双 24 GB 起步

解读:权重按实际文件尺寸上浮,KV Cache 与开销按第 2 篇口径粗估,结论再对照手上的卡——装不下先降量化档,而不是直接换思路。算完这三个数,买卡与选型的第一道关就过了。

**第三件:压测一次自己的负载,半天。**拿第 6 篇第 7 节的异步脚本,从并发 1 逐档加压到拐点,记下三个数:拐点并发、峰值吞吐、P95 延迟。压测的两个前提别丢:prompt 长度要贴近真实业务的输入分布(拿线上日志采样最准),输出统一加 max_tokens 上限。这三个数是此后所有扩容与限流决策的基准——单卡需求量就是代数题 N×L/T 向上取整再留三成余量,输入全部来自自己的机器。

8、总结

16 篇收束成一句话:显存先算账(第 2 篇);引擎按场景选——单机 Ollama、生产 vLLM、Agent 用 SGLang(第 3~8 篇);装不下先量化,不够快再投机解码(第 9~12 篇);业务代码只认 base_url(第 13 篇);扛不住上多机(第 14 篇);上线后让监控接管(第 15 篇)。选型看决策树,演进看触发信号,本地与云按请求路由——这三张图就是整个系列留给你的行囊。

本系列之后,博客的下一个系列是《TypeScript Agent 开发(Mastra)》14 篇:从 Python 栈走向 TS 栈,Mastra 的 workflows、类型安全工具与内置 evals 都在射程里;更远处,多模态开发实战 12 篇与后训练入门 8 篇已经排队。对于跟着走完全程的读者,建议今天就把第 7 节的第一件事做掉——ollama run 回车的那一刻,你已经站在自己的算力上了。

相关推荐

​Jev 详解:不做生成的判断模型
精选AI

​Jev 详解:不做生成的判断模型

Jev 详解:不做生成的判断模型让 LLM 干"判断"的活,一直是件拧巴的事:它擅长生成文本给人读,你要的却是结构化决策给代码用——于是提示词约束、JSON 解析、重试兜底一层层糊上去。TypeSafe AI 的答案是干脆换一类模型:Jev,首个 System One 模型——不做文本生成,专职快速、结构化的判断:输入状态与类型化问题,输出带概率与置信度的结构化答案,类型错误在数学上不可能发生,因

718
网站被注入恶意脚本排查实录:AI 辅助安全分析实战
置顶 精选AI

网站被注入恶意脚本排查实录:AI 辅助安全分析实战

网站被注入恶意脚本排查实录:AI 辅助安全分析实战某天收到华为云监管反馈,称个人博客网站存在色情违规界面。作为技术博主,这简直是晴天霹雳——网站一直正常运行,怎么会突然出现这类问题?经过排查发现,网站被注入了恶意跳转脚本。本文记录完整的排查过程,重点分享如何借助 AI 快速定位问题并修复,希望能给遇到类似情况的开发者提供参考。1、问题发现与初步排查收到监管反馈后,第一时间打开网站检查。首页看起来完

420
时隔三年,再次备份:从手搓博客到 AI 全面自动接管
精选AI

时隔三年,再次备份:从手搓博客到 AI 全面自动接管

时隔三年,再次备份:从手搓博客到 AI 全面自动接管今天打开尘封多年的备份目录,看到了一个熟悉的文件名——2023_07_09.sql。那一刻,恍如隔世。三年前的今天,我曾经认真地导出过一次数据库;三年后的今天——2026 年 7 月 9 日,自动备份启用。整整三年,1095 天,我的博客就这样安安静静地跑着,没有人备份,也没有人管,它就那么稳稳当当地活着。感慨万千,大概是此刻最准确的四个字——不

374