| from pathlib import Path |
| from typing import Any |
|
|
| from optimum.intel.openvino import OVDiffusionPipeline |
| from optimum.intel.openvino.modeling_diffusion import ( |
| OVModelVae, |
| OVModelVaeDecoder, |
| OVModelVaeEncoder, |
| ) |
|
|
| from backend.device import is_openvino_device |
| from backend.tiny_autoencoder import get_tiny_autoencoder_repo_id |
| from constants import DEVICE, LCM_DEFAULT_MODEL_OPENVINO |
| from paths import get_base_folder_name |
|
|
| if is_openvino_device(): |
| from huggingface_hub import snapshot_download |
| from optimum.intel.openvino.modeling_diffusion import ( |
| OVBaseModel, |
| OVStableDiffusionImg2ImgPipeline, |
| OVStableDiffusionPipeline, |
| OVStableDiffusionXLImg2ImgPipeline, |
| OVStableDiffusionXLPipeline, |
| ) |
|
|
|
|
| def ov_load_tiny_autoencoder( |
| pipeline: Any, |
| use_local_model: bool = False, |
| ): |
| taesd_dir = snapshot_download( |
| repo_id=get_tiny_autoencoder_repo_id(pipeline.__class__.__name__), |
| local_files_only=use_local_model, |
| ) |
| vae_decoder = OVModelVaeDecoder( |
| model=OVBaseModel.load_model(f"{taesd_dir}/vae_decoder/openvino_model.xml"), |
| parent_pipeline=pipeline, |
| model_name="vae_decoder", |
| ) |
| vae_encoder = OVModelVaeEncoder( |
| model=OVBaseModel.load_model(f"{taesd_dir}/vae_encoder/openvino_model.xml"), |
| parent_pipeline=pipeline, |
| model_name="vae_encoder", |
| ) |
| pipeline.vae = OVModelVae( |
| decoder=vae_decoder, |
| encoder=vae_encoder, |
| ) |
| pipeline.vae.config.scaling_factor = 1.0 |
|
|
|
|
| def get_ov_text_to_image_pipeline( |
| model_id: str = LCM_DEFAULT_MODEL_OPENVINO, |
| use_local_model: bool = False, |
| ) -> Any: |
| if "xl" in get_base_folder_name(model_id).lower(): |
| pipeline = OVStableDiffusionXLPipeline.from_pretrained( |
| model_id, |
| local_files_only=use_local_model, |
| ov_config={"CACHE_DIR": ""}, |
| device=DEVICE.upper(), |
| ) |
| else: |
| pipeline = OVStableDiffusionPipeline.from_pretrained( |
| model_id, |
| local_files_only=use_local_model, |
| ov_config={"CACHE_DIR": ""}, |
| device=DEVICE.upper(), |
| ) |
|
|
| return pipeline |
|
|
|
|
| def get_ov_image_to_image_pipeline( |
| model_id: str = LCM_DEFAULT_MODEL_OPENVINO, |
| use_local_model: bool = False, |
| ) -> Any: |
| if "xl" in get_base_folder_name(model_id).lower(): |
| pipeline = OVStableDiffusionXLImg2ImgPipeline.from_pretrained( |
| model_id, |
| local_files_only=use_local_model, |
| ov_config={"CACHE_DIR": ""}, |
| device=DEVICE.upper(), |
| ) |
| else: |
| pipeline = OVStableDiffusionImg2ImgPipeline.from_pretrained( |
| model_id, |
| local_files_only=use_local_model, |
| ov_config={"CACHE_DIR": ""}, |
| device=DEVICE.upper(), |
| ) |
| return pipeline |
|
|
|
|
| def get_ov_diffusion_pipeline( |
| model_id: str, |
| use_local_model: bool = False, |
| ) -> Any: |
| pipeline = OVDiffusionPipeline.from_pretrained( |
| model_id, |
| local_files_only=use_local_model, |
| ov_config={"CACHE_DIR": ""}, |
| device=DEVICE.upper(), |
| ) |
| return pipeline |
|
|