本文从 大模型应用开发技术路线清单 中拆分,聚焦”五、模型推理与部署”部分。把模型跑起来,控制成本和延迟。
推理的核心挑战 大模型推理面临三个核心挑战:
显存 :70B 参数的 FP16 模型需要 ~140GB 显存
延迟 :用户等不了 10 秒才看到第一个字
吞吐 :100 个并发请求怎么处理?
一、推理基础 1.1 API 调用(最简单的方式) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 from openai import OpenAI client = OpenAI(api_key="sk-..." ) response = client.chat.completions.create( model="gpt-4" , messages=[{"role" : "user" , "content" : "你好" }], ) client = OpenAI( base_url="https://api.siliconflow.cn/v1" , api_key="sk-..." , ) response = client.chat.completions.create( model="Qwen/Qwen2.5-72B-Instruct" , messages=[{"role" : "user" , "content" : "你好" }], ) client = OpenAI( base_url="https://dashscope.aliyuncs.com/compatible-mode/v1" , api_key="sk-..." , )
API 选型 :
平台
特点
适用场景
OpenAI
效果最好,英文强
效果优先
硅基流动
国内访问快,模型多
国内部署
通义千问
阿里生态,中文强
阿里云生态
DeepSeek
推理能力强,性价比高
推理任务
1.2 本地推理 1 2 3 4 5 6 7 8 curl -fsSL https://ollama.ai/install.sh | sh ollama pull qwen2.5:7b ollama run qwen2.5:7b ollama serve
1 2 3 4 5 6 client = OpenAI(base_url="http://localhost:11434/v1" , api_key="ollama" ) response = client.chat.completions.create( model="qwen2.5:7b" , messages=[{"role" : "user" , "content" : "你好" }], )
1.3 模型量化 量化 = 用更少的比特表示模型参数,降低显存占用。
量化方法
精度
显存(7B模型)
精度损失
FP16
16-bit
~14GB
无
GPTQ
4-bit
~4GB
极小
AWQ
4-bit
~4GB
极小
GGUF
2-8-bit
2-7GB
可调
1 2 3 4 5 ./llama-server -m qwen2.5-7b-q4_k_m.gguf -c 4096 --port 8080
1.4 模型选型指南 1 2 3 简单任务(分类、提取、格式化) → 小模型(7B)或便宜 API 中等任务(问答、摘要、翻译) → 中等模型(14B-72B)或 GPT-4o-mini 复杂任务(推理、规划、创作) → 大模型(GPT-4o、Claude Opus)
任务类型
推荐模型
理由
结构化提取
Qwen2.5-7B / GPT-4o-mini
小模型够用,成本低
中文问答
Qwen2.5-72B / DeepSeek-V3
中文能力强
代码生成
Claude Sonnet / GPT-4o
代码能力最强
长文本分析
Claude Opus (200K)
上下文窗口最大
数学推理
DeepSeek-R1
推理能力最强
1.5 成本控制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 response = client.chat.completions.create( model="gpt-4" , messages=[ {"role" : "system" , "content" : LONG_SYSTEM_PROMPT}, {"role" : "user" , "content" : user_input}, ], )import hashlib cache = {}def cached_llm_call (prompt ): key = hashlib.md5(prompt.encode()).hexdigest() if key in cache: return cache[key] result = llm.invoke(prompt) cache[key] = result return resultdef call_with_fallback (prompt ): try : return fast_model.invoke(prompt) except (TimeoutError, RateLimitError): return slow_model.invoke(prompt)
1.6 流式输出 1 2 3 4 5 6 7 8 9 10 stream = client.chat.completions.create( model="gpt-4" , messages=[{"role" : "user" , "content" : "写一首诗" }], stream=True , )for chunk in stream: if chunk.choices[0 ].delta.content: print (chunk.choices[0 ].delta.content, end="" , flush=True )
二、高性能推理引擎 2.1 引擎对比
引擎
核心技术
适用场景
vLLM
PagedAttention, Continuous Batching
高吞吐推理,生产首选
SGLang
RadixAttention, Radix Tree 缓存
复杂控制流(RAG/Agent)
Ollama
易用性,本地化
开发调试
TGI
HuggingFace 官方
HuggingFace 生态
2.2 vLLM 部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 pip install vllm python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen2.5-7B \ --host 0.0.0.0 \ --port 8000 \ --max-model-len 8192 \ --gpu-memory-utilization 0.9 curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen/Qwen2.5-7B", "messages": [{"role": "user", "content": "你好"}] }'
2.3 SGLang 部署 1 2 3 4 5 6 7 8 pip install sglang[all] python -m sglang.launch_server \ --model Qwen/Qwen2.5-7B \ --host 0.0.0.0 \ --port 3000
SGLang 的优势在于前缀缓存 ——RAG 和 Agent 场景下,System Prompt 和检索结果的前缀相同,可以复用计算:
1 2 3 请求1: [System Prompt] + [RAG Context A] + [Question 1] 请求2: [System Prompt] + [RAG Context A] + [Question 2] ↑ 前缀相同,缓存复用
三、高并发优化 3.1 KV Cache KV Cache 缓存已计算的 Key-Value,避免重复计算:
1 2 3 生成第 N 个 Token 时: - 不用 KV Cache:重新计算所有 N-1 个 Token 的 K/V → O(n²) - 用 KV Cache:复用前 N-1 个 Token 的 K/V,只计算第 N 个 → O(n)
3.2 PagedAttention 像操作系统管理虚拟内存一样管理 KV Cache:
1 2 传统方式:预分配固定大小的 KV Cache → 浪费显存 PagedAttention:按需分配、动态回收 → 显存利用率提升 2-4x
3.3 Continuous Batching 1 2 传统批处理:等一批请求都完成才处理下一批 → GPU 空闲 Continuous Batching:完成一个请求立即插入新请求 → GPU 始终满载
3.4 性能优化总结
技术
效果
适用场景
KV Cache
推理速度 O(n) → O(1)
所有场景
PagedAttention
显存利用率 2-4x
vLLM
Continuous Batching
吞吐量 2-10x
高并发
量化(4-bit)
显存降低 4x
显存不足
Tensor Parallelism
多卡并行
单卡放不下
四、企业级部署 4.1 GPU 选型
GPU
显存
适用场景
价格
4090
24GB
开发/小模型
低
L40S
48GB
中等模型
中
A100
80GB
大模型训练/推理
高
H100
80GB
最高性能
很高
4.2 Docker 部署 1 2 3 4 5 6 7 8 9 10 11 FROM vllm/vllm-openai:latestENV MODEL_NAME=Qwen/Qwen2.5 -7 BENV MAX_MODEL_LEN=8192 CMD python -m vllm.entrypoints.openai.api_server \ --model $MODEL_NAME \ --host 0.0.0.0 \ --port 8000 \ --max-model-len $MAX_MODEL_LEN
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 services: llm: image: vllm/vllm-openai:latest ports: - "8000:8000" volumes: - ~/.cache/huggingface:/root/.cache/huggingface deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu ] environment: - MODEL_NAME=Qwen/Qwen2.5-7B
4.3 监控 1 2 3 4 5 6 7 关键指标: ├── GPU 利用率(目标 > 80%) ├── 显存使用率(告警 > 90%) ├── 请求延迟 P50/P95/P99 ├── 吞吐量(tokens/sec) ├── 队列深度(排队请求数) └── 错误率
五、学习建议 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Week 1: 能跑起来 ├── API 调用(OpenAI / 硅基流动) ├── Ollama 本地部署 └── 流式输出 Week 2: 生产化 ├── vLLM 部署 ├── Docker 容器化 └── 简单监控 Week 3: 优化 ├── 量化部署 ├── 性能调参 └── 弹性伸缩
上一篇:四、模型微调 下一篇:六、典型应用场景技术栈 返回导航:大模型应用开发技术路线清单