AsyncLLMEngine#
- class vllm.AsyncLLMEngine(*args, log_requests: bool = True, start_engine_loop: bool = True, **kwargs)[source]#
基类:
EngineClient
LLMEngine
的异步封装器。此类用于封装
LLMEngine
类,使其变为异步。它使用 asyncio 创建一个后台循环,持续处理传入的请求。当等待队列中有请求时,LLMEngine
会被 generate 方法触发。generate 方法将LLMEngine
的输出结果传递给调用者。- 参数:
- async abort(request_id: str) None [source]#
中止请求。
中止已提交的请求。如果请求已完成或未找到,则此方法将不执行任何操作。
- 参数:
request_id – 请求的唯一 ID。
- async encode(prompt: str | TextPrompt | TokensPrompt | ExplicitEncoderDecoderPrompt, pooling_params: PoolingParams, request_id: str, lora_request: LoRARequest | None = None, trace_headers: Mapping[str, str] | None = None, priority: int = 0) AsyncGenerator[PoolingRequestOutput, None] [source]#
为池化模型请求生成输出。
为请求生成输出。此方法是协程。它将请求添加到 LLMEngine 的等待队列中,并将 LLMEngine 的输出流式传输到调用方。
- 参数:
prompt – LLM 的提示。有关每种输入格式的更多详细信息,请参阅
PromptType
。pooling_params – 请求的池化参数。
request_id – 请求的唯一 ID。
lora_request – 用于生成的 LoRA 请求(如果有)。
trace_headers – OpenTelemetry 跟踪标头。
priority – 请求的优先级。仅适用于优先级调度。
- Yields:
来自 LLMEngine 的请求的 PoolingRequestOutput 输出对象。
- 详情
如果引擎未运行,则启动后台循环,该循环迭代调用
engine_step()
以处理等待请求。将请求添加到引擎的 RequestTracker。在下一个后台循环中,此请求将发送到底层引擎。此外,还将创建一个相应的 AsyncStream。
等待来自 AsyncStream 的请求输出并传递它们。
示例
>>> # Please refer to entrypoints/api_server.py for >>> # the complete example. >>> >>> # initialize the engine and the example input >>> # note that engine_args here is AsyncEngineArgs instance >>> engine = AsyncLLMEngine.from_engine_args(engine_args) >>> example_input = { >>> "input": "What is LLM?", >>> "request_id": 0, >>> } >>> >>> # start the generation >>> results_generator = engine.encode( >>> example_input["input"], >>> PoolingParams(), >>> example_input["request_id"]) >>> >>> # get the results >>> final_output = None >>> async for request_output in results_generator: >>> if await request.is_disconnected(): >>> # Abort the request if the client disconnects. >>> await engine.abort(request_id) >>> # Return or raise an error >>> ... >>> final_output = request_output >>> >>> # Process and return the final output >>> ...
- classmethod from_engine_args(engine_args: AsyncEngineArgs, engine_config: VllmConfig | None = None, start_engine_loop: bool = True, usage_context: UsageContext = UsageContext.ENGINE_CONTEXT, stat_loggers: Dict[str, StatLoggerBase] | None = None) AsyncLLMEngine [source]#
从引擎参数创建异步 LLM 引擎。
- async generate(prompt: str | TextPrompt | TokensPrompt | ExplicitEncoderDecoderPrompt, sampling_params: SamplingParams, request_id: str, lora_request: LoRARequest | None = None, trace_headers: Mapping[str, str] | None = None, prompt_adapter_request: PromptAdapterRequest | None = None, priority: int = 0) AsyncGenerator[RequestOutput, None] [source]#
为请求生成输出。
为请求生成输出。此方法是协程。它将请求添加到 LLMEngine 的等待队列中,并将 LLMEngine 的输出流式传输到调用方。
- 参数:
prompt – LLM 的提示。有关每种输入格式的更多详细信息,请参阅
PromptType
。sampling_params – 请求的采样参数。
request_id – 请求的唯一 ID。
lora_request – 用于生成的 LoRA 请求(如果有)。
trace_headers – OpenTelemetry 跟踪标头。
prompt_adapter_request – 用于生成的 Prompt Adapter 请求(如果有)。
priority – 请求的优先级。仅适用于优先级调度。
- Yields:
来自 LLMEngine 的请求的 RequestOutput 输出对象。
- 详情
如果引擎未运行,则启动后台循环,该循环迭代调用
engine_step()
以处理等待请求。将请求添加到引擎的 RequestTracker。在下一个后台循环中,此请求将发送到底层引擎。此外,还将创建一个相应的 AsyncStream。
等待来自 AsyncStream 的请求输出并传递它们。
示例
>>> # Please refer to entrypoints/api_server.py for >>> # the complete example. >>> >>> # initialize the engine and the example input >>> # note that engine_args here is AsyncEngineArgs instance >>> engine = AsyncLLMEngine.from_engine_args(engine_args) >>> example_input = { >>> "prompt": "What is LLM?", >>> "stream": False, # assume the non-streaming case >>> "temperature": 0.0, >>> "request_id": 0, >>> } >>> >>> # start the generation >>> results_generator = engine.generate( >>> example_input["prompt"], >>> SamplingParams(temperature=example_input["temperature"]), >>> example_input["request_id"]) >>> >>> # get the results >>> final_output = None >>> async for request_output in results_generator: >>> if await request.is_disconnected(): >>> # Abort the request if the client disconnects. >>> await engine.abort(request_id) >>> # Return or raise an error >>> ... >>> final_output = request_output >>> >>> # Process and return the final output >>> ...
- async get_tokenizer(lora_request: LoRARequest | None = None) transformers.PreTrainedTokenizer | transformers.PreTrainedTokenizerFast | TokenizerBase [source]#
获取请求的适当的分词器