本地部署大模型框架对比
·
下面从用途定位、支持后端/硬件、性能特性、适用场景等维度,对 llama.cpp、vLLM、MLX 做一个清晰对比(聚焦 LLM 推理 / serving)。
一句话概括
| 项目 | 核心定位 |
|---|---|
| llama.cpp | 轻量级、本地优先的 CPU/GPU LLM 推理引擎(原生于 GGML 格式) |
| vLLM | 高性能 服务端 LLM Serving 框架,主打高吞吐、在线 API |
| MLX | Apple Silicon 原生张量框架(类似 NumPy + PyTorch),适合 Mac 本地推理/研究 |
功能 & 特性对比
| 维度 | llama.cpp | vLLM | MLX |
|---|---|---|---|
| 主要语言 | C/C++(CLI + Python binding) | Python(PyTorch + CUDA/Triton) | Python / C++(Apple 官方) |
| 典型模型格式 | GGUF(量化友好) | HF safetensors / pt | MLX 格式(可转换 HF) |
| 硬件支持 | ✅ CPU ✅ Metal ✅ CUDA ✅ Vulkan | ✅ CUDA ✅ ROCm(实验)❌ 无官方 Metal | ✅ Apple M‑series GPU/ANE ❌ NVIDIA |
| 量化支持 | ✅ 2‑8bit GGUF 量化(很强) | ✅ AWQ / GPTQ / FP8(有限) | ✅ 参数量化 + KV‑cache 量化 |
| 批处理 / 并发 | ❌ 弱(简单 continuous batching 在新版中) | ✅ PagedAttention + continuous batching | ⚠️ 基础 batch,偏研究 |
| 吞吐 / 延迟 | 本地单用户优秀 | 多用户高吞吐极佳 | 单用户 Mac 很好 |
| Serving (API) | ✅ 内置简易 HTTP server | ✅ OpenAI‑compatible API | ❌ 需自行封装 |
| 生态/模型覆盖 | LLaMA / Mistral / Qwen 等主流(GGUF) | 几乎全部 HuggingFace LLM | LLaMA / Mistral / Qwen 等有转换脚本 |
| 易用性(Python) | 中等(需下载 GGUF) | 非常方便(vllm serve model) | 很 Pythonic(类 NumPy/PyTorch) |
典型使用场景
✅ llama.cpp
- 本地跑开源模型(Mac / Linux / Windows)
- 显存小、CPU 推理、边缘设备
- 离线 / 隐私敏感场景
- 例子:
./llama-server -m qwen2-7b-q4_k_m.gguf -c 4096
✅ vLLM
- 服务器部署 LLM API
- 多并发用户、高 QPS
- 企业 / 云 GPU 节点
- 例子:
vllm serve Qwen/Qwen2-7B-Instruct --dtype bfloat16
✅ MLX
- MacBook Pro(M1–M4) 上做本地推理 / 实验
- 研究者想写「PyTorch 风格」代码但直接调用 Apple GPU
- 例子:
import mlx.core as mx from mlx_lm import load, generate model, tokenizer = load("mlx-community/Qwen2-7B-4bit") print(generate(model, tokenizer, "Hello"))
如何选择?
- 你有 NVIDIA GPU,要对外提供服务 → vLLM
- 你只有 Mac(M 系列),想本地跑模型 → MLX(最快)或 llama.cpp
- 你要最小依赖、CPU / 老显卡 / 嵌入式 → llama.cpp
- 你要量化后放进 8G/16G 内存跑 7B~13B → llama.cpp(GGUF Q4)
你问的是 AirLLM、vLLM、llama.app(即 llama.cpp GUI)三者对比,结合你前面说的 Windows + 2GB 显存,下面直接给你清晰对照和结论。
一、三个东西分别是什么?
① AirLLM
- 🔹 定位:让显存不足的机器运行超大模型(13B/70B),通过
按层(layer-by-layer)加载权重 + CPU/磁盘 + 高速 prefetch - 🔹 基于 HuggingFace Transformers + Accelerate
- 🔹 使用原始 safetensors / HF 格式(不是 GGUF)
- 🔹 GitHub:
airllm/airllm - ✅ 特点:
- 模型权重 不需要一次全进显存
- 可跑 70B 在消费级 PC(纯 CPU / 小 GPU)
- 接口简单(
from airllm import AutoModelForCausalLM)
- ❌ 缺点:
- 很慢(层切换 + CPU 内存带宽瓶颈)
- Windows 支持一般(WSL2 更稳)
- 无高并发、无流式优化、延迟高
- 对某些 MoE / 新架构兼容有限
📌 AirLLM = 权重按层分块加载推理,不是 KV Cache 分块
② vLLM
- 🔹 定位:高性能服务端 LLM 推理引擎
- 🔹 核心:
- PagedAttention(KV Cache 分页)
- Continuous Batching
- CUDA-only
- ✅ 优点:
- 极高吞吐、低延迟
- 适合多用户 API Server
- ❌ 缺点:
- 要求模型权重基本装入 GPU 显存
- 不支持分层 offload / 低于 6–8GB 显存基本不可用
- Linux / CUDA 优先,Windows 非官方
📌 vLLM = KV Cache 分块,权重必须 fit GPU
③ llama.app(= llama.cpp GUI / CLI)
- 🔹 定位:本地轻量推理,CPU + 小 GPU
- 🔹 使用 GGUF + mmap(页级按需加载)
- 🔹 支持
-ngl N把若干层 offload 到 GPU - ✅ 优点:
- 2GB 显存可跑(纯 CPU 或少量 offload)
- Windows / Mac / Linux 原生
- 稳定、简单、OpenAI-compatible server
- ❌ 缺点:
- 并发低
- 无 Paged KV Cache
- 只支持 GGUF(不直接用 HF safetensors)
📌 llama.cpp = 权重 mmap 分块 + 可选少量 GPU 层,最适合你
二、核心维度对比表
| 维度 | AirLLM | vLLM | llama.cpp(llama.app) |
|---|---|---|---|
| 权重分块加载(CPU/GPU) | ✅ 按 Layer | ❌ | ✅ mmap + layer offload |
| KV Cache 分块(Paged) | ❌ | ✅ PagedAttention | ❌ |
| 最低显存可用 | ✅ 很小(甚至0) | ❌ ≥6–8GB | ✅✅✅(2GB OK) |
| Windows 友好 | ⚠️(WSL 推荐) | ⚠️ 弱 | ✅✅ |
| 速度 | 慢 | 很快 | 中(CPU)/可接受 |
| 模型格式 | HF safetensors | HF | GGUF |
| 适合场景 | 实验/跑超大模型 | 服务器API | 本地/低显存/桌面 |
三、结合你 Windows + 2GB 显存 的结论
✅ 实际可用:llama.cpp(llama.app / llama-server)
⚠️ AirLLM:理论能跑,但 Windows 慢 + 折腾 + 延迟高,不推荐首选
❌ vLLM:直接不可用
一句话:
- 想稳定本地用 → llama.cpp(GGUF + -ngl 0/8)
- 想验证"超大模型能不能跑"且愿用 WSL → 可试 AirLLM
- 想高并发 API 服务 → 换机器,vLLM 才合适
更多推荐
所有评论(0)