如何使用 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已经饱和,再增加网关并发往往只是增加排队,应该按延迟目标限制流量。

对应教程

参考资料

相关面经

2 篇

字节跳动

Agent 开发工程师
实习一面
查看原面经 →
模型剪枝/量化(GPTQ、AWQ)、服务化框架(FastAPI+vLLM)

字节跳动

AI Agent
实习
查看原面经 →
模型剪枝/量化(GPTQ、AWQ)、服务化框架(FastAPI+vLLM)

收录题集

2 个来源,共2 份题集

相关题目

4 题