Appearance
前面两篇讲了怎么微调模型。可模型练好了、或者从网上下载了一个开源模型,怎么把它真正跑起来、对外提供服务? 这就轮到"推理框架/运行时"出场了。最常被拿来比较的三个是 HuggingFace Transformers、vLLM、Ollama。这篇给你讲清它们各是什么、快慢在哪、以及什么场景该用哪个。
一、先建立一个总认知
这三个东西,都是"把模型跑起来"的工具,但定位在一条光谱的不同位置——从"最灵活、适合研究"到"最快、适合生产"到"最省事、适合个人"。
它们不是互相取代的关系,而是分工。 下面一个个讲。
二、HuggingFace Transformers:AI 界的「瑞士军刀」
它是什么:Transformers 是 HuggingFace 出的模型库 + 工具库,几乎所有开源模型(Qwen、Llama、各种 BERT……)都能用它一行代码加载。它不只是跑推理,训练、微调、研究都靠它——你上一篇微调用的 ms-swift、PEFT,底层都建在它之上。
它的定位:灵活、通用、生态最全。搞研究、做实验、验证算法、跑个小 demo、做微调训练——第一选择。
跑一次推理就几行:
python
from transformers import pipeline
# 加载模型,pipeline 帮你把"分词→推理→解码"全包了
pipe = pipeline("text-generation", model="Qwen/Qwen3-0.6B")
print(pipe("用一句话解释什么是大模型", max_new_tokens=64))优势:生态极其丰富(新模型第一时间支持)、上手简单、文档完善、和训练/微调无缝衔接。劣势:它是"通用取向"的,没有为高并发生产场景做深度优化——一次伺候很多用户时,吞吐和显存效率都不理想。所以它适合"跑起来看看",不适合"扛线上流量"。
一句话:做研究、搞训练、写原型,用它;但别直接拿它扛生产。
三、vLLM:为「生产高并发」而生的性能引擎
它是什么:vLLM 是一个专门优化推理性能的框架。同样一张显卡、同一个模型,用 vLLM 跑,吞吐量能比 Transformers 高出好几倍。它就是冲着"生产环境要同时服务成百上千个用户"这个目标去的。
为什么它这么快? 两个关键黑科技(了解概念即可):
① PagedAttention(分页注意力)。 大模型推理时要缓存大量中间结果(KV Cache),传统做法会预留一大块连续显存,用不满就浪费、还容易碎片化。vLLM 借鉴了操作系统"内存分页"的思想,把显存切成小块按需分配,显存利用率大幅提升——同样的显卡能同时装下更多用户的会话。
② Continuous Batching(连续批处理)。 传统批处理要"等一批人都到齐才发车",有人生成得快、有人慢,快的就得干等慢的。vLLM 是"上车即走、下车即让"——谁生成完了就立刻把它的位置腾给新请求,GPU 一刻不闲。这是吞吐量翻倍的主要来源。
怎么用:vLLM 直接起一个 OpenAI 兼容的服务,一条命令搞定:
bash
# 启动一个 OpenAI 兼容的推理服务(默认端口 8000)
vllm serve Qwen/Qwen3-0.6B启动后,它就在 http://localhost:8000/v1 暴露了和 OpenAI 一模一样的接口。这一点很重要——意味着你前面写的所有 LangChain / Agent 代码,把 base_url 一改就能用上自己部署的模型,一行业务逻辑都不用动。
优势:性能最优、显存效率高、并发能力强、OpenAI 兼容。劣势:部署门槛相对高一些(要装环境、通常要好点的 GPU)、有一定学习成本。
一句话:要上生产、要扛并发、要压成本,用它。
四、Ollama:个人本地跑模型的「一键神器」
它是什么:Ollama 把"在自己电脑上跑大模型"这件事简化到了极致。它之于大模型,有点像 Docker 之于容器——一条命令拉取、一条命令运行,模型的权重、配置、量化全给你打包好,不用操心任何底层细节。
怎么用:真的就一行:
bash
ollama run qwen3第一次会自动下载(已经帮你量化好、体积小),然后你就能在终端里直接和它聊天了。它默认还会在后台起一个服务,同样提供 OpenAI 兼容接口(在 http://localhost:11434/v1),所以你的 Agent 代码照样能连上它做本地开发。
它的定位:个人、本地、边缘、图省事。自己电脑上装个本地 AI 助手、离线用、在树莓派等边缘设备上跑、快速试用某个模型看看效果——它最合适。为了省事和省资源,它默认跑的是量化后的模型(体积小、普通电脑也能跑),代价是精度和性能有折损。
优势:部署极简单、硬件门槛低、跨平台(Mac/Windows/Linux 都行)、离线可用。劣势:性能有限、并发能力弱——它就不是为"同时服务很多人"设计的,你拿它扛生产流量会很快顶不住。
一句话:自己玩、本地开发、离线、边缘设备,用它。
五、一张表看懂区别
| 维度 | Transformers | vLLM | Ollama |
|---|---|---|---|
| 一句话定位 | 研究/训练的瑞士军刀 | 生产高并发性能引擎 | 个人本地一键即用 |
| 主打场景 | 实验、原型、微调训练 | 在线服务、API、批量处理 | 本地助手、边缘、试用 |
| 推理性能 | 一般 | 最强 | 一般(量化换轻便) |
| 并发能力 | 弱 | 强 | 弱 |
| 显存效率 | 一般 | 高(PagedAttention) | 高(靠量化) |
| 上手难度 | 简单 | 中等偏高 | 极简 |
| 硬件门槛 | 中 | 较高(要好 GPU) | 低(普通电脑就行) |
| OpenAI 兼容接口 | 需自己包 | ✅ 内置 | ✅ 内置 |
| 和训练/微调的衔接 | 无缝 | 主要管推理 | 主要管推理 |
六、它们其实是一条流水线上的伙伴
别把它们当成"三选一的对手"。真实项目里,它们常常一起出现在一个模型的生命周期里:
一个常见路径:用 Transformers 做研究、微调训练 → 用 Ollama 在自己电脑上快速验证效果、做本地开发 → 真正上线时用 vLLM 部署成高性能服务扛真实流量。各司其职,配合默契。
七、怎么选,一句话决策
- 要训练、微调、做研究/实验 → Transformers(也只有它能干训练这活)。
- 要上生产、对外提供 API、并发高、想压成本 → vLLM。
- 自己电脑本地跑、离线用、边缘设备、图省事快速试用 → Ollama。
再给个更接地气的判断:你是"研究员"就 Transformers,你是"运维/后端上线"就 vLLM,你是"个人玩家/本地开发"就 Ollama。
八、和前面文章连起来
有个很妙的闭环值得点出来:vLLM 和 Ollama 都内置 OpenAI 兼容接口。 这意味着——
你在入门系列里写的所有代码(openai SDK、LangChain、Agent),本来连的是通义千问的云端接口。现在你把自己微调好的模型用 vLLM 或 Ollama 起成服务后,只需要把 base_url 改成本地服务地址(如 http://localhost:8000/v1),其余代码一个字都不用改,就用上了你自己的模型。
python
from openai import OpenAI
# 把 base_url 指向你本地/自建的 vLLM 或 Ollama 服务即可
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")「微调出自己的模型 → 用 vLLM/Ollama 部署成 OpenAI 兼容服务 → 你的 Agent 代码无缝切过来」——从训练到应用的整条链路,到这里就彻底打通了。
九、小结
三个工具,一条光谱:Transformers 最灵活(研究/训练的瑞士军刀)、vLLM 最快(靠 PagedAttention + 连续批处理为生产高并发而生)、Ollama 最省事(一键在本地/边缘跑)。
它们不是对手而是搭档:研究微调用 Transformers、本地开发用 Ollama、上线扛量用 vLLM。 而 vLLM 和 Ollama 的 OpenAI 兼容接口,让你自己的模型能无缝接回前面写过的所有 Agent 代码——这就是把"训练"和"应用"缝合起来的最后一针。
想先补微调的知识,看这两篇:《模型微调从入门到实战》、《Adapter 微调详解》。