vllm_async_server.py — vLLM HTTP 服务器¶
文件概述¶
vLLM 推理 HTTP 服务器的实现(约 960 行),是一个完整的 OpenAI 兼容推理服务。
核心类¶
vLLMHttpServer¶
class vLLMHttpServer:
"""等价于命令行 `vllm serve --tensor-parallel-size=8 ...`"""
def __init__(self, config, model_config, rollout_mode, workers, ...):
self._server_address = ray.util.get_node_ip_address()
self._server_port = None
async def launch_server(self, master_address=None, ...):
"""启动 vLLM 推理服务
流程:
1. 构建 CLI 参数(与 vllm serve 命令等价)
2. 创建 AsyncLLM 引擎
3. 构建 OpenAI 兼容的 HTTP 应用
4. 启动 Uvicorn 服务器
"""
async def generate(self, prompt_ids, sampling_params, request_id, ...):
"""生成序列"""
prompt = TokensPrompt(prompt_token_ids=prompt_ids, ...)
sampling_params = SamplingParams(max_tokens=max_tokens, ...)
async for output in self.engine.generate(prompt, sampling_params, request_id):
final_res = output
return TokenOutput(token_ids=final_res.outputs[0].token_ids, ...)
async def sleep(self):
"""释放显存"""
if self.rollout_mode == RolloutMode.HYBRID:
await self.engine.collective_rpc("sleep", kwargs={"level": sleep_level})
elif self.rollout_mode == RolloutMode.COLOCATED:
await self.engine.sleep(level=1)
async def wake_up(self):
"""恢复显存"""
await self.engine.wake_up(tags=["kv_cache", "weights"])
async def abort_all_requests(self):
"""中止所有正在进行的请求"""
# vLLM >= 0.12.0: 使用 pause_generation
# vLLM < 0.12.0: 手动 abort 每个请求
支持的特性¶
- LoRA 动态加载: 支持在推理时加载/卸载 LoRA adapter
- FP8 量化: 支持在线 FP8 量化推理
- QAT: 支持量化感知训练模型推理
- 专家并行: 支持 MoE 模型的 EP 推理
- 多节点: 支持跨节点的 TP/EP 推理
- Router Replay: 支持记录路由决策用于训练
- Profiling: 集成 torch profiler
与其他模块的关系¶
- 被
vllm_rollout.py的vLLMReplica创建和管理 - 使用 vLLM 的
AsyncLLM引擎 - 使用
rollout/utils.py的run_uvicorn启动服务
小结¶
vLLMHttpServer 是一个功能完整的 vLLM 推理服务器,通过 Ray actor 部署,支持 Hybrid Engine 的显存管理和权重热更新。