第 1 章 · 推理框架选型与服务化

📖 模型部署·考点精讲约 1617 字🎯 配套练习:AI落地·推理框架

考点梳理

2.1 推理框架对比(“4 个主流”)

框架定位强项弱项适合
Ollama本地一键跑模型极简(一条命令)、模型生态好吞吐/并发弱、调优空间小开发/Demo/小团队
vLLM高性能生产推理PagedAttention + Continuous Batching(吞吐高)上手稍陡、资源占用高生产级服务(吞吐优先)
llama.cppCPU/轻量端侧无 GPU 可跑、多平台(手机/嵌入式)性能上限低端侧/无 GPU
TGI(HF)生产推理HF 生态集成、量化/流式成熟社区活跃度略降HF 生态生产

选型口诀:“Demo 用 Ollama,生产用 vLLM,端侧用 llama.cpp,HF 生态看 TGI”(“4 选 1”)。

选型 3 问(“高频追问”):

① 吞吐还是延迟优先?   → 高并发吞吐选 vLLM;低延迟单请求看硬件
② 有没有 GPU?          → 没有 → llama.cpp;有 → vLLM/Ollama
③ 团队栈是什么?        → HF 栈选 TGI;通用栈选 vLLM

2.2 显存账 4 项(“最高频计算”)

显存 ≈ 模型权重 + KV Cache + 激活 + 框架开销
项性质估算(示例)
模型权重静态(加载即占)参数量 × 字节(7B FP16 ≈ 14GB)
KV Cache动态(随并发 × 上下文涨)并发越大、上下文越长,占得越多(大头)
激活临时(前向计算)较小(GB 量级内)
框架开销常驻(CUDA/框架)1~2GB 量级

例题:7B 模型 FP16,单卡 24GB(如 4090)够不够跑 8 并发 × 4K 上下文? → 权重 14GB + KV Cache(8 并发 × 4K 估算 4~8GB)+ 激活/开销 2GB ≈ 20~24GB——“压线,建议 INT8 量化或降并发/上下文”。

记忆锚:“权重静态 KV 动态;先算权重,再估 KV,留 20% 余量”。

2.3 服务化三件套(“能跑 → 能用”)

件内容要点
OpenAI 兼容 API/v1/chat/completions(流式/非流式)应用侧零改造(现有 OpenAI SDK 直接换 base_url)
鉴权API Key / Token生产必开(防滥用)
限流QPS / 并发 / token 配额防打爆(按容量定阈值)

记忆锚:“兼容 API 让应用不改代码,鉴权限流让服务不打爆”。

🧠 记忆工具箱

口诀速记

  • 选型:“Demo Ollama,生产 vLLM,端侧 llama.cpp,HF 看 TGI”;
  • 显存:“权重静态 KV 动态,先算权重再估 KV,留 20% 余量”;
  • 7B:“FP16 十四 G,INT8 七 G,INT4 三点五”;
  • 服务:“兼容 API 零改造,鉴权限流防打爆”。

场景锚点

  • 推理框架想象"“开店”":你不是顾客(不需要点菜),你是"开餐厅的"(“选设备 + 定产能”)——“Ollama = 家用小灶(快、省、但做不了大单);vLLM = 中央厨房(高吞吐、大并发、设备贵);llama.cpp = 移动餐车(没后厨也能出餐,就是慢)”——“选型 = 按单量选设备”(“10 单/天用小灶,1000 单/天开中央厨房”)。

⚠️ 易错提醒

  • 显存账"只算权重" = 重大失误:“KV Cache 随并发 × 上下文动态增长,常是爆显存的元凶”——“先算权重,再估 KV”;
  • Ollama ≠ 生产:“Ollama 是开发利器,不是生产方案”(“吞吐/并发/可观测都弱”)——“Demo 用它,上线换 vLLM”;
  • 量化"不测就上线" = 赌博:“INT4 掉点必须建测试集验证”(“别人说够用 ≠ 你的业务够用”);
  • 服务"裸奔上线" = 事故:“没有鉴权/限流 = 被白嫖到打爆”(“三件套齐了才上线”)。