optimum_benchmark/backends/diffusers_utils.py (25 lines of code) (raw):
from typing import Dict
from ..import_utils import is_diffusers_available
from ..task_utils import TASKS_TO_AUTO_PIPELINE_CLASS_NAMES, map_from_synonym_task
if is_diffusers_available():
import diffusers
from diffusers import DiffusionPipeline
def get_diffusers_auto_pipeline_class_for_task(task: str):
task = map_from_synonym_task(task)
if not is_diffusers_available():
raise ImportError("diffusers is not available. Please, pip install diffusers.")
if task not in TASKS_TO_AUTO_PIPELINE_CLASS_NAMES:
raise ValueError(f"Task {task} not supported for diffusers")
model_loader_name = TASKS_TO_AUTO_PIPELINE_CLASS_NAMES[task]
return getattr(diffusers, model_loader_name)
def get_diffusers_pretrained_config(model: str, **kwargs) -> Dict[str, int]:
if not is_diffusers_available():
raise ImportError("diffusers is not available. Please, pip install diffusers.")
config = DiffusionPipeline.load_config(model, **kwargs)
pipeline_config = config[0] if isinstance(config, tuple) else config
return pipeline_config
def extract_diffusers_shapes_from_model(**kwargs) -> Dict[str, int]:
if not is_diffusers_available():
raise ImportError("diffusers is not available. Please, pip install diffusers.")
shapes = {}
return shapes