Files
vllm-omni/vllm_omni/diffusion/profiler/base.py
T
2026-01-20 11:35:48 +08:00

59 lines
1.4 KiB
Python

# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
from abc import ABC, abstractmethod
from vllm.logger import init_logger
logger = init_logger(__name__)
class ProfilerBase(ABC):
"""
Abstract base class for all diffusion profilers.
Defines the common interface used by GPUWorker and DiffusionEngine.
"""
@abstractmethod
def start(self, trace_path_template: str) -> str:
"""
Start profiling.
Args:
trace_path_template: Base path (without rank or extension).
e.g. "/tmp/profiles/sdxl_run"
Returns:
Full path of the trace file this rank will write.
"""
pass
@abstractmethod
def stop(self) -> str | None:
"""
Stop profiling and finalize/output the trace.
Returns:
Path to the saved trace file, or None if not active.
"""
pass
@abstractmethod
def get_step_context(self):
"""
Returns a context manager that advances one profiling step.
Should be a no-op (nullcontext) when profiler is not active.
"""
pass
@abstractmethod
def is_active(self) -> bool:
"""Return True if profiling is currently running."""
pass
@classmethod
def _get_rank(cls) -> int:
import os
return int(os.getenv("RANK", "0"))