← 人工智能返回顶部

Inference Engines & Model Serving

LLM 推理框架负责加载模型、执行计算并生成 Token。

Model Serving 在此基础上,还需要处理 API 请求、调度、批处理、并发、缓存及性能监控。

1. 推理工具分类

分类主要工具典型用途
通用模型框架Hugging Face Transformers模型加载、研究、开发
轻量推理 Runtimellama.cpp本地和低资源推理
本地模型产品Ollama、LM Studio模型管理、本地 API、测试
生产 Serving EnginevLLM、SGLang高并发 GPU 推理
硬件优化推理栈TensorRT-LLMNVIDIA GPU 深度优化
维护中的 Serving EngineTGI现有系统维护

这些工具存在能力重叠,并非严格互斥。

例如 llama.cpp 也提供 HTTP Server 和 Continuous Batching;vLLM、SGLang 也能用于单用户本地测试。

2. Inference Runtime 与 Serving Engine

Inference Runtime

主要负责:

Model Weights
      ↓
Load Model
      ↓
Execute GPU / CPU Kernels
      ↓
Prefill / Decode
      ↓
Generated Tokens

Serving Engine

在模型执行能力之上增加:

HTTP / OpenAI-compatible API
               ↓
          Request Queue
               ↓
            Scheduler
               ↓
       Continuous Batching
               ↓
       Prefill / Decode
               ↓
        KV Cache Manager
               ↓
          GPU Kernels
               ↓
           CUDA / ROCm
               ↓
              GPU

现代 Serving Engine 通常还需要支持:

  • Prefix Caching。
  • Quantization。
  • Streaming。
  • Structured Outputs。
  • LoRA Adapters。
  • Multi-GPU。
  • Metrics / Observability。

3. Hugging Face Transformers

Transformers 是通用模型库和执行框架,不是专门针对高并发 Serving 设计的。

主要提供:

  • Model Architecture 实现。
  • Pretrained Weights 加载。
  • Tokenizer。
  • Generation。
  • Training / Fine-tuning 支持。

基础示例:

from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = "your-model-id"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
)

inputs = tokenizer("Hello", return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=100,
)

print(tokenizer.decode(outputs[0], skip_special_tokens=True))

适合:

  • 理解模型架构。
  • 调试模型。
  • 研究生成行为。
  • 微调与实验。
  • 建立性能和质量基线。

但如果需要大量并发请求,通常会考虑专门的 Serving Engine。

4. llama.cpp

llama.cpp 是主要由 C/C++ 实现的高效推理项目。

它尤其适合本地、消费级硬件及量化模型。

支持:

  • CPU Inference。
  • CUDA、Metal 等多种硬件后端。
  • GGUF。
  • Quantization。
  • GPU Offloading。
  • HTTP Server。
  • Continuous Batching。
  • Speculative Decoding。
  • Embedding / Reranking。
  • Structured Outputs。

官方 llama-server 已提供 OpenAI-compatible API、多请求推理及 Continuous Batching。

基本命令

llama-cli -m model.gguf

启动 HTTP Server:

llama-server \
  -m model.gguf \
  --host 127.0.0.1 \
  --port 8080

适合:

Apple Silicon
CPU-only
Consumer GPU
Limited VRAM
Local Quantized Models
Edge Devices

5. Ollama

Ollama 将本地模型下载、管理、运行和 API 服务封装为易于使用的工具。

ollama run qwen3

主要能力:

  • 下载和管理模型。
  • 运行本地模型。
  • 管理模型参数与模板。
  • 通过 Modelfile 创建自定义模型配置。
  • 提供 HTTP API。
  • 支持常见量化模型。

本地 API 默认地址通常为:

http://localhost:11434

Ollama 同时提供其原生 API 和 OpenAI-compatible 接口。

对于学习本地模型部署,Ollama 通常比直接操作底层推理引擎更简单。

但如果需要研究底层 KV Cache 管理、Kernel 和复杂 GPU 调度策略,应进一步学习 vLLM、SGLang 或 llama.cpp 本身。

6. LM Studio

LM Studio 是面向本地模型使用与开发的工具。

主要能力:

  • GUI 模型搜索与下载。
  • 加载和运行本地模型。
  • 模型参数调整。
  • 本地聊天。
  • HTTP API Server。
  • CLI 工具。

