Diffusers documentation
Pipeline
Pipeline
ModularPipeline
clase diffusers.ModularPipeline
< source >( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )
Clase base para todos los pipelines modulares.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | Nonetrust_remote_code: bool | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = None**kwargs )
Parámetros
- pretrained_model_name_or_path (
stroos.PathLike, opcional) — Ruta a una configuración de pipeline preentrenada. Primero intentará cargar la configuración desdemodular_model_index.jsony, si no es posible, usarámodel_index.jsonpara mantener la compatibilidad con los repositorios estándar no modulares. Si pretrained_model_name_or_path no contiene ninguna configuración de pipeline, se establecerá en None durante la inicialización. - trust_remote_code (
bool, opcional) — Si se debe confiar en el código remoto al cargar el pipeline. Debe establecerse en True si se desea crear bloques de pipeline basados en el código personalizado depretrained_model_name_or_path - components_manager (
ComponentsManager, opcional) — Instancia de ComponentsManager para gestionar múltiples componentes entre diferentes pipelines y aplicar estrategias de offloading. - collection (
str, opcional) —` Nombre de la colección para organizar los componentes en el ComponentsManager. - workflow (
str, opcional) — Nombre de un workflow declarado por los bloques de la pipeline. Si se proporciona, los bloques se recortan a los bloques de ejecución de ese workflow, de modo que la pipeline solo espera — yload_components()solo carga — los componentes que utiliza ese workflow.
Carga un ModularPipeline desde un repositorio de Hugging Face Hub.
load_components
< source >( names: list[str] | str | None = Noneworkflow: str | None = None**kwargs )
Parámetros
- names — lista de nombres de componentes a cargar. Si es None, se cargarán todos los componentes con default_creation_method == “from_pretrained”. Si se proporciona como una lista o una cadena, se cargarán solo los componentes especificados.
- workflow — nombre de un workflow declarado por los bloques de pipeline. Si se proporciona, solo se cargan los componentes que usan los bloques de ejecución del workflow. No se puede combinar con
names. - **kwargs — kwargs adicionales que se pasarán a
from_pretrained().Puede ser:- un único valor que se aplicará a todos los componentes que se carguen, p. ej. dtype=torch.bfloat16
- un diccionario, p. ej. dtype={“unet”: torch.bfloat16, “default”: torch.float32}
- si potencialmente sobrescribe ComponentSpec si se le pasa un campo de carga diferente en kwargs, p. ej.
pretrained_model_name_or_path,variant,revision, etc. - si potencialmente sobrescribe ComponentSpec si se le pasa un campo de carga diferente en kwargs, p. ej.
pretrained_model_name_or_path,variant,revision, etc.
Cargar los componentes seleccionados desde las especificaciones.
register_components
< source >( **kwargs )
Registre los componentes con sus especificaciones correspondientes.
Este método se encarga de:
- Establece los objetos de los componentes como atributos del cargador (p. ej., self.unet = unet)
- Actualiza el diccionario de configuración, que se guardará como
modular_model_index.jsondurantesave_pretrained(solo para los componentes de from_pretrained) - Añade componentes al gestor de componentes si está adjunto (solo para componentes de from_pretrained)
Este método se llama cuando:
- Los componentes se inicializan primero en init:
- los componentes de from_pretrained no se cargan durante init, por lo que se registran como None;
- los componentes no from_pretrained se crean durante init y se registran como el propio objeto
- Los componentes se actualizan con el método
update_components(): por ejemplo, loader.update_components(unet=unet) o loader.update_components(guider=guider_spec) - (from_pretrained) Los componentes se cargan con el método
load_components(): por ejemplo, loader.load_components(names=[“unet”]) o loader.load_components() para cargar todos los componentes predeterminados
Notas:
- Al registrar None para un componente, se establece el atributo en None, pero aún así se sincronizan las especificaciones con el diccionario de configuración, que se guardará como
modular_model_index.jsondurantesave_pretrained - component_specs are updated to match the new component outside of this method, e.g. in
update_components()method
save_pretrained
< source >( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = False**kwargs )
Parámetros
- save_directory (
stroos.PathLike) — Directorio donde se guardará el pipeline. Se creará si no existe. - safe_serialization (
bool, opcional, valor predeterminadoTrue) — Si se guarda el modelo usandosafetensorso de la forma tradicional de PyTorch conpickle. - variant (
str, opcional) — Si se especifica, los pesos se guardan en el formatopytorch_model.<variant>.bin. - max_shard_size (
intostr, por defectoNone) — El tamaño máximo de un checkpoint antes de ser fragmentado. Los fragmentos del checkpoint tendrán cada uno un tamaño inferior a este valor. Si se expresa como una cadena, debe consistir en dígitos seguidos de una unidad (como"5GB"). Si se expresa como un entero, la unidad es bytes. - push_to_hub (
bool, opcional, valor predeterminadoFalse) — Si se debe subir el pipeline al hub de modelos de Hugging Face después de guardarlo. - **kwargs — Argumentos de palabra clave adicionales:
overwrite_modular_index(bool, opcional, valor predeterminadoTrue): Si se debe actualizarmodular_model_index.jsonpara que la especificación de carga de cada componente guardado apunte al destino:repo_idal publicar en el Hub, o de lo contrariosave_directory. Los componentes que no se cargan no se guardan y siempre conservan sus especificaciones de carga registradas. PasaFalsepara conservar también las especificaciones registradas de los componentes que se están guardando (p. ej., para un índice que hace referencia intencionalmente a otros repositorios); los componentes sin un identificador de carga (como los modelos personalizados añadidos conupdate_components) se reescriben de todos modos, ya que no tienen una fuente registrada.repo_id(str, opcional): El ID del repositorio al que se enviará el pipeline. Por defecto, es el último componente desave_directory.commit_message(str, opcional): Mensaje de commit para la operación de push al hub.private(bool, opcional): Si el repositorio debe ser privado.create_pr(bool, opcional, valor predeterminadoFalse): Si se debe crear una pull request en lugar de hacer push directamente.token(str, opcional): El token de Hugging Face que se usará para la autenticación.
Guarde el pipeline y todos sus componentes en un directorio para que pueda recargarse mediante el método de clase from_pretrained().
hasta
< source >( *args**kwargs ) → DiffusionPipeline
Parámetros
- dtype (
torch.dtype, opcional) — Devuelve un pipeline con eldtypeespecificado - device (
torch.Device, opcional) — Devuelve un pipeline con eldeviceespecificado - silence_dtype_warnings (
str, opcional, valor predeterminadoFalse) — Si se omiten las advertencias cuando eldtypede destino no es compatible con eldevicede destino.
Devuelve
El pipeline se convirtió al dtype y/o dtype especificado.
Realiza la conversión de dtype y/o device de Pipeline. Se infieren un torch.dtype y un torch.device a partir de los argumentos de self.to(*args, **kwargs).
> Si el pipeline ya tiene el torch.dtype y el torch.device correctos, se devuelve tal cual. En caso contrario, > el pipeline devuelto es una copia de self con el torch.dtype y el torch.device deseados.
Estas son las formas de llamar a to:
to(dtype, silence_dtype_warnings=False) → DiffusionPipelinepara devolver un pipeline con eldtypeespecificadoto(device, silence_dtype_warnings=False) → DiffusionPipelinepara devolver un pipeline con eldeviceespecificadoto(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipelinepara devolver un pipeline con eldevicey eldtypeespecificados
unload_components
< source >( names: list[str] | str )
Descargue los componentes seleccionados, liberando su memoria.
El atributo component se restablece a None y, si hay un ComponentsManager adjunto, el componente se elimina de él. La especificación del componente no se modifica, por lo que el componente puede volver a cargarse más adelante con load_components().
update_components
< source >( **kwargs )
Parámetros
- **kwargs — Objetos de componente o valores de configuración para actualizar: Objetos de componente: los modelos cargados con AutoModel.from_pretrained() o ComponentSpec.load() se etiquetan automáticamente con información de carga. Los objetos ConfigMixin sin pesos (p. ej., programadores, guías) se pueden pasar directamente. Valores de configuración: valores simples para actualizar la configuración (p. ej., requires_safety_checker=False)
- Objetos de componente: los modelos cargados con
AutoModel.from_pretrained()oComponentSpec.load()se etiquetan automáticamente con información de carga. Los objetos ConfigMixin sin pesos (p. ej., schedulers, guiders) se pueden pasar directamente. - Valores de configuración: valores simples para actualizar la configuración
(p. ej.,
requires_safety_checker=False)
- Objetos de componente: los modelos cargados con
Actualice los componentes y los valores y especificaciones de la configuración después de que se haya instanciado el pipeline.
Este método le permite:
- Reemplace los componentes existentes por nuevos (por ejemplo, actualizando
self.unetoself.text_encoder) - Actualizar los valores de configuración (p. ej., cambiar la bandera
self.requires_safety_checker)
Además de actualizar los componentes y los valores de configuración como atributos de la pipeline, el método también actualiza:
- las especificaciones correspondientes en
_component_specsy_config_specs - el diccionario
config, que se guardará comomodular_model_index.jsondurantesave_pretrained
Ejemplos:
# Update pre-trained model
pipeline.update_components(unet=new_unet_model, text_encoder=new_text_encoder)
# Update configuration values
pipeline.update_components(requires_safety_checker=False)Notas:
- Los componentes cargados con
AutoModel.from_pretrained()oComponentSpec.load()conservarán las especificaciones de carga para la serialización. Los componentes personalizados o cargados localmente sin referencias al Hub tendrán sus entradas enmodular_model_index.jsonactualizadas automáticamente durantesave_pretrained(). - Los objetos ConfigMixin sin pesos (p. ej., programadores, guías) se pueden pasar directamente.