omniinfer vllm v0.9.0框架和pangu7b模型图,是什么?
摘要:参考 https:shen-shanshan.github.ioarticlesvllm-v1-整体流程从请求到算子执行 https:gitee.comomniaiomniinfertreerelease_v0.6.0
参考
https://shen-shanshan.github.io/articles/vllm-v1-整体流程从请求到算子执行/
https://gitee.com/omniai/omniinfer/tree/release_v0.6.0/
https://github.com/vllm-project/vllm/tree/v0.9.0
https://ai.gitcode.com/ascend-tribe/openPangu-Embedded-7B-V1.1
整体框架图和pangu7b模型图
1 LLMEngine - 核心引擎
位置: vllm/engine/llm_engine.py
主要职责:
请求处理和生命周期管理
调度协调和输出管理
多步迭代处理
与tokenizer和detokenizer集成
关键特性:
class LLMEngine:
def __init__(self, model_config: ModelConfig,
cache_config: CacheConfig,
parallel_config: ParallelConfig,
scheduler_config: SchedulerConfig,
device_config: DeviceConfig,
lora_config: LoRAConfig,
vision_language_config: VisionLanguageConfig,
speculative_config: SpeculativeConfig,
decoding_config: DecodingConfig,
observability_config: ObservabilityConfig,
prompt_adapter_config: PromptAdapterConfig,
executor_class: Type[ExecutorBase]):
核心方法:
add_request(): 添加新请求
step(): 执行一个推理步骤
abort_request(): 中断请求
has_unfinished_requests(): 检查未完成请求
2 Scheduler - 调度器
位置: vllm/core/scheduler.py
主要职责:
实现连续批处理(Continuous Batching)
内存感知的请求调度
优先级管理和抢占策略
Chunked prefill支持
调度策略:
def _schedule_chunked_prefill(self) -> SchedulerOutputs:
"""使用chunked prefill调度排队请求"""
# 1. 计算调度预算
budget = SchedulingBudget(
token_budget=self.scheduler_config.max_num_batched_tokens,
max_num_seqs=self.scheduler_config.max_num_seqs,
)
# 2. 预填充阶段调度
prefills = self._schedule_prefills(budget)
# 3. 解码阶段调度
decodes = self._schedule_decodes(budget)
# 4. 抢占和内存管理
self._handle_preemption(budget)
关键数据结构:
@dataclass
class SchedulingBudget:
token_budget: int # token预算
max_num_seqs: int # 最大序列数
_num_cached_tokens: int = 0 # 缓存token数
_num_batched_tokens: int = 0 # 批处理token数
3 BlockManager - 内存管理器
位置: vllm/core/blo