支持 llama.cpp Runtime,并在 Apple Silicon 上支持 MLX 模型。

与 Ollama 的主要区别是:

对比OllamaLM Studio
主要体验CLI / API 优先GUI 优先
模型管理支持支持
HTTP API支持支持
本地模型测试支持支持
典型用户开发者、自动化程序本地模型体验与调试

二者定位接近,通常掌握一个即可。

7. vLLM

vLLM 是面向高吞吐、低延迟 LLM Serving 的开源推理引擎。

主要优化:

  • PagedAttention / Paged KV Cache。
  • Continuous Batching。
  • Chunked Prefill。
  • Automatic Prefix Caching。
  • Speculative Decoding。
  • Quantization。
  • Multi-GPU / Distributed Inference。
  • LoRA Serving。
  • OpenAI-compatible API。

vLLM 的关键能力是通过高效调度和 KV Cache 管理,提升 GPU 利用率及整体 Serving Throughput。

启动模型服务

vllm serve your-model-id \
  --host 127.0.0.1 \
  --port 8000

需要正确配置模型、GPU 环境和依赖。

常见参数:

参数用途
--model / 模型位置参数指定模型
--dtype计算精度
--quantization指定量化方式
--max-model-len最大上下文长度
--tensor-parallel-sizeTensor Parallel GPU 数量
--gpu-memory-utilizationGPU 内存使用预算相关配置
--max-num-seqs并发序列调度上限
--max-num-batched-tokens调度步骤的 Token 预算

实际参数可用值随 vLLM 版本、模型和硬件而变化。

典型用途

  • 高并发 LLM API。
  • RAG 服务。
  • Agent 后端。
  • 多用户聊天系统。
  • GPU 推理性能测试。

8. SGLang

SGLang 也是高性能 LLM Serving Framework。

它与 vLLM 有较大功能重叠,包括:

  • Continuous Batching。
  • Paged Attention。
  • Quantization。
  • Tensor / Pipeline / Expert Parallelism。
  • Speculative Decoding。
  • Structured Outputs。
  • Multi-LoRA。
  • Prefill-Decode Disaggregation。

SGLang 的重要特色包括 RadixAttention、Prefix Caching 与高性能 Runtime。

RadixAttention / Radix Cache

通过 Radix Tree 等结构组织共享的 Prompt Prefix,复用对应的 KV Cache。

例如:

Request A:
System Prompt + User Question A

Request B:
System Prompt + User Question B

              Shared Prefix
                   ↓
             Cached KV Blocks
                   ↓
         ┌─────────┴─────────┐
      Request A           Request B

对于具有大量共享 System Prompt、Few-shot Examples 或重复前缀的请求,可能获得明显收益。

但 vLLM 同样支持 Prefix Caching,因此这不是 SGLang 独有的能力。

vLLM 与 SGLang

对比vLLMSGLang
定位通用高性能 Serving通用高性能 Serving
Continuous Batching支持支持
Prefix Caching支持支持,RadixAttention 是重要特色
Structured Outputs支持支持
Multi-GPU支持支持
Agent Workloads支持支持
性能优劣依赖场景依赖场景

不能笼统认为某一个引擎永远更快。

应针对相同模型、硬件、输入输出长度和并发条件进行 Benchmark。

9. TensorRT-LLM

TensorRT-LLM 是 NVIDIA 面向 LLM 推理优化的技术栈。

重点是充分利用 NVIDIA GPU 的硬件能力。

相关技术:

  • Tensor Cores。
  • CUDA Optimized Kernels。
  • FP8 / FP4 Quantization。
  • Kernel Fusion。
  • In-flight Batching。
  • Paged KV Cache。
  • Chunked Prefill。
  • Speculative Decoding。
  • Multi-GPU / Multi-node Parallelism。

NVIDIA 官方文档列出了上述主要优化功能,但低精度格式支持还取决于 GPU 架构,例如 FP4 的高性能支持与 Blackwell 等硬件相关。

适合:

  • NVIDIA GPU 生产环境。
  • 高性能推理优化。
  • 对特定 GPU 架构进行深度调优。

它更强调 NVIDIA 硬件和软件生态,不是跨所有硬件平台的通用解决方案。

10. TGI:Text Generation Inference

TGI 是 Hugging Face 开发的 LLM Serving Engine。

