系统架构设计
mini-vllm 的系统架构遵循清晰的分层设计:
请求层:接收用户输入,通过 FastAPI 提供 RESTful 接口和 WebSocket 流式输出。流式 API 的设计参考了 ChatGPT 的交互模式, token-by-token 地返回生成结果,提升用户体验。
调度层:维护请求队列,实现动态批处理逻辑。调度器根据当前系统负载、请求优先级和延迟约束,决定批次的组成和执行时机。
缓存层:管理 KV 缓存的生命周期,包括分配、更新、压缩和释放。对于超大规模模型,还探索了将缓存卸载到 SSD 的可选方案。
推理层:执行核心的 Transformer 计算,支持多种解码策略(贪婪解码、束搜索、Top-K 采样、Top-P 核采样)。
模型层:负责模型加载和量化转换,与 HuggingFace Transformers 库集成,支持多种预训练模型。
解码策略的多样性
不同的应用场景需要不同的文本生成策略。mini-vllm 实现了四种主要的解码方法:
贪婪解码:每次选择概率最高的 token,适合确定性强的任务如代码补全。
束搜索:维护多个候选序列,最终选择整体概率最高的完整序列,适合需要全局最优的翻译任务。
Top-K 采样:从概率最高的 K 个 token 中随机选择,在多样性和质量之间取得平衡。
Top-P(核采样):从累积概率达到 P 的最小 token 集合中采样,相比 Top-K 更能适应不同上下文的不确定性分布。
这些策略的实现展示了如何在统一的框架下支持不同的生成行为,同时保持代码的模块化和可扩展性。