如何使用 FastAPI 与 vLLM 提供模型服务?
未标记
考查重点:推理调度与业务服务分工。让 vLLM 常驻加载并调度推理,业务 FastAPI 异步调用其服务,统一鉴权、配额和参数校验;不在每请求重载模型
本题目录
参考答案
核心回答
通常让vLLM常驻加载模型、负责推理调度和KV缓存;利用它自带的OpenAI兼容HTTP服务提供生成能力。业务需要统一鉴权、租户配额、参数校验、路由或日志时,再在前面放FastAPI网关,通过异步HTTP调用后端。vLLM本身的服务层已经使用FastAPI,不需要为每个请求重新加载模型或再包装一套简单生成接口。
两层分别负责什么
模型服务层固定模型revision、tokenizer、聊天模板、精度或量化配置,启动时加载权重并预热,确认目标任务和上下文预算能够运行。vLLM负责批处理、缓存与实际生成;多卡方式及显存预算按模型和硬件确定。
业务接口层验证调用身份、模型权限、输入长度和输出上限,分配请求ID,调用选定推理后端,并记录耗时和用量。业务数据库、文件上传和其他工具由相应组件负责。网关可以独立扩容,但模型实例数量仍由GPU和显存约束。
若只是内部单模型接口,可以直接使用vLLM服务。兼容接口也要逐项确认模型、模板、工具调用、结构化输出和多模态能力,不能认为接口路径相同就具有完全相同的语义。
同步、流式与取消
FastAPI使用支持异步的HTTP客户端等待推理结果,避免在事件循环直接执行长时间阻塞调用。async使等待期间能处理其他连接,并不让模型矩阵计算自动变快。
流式响应需要逐段转发、及时刷新,并处理背压和错误;中途失败时,应明确区分已经发送的片段与完整结果。客户端断开、超时或主动取消时,要沿链路传递取消并确认推理任务释放,不能仅关闭网关连接就假设GPU工作已停止。具体取消接口按锁定的vLLM版本实现并验收。
上线前检查哪些行为
限制排队长度、并发和token预算,过载时明确拒绝或降级;普通存活检查之外,还要确认权重加载、预热和最小生成成功后才接流量。将模型版本、模板与生成参数一起记录,留出回滚入口。
测试应覆盖普通回答、长输入、流式、空输出、异常、断开和并发负载;既看HTTP成功率,也看任务质量、TTFT、端到端尾延迟、队列和显存。多个Web worker如果各自加载同一大模型,会重复占用模型内存;把无模型的网关进程与推理实例生命周期分开,更容易控制资源。
追问:FastAPI多开worker就能提高GPU吞吐吗?
不一定。Web worker增加的是接口并发能力;GPU吞吐受推理调度、批量、模型及内存带宽限制。若GPU已经饱和,再增加网关并发往往只是增加排队,应该按延迟目标限制流量。
对应教程
- 32-微调效果评估与模型部署:理解导出模型、固定评测条件和推理资源边界,本文再区分业务接口与引擎职责。
参考资料
- 国内:JavaGuide:大模型网关基础:采用鉴权、路由与限流等网关职责的划分,说明正文中 FastAPI 业务接口层与模型推理服务的分工。
- 国内:阿里巴巴Qwen团队:Qwen3-8B Model Card:参考模型卡中权重、聊天模板和服务用法的约定,说明正文中模型服务启动前需要固定和核对的配置。
- 国内:Onefly:训练、数据与模型部署:结合量化权重与推理引擎的部署条件,说明正文中精度、量化配置与服务兼容性需要一起确认的要求。
- 国外:FastAPI:Concurrency and async / await:区分HTTP等待的并发处理与模型计算,避免把async当成GPU加速。
- 国外:vLLM:OpenAI-Compatible Server:依据 vLLM 官方服务文档,说明其自带 OpenAI 兼容 HTTP 服务,以及正文中模型配置、接口兼容性和业务网关的职责边界。
