32 lines
1.3 KiB
Python
32 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
from .backend_base import LoadedModels, UniversalBackendBase
|
|
from .request import LLSUniversalGenerationRequest
|
|
|
|
|
|
class SD15Backend(UniversalBackendBase):
|
|
family_name = "SD1.5"
|
|
|
|
def load_models(self, request: LLSUniversalGenerationRequest) -> LoadedModels:
|
|
loaded = self._load_checkpoint_bundle(request)
|
|
loaded_family = self._infer_loaded_family(loaded.model)
|
|
if loaded_family in {"SDXL", "FLUX"}:
|
|
raise RuntimeError(
|
|
f"[LLS] Checkpoint '{request.model_name}' looks like {loaded_family}, not SD1.5."
|
|
)
|
|
return loaded
|
|
|
|
def encode_prompt(self, request: LLSUniversalGenerationRequest, clip):
|
|
positive = self._encode_standard_prompt(clip, request.positive_prompt)
|
|
negative = self._encode_standard_prompt(clip, request.negative_prompt)
|
|
return positive, negative
|
|
|
|
def prepare_latent(self, request: LLSUniversalGenerationRequest, model):
|
|
return self._prepare_empty_latent(request, model)
|
|
|
|
def sample(self, request: LLSUniversalGenerationRequest, model, positive, negative, latent):
|
|
return self._sample_latent(request, model, positive, negative, latent)
|
|
|
|
def decode(self, request: LLSUniversalGenerationRequest, vae, samples):
|
|
return self._decode_latent(vae, samples)
|