曾经是重要的开源模型生产部署方案,支持:

  • Continuous Batching。
  • Streaming。
  • Quantization。
  • Paged Attention。
  • Prometheus Metrics。
  • OpenAI-compatible API。

但 TGI 已进入 Maintenance Mode。

Hugging Face 目前推荐新部署优先考虑 vLLM、SGLang 等替代方案。

因此了解 TGI 的历史定位和基本机制即可,不建议把它作为当前学习生产 Serving 的第一选择。

11. OpenAI-compatible API

现代推理引擎通常会提供兼容 OpenAI API 风格的 HTTP 接口。

例如:

Application
     ↓
OpenAI-compatible HTTP API
     ↓
Inference Server
     ↓
Model Runtime
     ↓
GPU

常见 Endpoint:

POST /v1/chat/completions
POST /v1/completions
GET  /v1/models

Python 示例

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="local-key",
)

response = client.chat.completions.create(
    model="your-model-id",
    messages=[
        {"role": "user", "content": "Hello"}
    ],
)

print(response.choices[0].message.content)

通过修改 base_url,应用可以连接不同的兼容推理引擎。

但 OpenAI-compatible 不代表所有功能完全一致,工具调用、结构化输出、Reasoning、Streaming 等仍可能存在兼容性差异。

另外,对外公开推理服务必须正确设置认证、限流和访问控制;本地示例中的 API Key 不等于生产认证已经配置完成。

12. Prefill-Decode Disaggregation

Prefill 与 Decode 的资源需求不同:

Prefill
   ↓
Compute-intensive

Decode
   ↓
Memory-bandwidth-intensive

Prefill-Decode Disaggregation 将两个阶段放在不同的 Worker 或 GPU 资源上执行。

Incoming Request
       ↓
  Prefill Worker
       ↓
  Transfer KV Cache
       ↓
  Decode Worker
       ↓
  Output Tokens

主要目的:

  • 独立优化 Prefill 和 Decode。
  • 减少长 Prompt 对 Decode 的干扰。
  • 改善尾部 ITL / TPOT。
  • 为不同阶段分配不同的计算资源。

代价:

  • 增加系统复杂度。
  • 需要高效传输 KV Cache。
  • 引入额外通信和调度开销。

vLLM 和 SGLang 都已经提供相关能力,具体成熟度和部署方法取决于版本。

它主要用于规模较大的生产部署,单 GPU 学习阶段不需要重点研究。

13. 如何选择推理引擎

使用场景推荐优先了解
学习 Transformer 与模型加载Transformers
MacBook 本地量化模型Ollama / llama.cpp
GUI 下载、测试模型LM Studio
单 GPU 生产 ServingvLLM / SGLang
高并发、多 GPU 推理vLLM / SGLang
NVIDIA 深度性能优化TensorRT-LLM
维护已有 HF TGI 服务TGI

选型重点

真正选择推理引擎时,主要检查:

  1. Model Compatibility:是否支持该模型架构、Tokenizer 和 Chat Template。
  2. Hardware Compatibility:CUDA、ROCm、Metal 及 GPU 型号。
  3. Quantization Support:是否支持当前模型量化格式及优化 Kernel。
  4. Performance:TTFT、TPOT、Throughput 和显存占用。
  5. Serving Features:Streaming、Tool Calling、Structured Outputs、LoRA、Metrics 等。

功能支持不能仅根据引擎名称判断,应检查具体版本、模型及部署后端。

总结

Model Framework
   └── Transformers

Local Inference
   ├── llama.cpp
   ├── Ollama
   └── LM Studio

Production GPU Serving
   ├── vLLM
   ├── SGLang
   └── TensorRT-LLM

Legacy / Maintenance
   └── TGI

最重要的区别:

  • Transformers:模型加载与通用执行框架。
  • llama.cpp:轻量、跨硬件的高效推理 Runtime。
  • Ollama / LM Studio:简化本地模型运行和管理。
  • vLLM / SGLang:强调高吞吐、高并发 Serving。
  • TensorRT-LLM:针对 NVIDIA GPU 深度优化。
  • TGI:进入维护模式的 Hugging Face Serving Engine。

对于推理部署学习,掌握 llama.cpp/Ollama 与 vLLM 两条路线,就能覆盖本地量化推理和 GPU 生产 Serving 的大部分核心知识。


参考文档