Diffusers documentation
Componentes y configuraciones
Componentes y configuraciones
ComponentSpec
clase diffusers.ComponentSpec
< source >( name: str | None = Nonetype_hint: typing.Optional[typing.Type] = Nonedescription: str | None = Noneconfig: diffusers.configuration_utils.FrozenDict | None = Nonepretrained_model_name_or_path: str | list[str] | None = Nonesubfolder: str | None = ''variant: str | None = Nonerevision: str | None = Nonedefault_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained'repo: str | list[str] | None = None )
Parámetros
- name — Nombre del componente
- type_hint — Tipo del componente (p. ej., UNet2DConditionModel)
- description — Descripción opcional del componente
- config — Diccionario de configuración opcional para la creación de init
- pretrained_model_name_or_path — Ruta opcional de pretrained_model_name_or_path para la creación con from_pretrained
- subfolder — Subcarpeta opcional en pretrained_model_name_or_path
- variant — Variante opcional en pretrained_model_name_or_path
- revision — Revisión opcional en pretrained_model_name_or_path
- default_creation_method — Preferred creation method - “from_config” or “from_pretrained”
Especificación de un componente de pipeline.
Un componente puede crearse de dos formas:
- Desde cero usando init con un diccionario de configuración
- usando
from_pretrained
create
< source >( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )
Crea el componente usando from_config con config.
decode_load_id
< source >( load_id: str )
Decodifica una cadena load_id de vuelta en un diccionario de campos y valores de carga.
from_component
< source >( name: strcomponent: Any )
Crea un ComponentSpec a partir de un Component.
Actualmente soporta:
- Componentes creados con el método
ComponentSpec.load() - Componentes que son subclases de ConfigMixin pero no de nn.Modules (p. ej., schedulers, guiders)
Cargue el componente usando from_pretrained.
Devuelve los nombres de todos los campos relacionados con la carga (es decir, aquellos cuyo field.metadata[“loading”] es True).
ConfigSpec
Especificación de un parámetro de configuración de pipeline.
ComponentsManager
Un registro central y un sistema de gestión para los componentes de modelos en varias tuberías.
ComponentsManager ofrece una forma unificada de registrar, hacer seguimiento y reutilizar componentes de modelos (como UNet, VAE, codificadores de texto, etc.) entre diferentes pipelines modulares. Incluye funciones para la detección de duplicados, la gestión de memoria y la organización de componentes.
> Esta es una función experimental y es probable que cambie en el futuro.
Ejemplo:
from diffusers import ComponentsManager
# Create a components manager
cm = ComponentsManager()
# Add components
cm.add("unet", unet_model, collection="sdxl")
cm.add("vae", vae_model, collection="sdxl")
# Enable auto offloading
cm.enable_auto_cpu_offload()
# Retrieve components
unet = cm.get_one(name="unet", collection="sdxl")add
< source >( name: strcomponent: Anycollection: str | None = None ) → str
Parámetros
- name (str) — El nombre del componente
- component (Any) — El componente a añadir
- collection (str | None) — La colección a la que se añadirá el componente
Devuelve
str
El ID de componente único, que se genera como “{name}_{id(component)}”, donde id(component) es el identificador único integrado de Python para el objeto
Agregue un componente al ComponentsManager.
Desactivar el descargado automático de CPU para todos los componentes.
enable_auto_cpu_offload
< source >( device: str | int | torch.device = Nonememory_reserve_margin = '3GB'offload_strategy = None )
Parámetros
- device (str | int | torch.device) — El dispositivo de ejecución donde se mueven los modelos para las pasadas hacia adelante
- memory_reserve_margin (str) — El margen de reserva de memoria a utilizar, el valor predeterminado es 3GB. Esta es la cantidad de memoria que se mantiene libre en el dispositivo para evitar quedarse sin memoria durante la ejecución del modelo (p. ej., para activaciones intermedias, gradientes, etc.).
- offload_strategy — Cualquier función con la firma
(hooks, model_id, model, execution_device) -> hooks, que devuelve qué modelos residentes deben descargarse antes de cargar el entrante. Por defecto,AutoOffloadStrategy, que libera la combinación mínima suficiente.
Habilita el descargado automático de CPU para todos los componentes.
El algoritmo funciona de la siguiente manera:
- Todos los modelos se inician en la CPU de forma predeterminada
- Cuando se llama al paso hacia adelante de un modelo, este se mueve al dispositivo de ejecución
- Si la memoria es insuficiente, otros modelos en el dispositivo se devuelven a la CPU
- El sistema intenta descargar la combinación más pequeña de modelos que libere suficiente memoria
- Los modelos permanecen en el dispositivo de ejecución hasta que otro modelo necesita memoria y los fuerza a salir
Un modelo con descarga por grupo participa en esto pero se coloca a sí mismo: aún puede hacer espacio moviendo otros modelos a un lado, y nunca se mueve para hacerles espacio a ellos. Cualquiera de los dos órdenes funciona: la descarga por grupo antes o después de habilitar esto. AutoOffloadStrategy dimensiona sus decisiones a partir de la huella de memoria de los modelos, lo cual no describe un modelo que mantiene un grupo a la vez, por lo que pase una offload_strategy que decida a partir del flujo de trabajo.
get_components_by_ids
< source >( ids: list[str]return_dict_with_names: bool | None = True ) → dict[str, Any]
Parámetros
- ids (list[str]) — lista de IDs de componentes
- return_dict_with_names (bool | None) — Si se debe devolver un diccionario con los nombres de los componentes como claves:
Devuelve
dict[str, Any]
Diccionario de componentes.
- Si return_dict_with_names=True, las claves son los nombres de los componentes.
- Si return_dict_with_names=False, las claves son los ID de los componentes.
Lanza
ValueError
ValueError— Si se encuentran nombres de componentes duplicados en los resultados de búsqueda cuando return_dict_with_names=True
Obtén componentes mediante una lista de IDs.
get_components_by_names
< source >( names: list[str]collection: str | None = None ) → dict[str, Any]
Parámetros
- names (list[str]) — lista de nombres de componentes
- collection (str | None) — Colección opcional para filtrar
Devuelve
dict[str, Any]
Diccionario de componentes con los nombres de los componentes como claves
Lanza
ValueError
ValueError— Si se encuentran nombres de componentes duplicados en los resultados de búsqueda
Obtén componentes mediante una lista de nombres, opcionalmente filtrados por colección.
get_ids
< source >( names: str | list[str] = Nonecollection: str | None = None ) → list[str]
Obtén los ID de componentes mediante una lista de nombres, opcionalmente filtrada por colección.
get_model_info
< source >( component_id: strfields: str | list[str] | None = None )
Obtén información completa sobre un componente.
get_one
< source >( component_id: str | None = Nonename: str | None = Nonecollection: str | None = Noneload_id: str | None = None )
Parámetros
- component_id (str | None) — ID de componente opcional para obtener
- name (str | None) — Nombre del componente o patrón
- collection (str | None) — Colección opcional para filtrar
- load_id (str | None) — load_id opcional para filtrar
Lanza
ValueError
ValueError— Si ningún componente coincide o si varios componentes coinciden
Obtén un componente individual mediante:
- búsqueda por nombre (coincidencia de patrones), colección o load_id.
- pasando un component_id Lanza un error si varios componentes coinciden o si no se encuentra ninguno.
remove
< source >( component_id: str = None )
Eliminar un componente del ComponentsManager.
Eliminar un componente de una colección.
search_components
< source >( names: str | None = Nonecollection: str | None = Noneload_id: str | None = Nonereturn_dict_with_names: bool = True )
Parámetros
- names — Nombre(s) de componente o patrón(es)
Patrones:
- “unet”: coincide con cualquier componente cuyo nombre base sea “unet” (p. ej., unet_123abc)
- “!unet”: todo excepto los componentes con nombre base “unet”
- “unet*”: cualquier cosa cuyo nombre base comience con “unet”
- “!unet*” : cualquier cosa cuyo nombre base NO comience con “unet”
- ”unet” : cualquier cosa cuyo nombre base contenga “unet”
- “!unet” : cualquier cosa cuyo nombre base NO contenga “unet”
- “refiner|vae|unet” : cualquier cosa cuyo nombre base coincida exactamente con “refiner”, “vae” o “unet”
- “!refiner|vae|unet”: cualquier cosa cuyo nombre base no coincida exactamente con “refiner”, “vae” o “unet”
- “unet|vae”: cualquier cosa cuyo nombre base comience por “unet” O comience por “vae”
- collection — Colección opcional para filtrar
- load_id — load_id opcional para filtrar
- return_dict_with_names — Si es True, devuelve un diccionario con los nombres de los componentes como claves y lanza un error si se encuentran múltiples componentes con el mismo nombre. Si es False, devuelve un diccionario con los IDs de los componentes como claves.
Busque componentes por nombre mediante una coincidencia de patrones simple. Opcionalmente, filtre por colección o load_id.
set_offload_strategy
< source >( offload_strategy )
Parámetros
- offload_strategy —
Cualquier función invocable con la firma
(hooks, model_id, model, execution_device) -> hooks: recibe los hooks de los modelos actualmente en el dispositivo y devuelve los que se deben descargar antes de que se cargue el modelo entrante. El valor predeterminado esAutoOffloadStrategy, que libera la combinación mínima suficiente.
Reemplaza la estrategia de offload en todos los modelos gestionados. Solo es válido mientras el offload automático a CPU esté habilitado.