vLLM - LLMEngine

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值