LLMEngine是vLLM的核心,它接收输入,通过语言模型生成输出,并将结果返回给客户端。离线批量推理的LLM,在线服务的AsyncLLMEngine都通过封装LLMEngine对外提供推理服务。
LLMEngine有3个关键组成部分:
- Processor(Tokenizer):将输入文本转换为tokens。
- OutputProcessor(Detokenizer):将token转换为文本。
- EngineCoreClient:模型代理,支持Language Model和Pooling Model,支持分布式部署。
LLMEngine有v0和v1两个版本的实现,目前主流是使用的v1版本,源代码位于:vllm/vllm/v1/engine/llm_engine.py
__init__
LLMEngine的__init__完成:
- 调用stateless_init_dp_group初始化DP通信的Group
- 调用init_tokenizer_from_configs初始化Tokenizer
- 创建Processor,用于将Inputs转换为EngineCoreRequest(主要是Tokenize)。
- 创建OutputProcessor,用于将EngineCoreOutput转换为RequestOutput(主要是Detokenize)。
- 调用EngineCoreClient.make_client创建EngineCoreClient。
- 调用reset_mm_cache重置Multi-Modal Cache。
class LLMEngine:
def __init__(
self,
vllm_config: VllmConfig,
executor_class: type[Executor],
log_stats: bool,
usage_context: UsageContext = UsageContext.ENGINE_CONTEXT,
stat_loggers: Optional[list[StatLoggerFactory]] = None,
mm_registry: MultiModalRegistry = MULTIMODAL_REGISTRY,
use_cached_outputs: bool = False,
multiprocess_mode: bool = False,
) -> None:
...
parallel_config = vllm_config.parallel_config
if not multiprocess_mode and parallel_config.data_parallel_size > 1:
self.dp_group = parallel_config.stateless_init_dp_group()
else:
self.dp_group = N


1499

被折叠的 条评论
为什么被折叠?



