AsyncLLMEngine#
- class vllm.AsyncLLMEngine(*args, log_requests: bool = True, start_engine_loop: bool = True, **kwargs)[源代码]#
基类:
EngineClient
一个针对
LLMEngine
的异步包装器。此类用于包装
LLMEngine
类以使其异步。它使用 asyncio 创建一个后台循环,持续处理传入的请求。当等待队列中有请求时,LLMEngine
被 generate 方法触发。generate 方法将LLMEngine
的输出传递给调用者。- 参数:
- async abort(request_id: str) None [源代码]#
中止请求。
中止一个已提交的请求。如果请求已完成或未找到,此方法将不执行任何操作。
- 参数:
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[EmbeddingRequestOutput, None] [源代码]#
为来自嵌入模型的请求生成输出。
生成请求的输出。此方法是协程。它将请求添加到LLMEngine的等待队列中,并将输出从LLMEngine流式传输到调用者。
- 参数:
prompt – LLM 的提示。有关每个输入格式的更多详细信息,请参阅
PromptType
。pooling_params – 请求的池化参数。
request_id – 请求的唯一ID。
lora_request – 用于生成的LoRA请求,如果有的话。
trace_headers – OpenTelemetry 跟踪头。
priority – 请求的优先级。仅适用于优先级调度。
- 生成器:
LLMEngine 为请求输出的 EmbeddingRequestOutput 对象。
- 详情:
如果引擎未运行,启动后台循环,该循环迭代调用
engine_step()
来处理等待的请求。将请求添加到引擎的 RequestTracker 中。在下一个后台循环中,此请求将被发送到底层引擎。同时,将创建一个相应的 AsyncStream。
等待来自 AsyncStream 的请求输出并生成它们。
示例
>>> # Please refer to entrypoints/api_server.py for >>> # the complete example. >>> >>> # initialize the engine and the example input >>> 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: EngineConfig | None = None, start_engine_loop: bool = True, usage_context: UsageContext = UsageContext.ENGINE_CONTEXT, stat_loggers: Dict[str, StatLoggerBase] | None = None) AsyncLLMEngine [源代码]#
从引擎参数创建一个异步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] [源代码]#
生成请求的输出。
生成请求的输出。此方法是协程。它将请求添加到LLMEngine的等待队列中,并将输出从LLMEngine流式传输到调用者。
- 参数:
prompt – LLM 的提示。有关每个输入格式的更多详细信息,请参阅
PromptType
。sampling_params – 请求的采样参数。
request_id – 请求的唯一ID。
lora_request – 用于生成的LoRA请求,如果有的话。
trace_headers – OpenTelemetry 跟踪头。
prompt_adapter_request – 提示适配器请求用于生成,如果有的话。
priority – 请求的优先级。仅适用于优先级调度。
- 生成器:
来自 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 >>> 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 | MistralTokenizer [源代码]#
获取请求的适当分词器