核心模块架构

core模块是vLLM Ascend的核心,负责KV缓存管理、任务调度和性能优化。

graph LR A[core模块] --> B[KV缓存管理] A --> C[调度器] A --> D[性能优化] B --> B1[KV缓存接口] B --> B2[混合KV缓存管理器] B --> B3[块表管理] C --> C1[重计算调度器] C --> C2[短请求优先调度] C --> C3[动态负载均衡] D --> D1[内存优化] D --> D2[计算优化]

KV缓存管理流程

KV缓存的分配、使用和释放流程。

graph TD A[请求到达] --> B{是否有空闲块?} B -->|是| C[分配KV缓存块] B -->|否| D[等待或驱逐] D --> C C --> E[写入KV数据] E --> F[推理计算] F --> G{是否完成?} G -->|否| F G -->|是| H[释放KV缓存块] H --> I[返回结果]

调度策略

不同调度策略的选择和执行流程。

graph TD A[调度器] --> B{请求类型?} B -->|短请求| C[短请求优先队列] B -->|长请求| D[常规队列] B -->|重计算| E[重计算队列] C --> F[快速调度] D --> G[公平调度] E --> H[资源预留调度] F --> I[执行] G --> I H --> I

KV缓存接口

定义KV缓存的接口规范,支持多种缓存后端实现

相关文件

  • kv_cache_interface.py
  • hybrid_kv_cache_manager.py

重计算调度器

支持重计算的调度策略,优化长序列处理

相关文件

  • recompute_scheduler.py
  • recompute_scheduler_config.py

短请求优先调度

优化短请求的处理延迟,提升用户体验

相关文件

  • short_request_first_scheduler.py

动态负载均衡

实现动态负载均衡,提升多卡推理效率

相关文件

  • dyntra_lb.py

代码示例

KV缓存接口定义示例:

# KV缓存接口定义
class KVCacheInterface:
    def allocate(self, block_size: int) -> None:
        # 分配KV缓存块
        pass
    
    def free(self, block_id: int) -> None:
        # 释放KV缓存块
        pass
    
    def get_block(self, block_id: int):
        # 获取指定块
        pass

开发指南

在core模块中开发新功能时,请遵循以下原则:
1. 保持接口简洁,遵循单一职责原则
2. 添加充分的注释和文档
3. 编写单元测试,确保代码质量
4. 遵循项目的代码风格指南

首页