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
阅读全文