Skip to content

vllm.v1.engine.async_renderer

AsyncRenderer

Bases: RendererClient

Standalone RendererClient built directly from a VllmConfig.

Owns the renderer, io_processor, and input_processor — all CPU-only resources. Does not depend on :class:AsyncLLM or any inference engine. In a disaggregated deployment this class would be replaced by a remote stub that talks to a dedicated renderer process over the network.

Source code in vllm/v1/engine/async_renderer.py
class AsyncRenderer(RendererClient):
    """Standalone RendererClient built directly from a VllmConfig.

    Owns the renderer, io_processor, and input_processor — all CPU-only
    resources.  Does not depend on :class:`AsyncLLM` or any inference engine.
    In a disaggregated deployment this class would be replaced by a remote stub
    that talks to a dedicated renderer process over the network.
    """

    @classmethod
    def from_vllm_config(
        cls,
        vllm_config: VllmConfig,
    ) -> "AsyncRenderer":
        """Create an AsyncRenderer directly from a VllmConfig."""
        return cls(vllm_config)

    def __init__(self, vllm_config: VllmConfig) -> None:
        self.vllm_config = vllm_config
        self.model_config = vllm_config.model_config
        self.renderer = renderer_from_config(vllm_config)
        self.io_processor = get_io_processor(
            vllm_config,
            self.renderer,
            self.model_config.io_processor_plugin,
        )
        self.input_processor = InputProcessor(vllm_config, self.renderer)
        self._observability_config = vllm_config.observability_config

        tracing_endpoint = self._observability_config.otlp_traces_endpoint
        if tracing_endpoint is not None:
            init_tracer("vllm.llm_engine", tracing_endpoint)

    # Client base (liveness) — renderer has no long-running background process

    @property
    def is_running(self) -> bool:
        return True

    @property
    def is_stopped(self) -> bool:
        return False

    @property
    def errored(self) -> bool:
        return False

    @property
    def dead_error(self) -> BaseException:
        raise RuntimeError("AsyncRenderer has no error state")

    async def check_health(self) -> None:
        pass  # no background process to check

    def shutdown(self) -> None:
        self.renderer.shutdown()

    @property
    def tokenizer(self) -> TokenizerLike | None:
        return self.renderer.tokenizer

    def get_tokenizer(self) -> TokenizerLike:
        return self.renderer.get_tokenizer()

    async def is_tracing_enabled(self) -> bool:
        return self._observability_config.otlp_traces_endpoint is not None

from_vllm_config classmethod

from_vllm_config(vllm_config: VllmConfig) -> AsyncRenderer

Create an AsyncRenderer directly from a VllmConfig.

Source code in vllm/v1/engine/async_renderer.py
@classmethod
def from_vllm_config(
    cls,
    vllm_config: VllmConfig,
) -> "AsyncRenderer":
    """Create an AsyncRenderer directly from a VllmConfig."""
    return cls(vllm_config)