chore: auto-commit (95 archivos)
- cmd/fn/doctor.go - cmd/fn/main.go - cpp/apps/primitives_gallery/playground/tables/CMakeLists.txt - cpp/apps/primitives_gallery/playground/tables/data_table.cpp - cpp/apps/primitives_gallery/playground/tables/data_table_logic.cpp - cpp/apps/primitives_gallery/playground/tables/data_table_logic.h - cpp/apps/primitives_gallery/playground/tables/self_test.cpp - cpp/apps/primitives_gallery/playground/tables/tql.cpp - cpp/apps/primitives_gallery/playground/tables/viz.cpp - cpp/apps/primitives_gallery/playground/tables/viz.h - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
"""diffusers_load_lora — carga un adaptador LoRA en un pipeline diffusers."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
import os
|
||||
from typing import Any
|
||||
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
|
||||
from lora_ref import LoraRef
|
||||
|
||||
|
||||
def diffusers_load_lora(pipe: Any, lora: LoraRef) -> Any:
|
||||
"""Carga un adaptador LoRA en un pipeline diffusers y ajusta su peso de fusion.
|
||||
|
||||
Usa pipe.load_lora_weights(lora.path) para cargar los pesos del adaptador.
|
||||
Si lora.weight != 1.0, aplica set_adapters(['default'], adapter_weights=[w])
|
||||
para escalar la contribucion del LoRA. Modifica el pipe in-place y retorna
|
||||
el mismo objeto para composicion.
|
||||
|
||||
Args:
|
||||
pipe: Pipeline diffusers cargado. Debe soportar load_lora_weights
|
||||
(StableDiffusionPipeline, StableDiffusionXLPipeline, etc.).
|
||||
lora: Referencia al adaptador LoRA. lora.path apunta al archivo
|
||||
.safetensors o directorio del adaptador. lora.weight controla
|
||||
la intensidad de fusion (1.0 = peso completo, 0.0 = sin efecto).
|
||||
|
||||
Returns:
|
||||
El mismo pipe con el LoRA cargado y el peso de fusion aplicado.
|
||||
|
||||
Raises:
|
||||
ImportError: Si diffusers no esta instalado.
|
||||
OSError: Si lora.path no existe o el formato del archivo es invalido.
|
||||
"""
|
||||
try:
|
||||
import diffusers # noqa: F401 — verificar disponibilidad
|
||||
except ImportError as exc:
|
||||
raise ImportError(
|
||||
"diffusers_load_lora requiere diffusers. "
|
||||
"Instalar con: pip install diffusers"
|
||||
) from exc
|
||||
|
||||
pipe.load_lora_weights(lora.path)
|
||||
|
||||
if lora.weight != 1.0:
|
||||
# set_adapters acepta lista de nombres y lista de pesos.
|
||||
# El nombre "default" es el que diffusers asigna al primer LoRA cargado.
|
||||
if hasattr(pipe, "set_adapters"):
|
||||
pipe.set_adapters(["default"], adapter_weights=[lora.weight])
|
||||
elif hasattr(pipe, "fuse_lora"):
|
||||
# Fallback para versiones antiguas de diffusers
|
||||
pipe.fuse_lora(lora_scale=lora.weight)
|
||||
|
||||
return pipe
|
||||
Reference in New Issue
Block a user