Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /pt /api /modular_diffusers /pipeline_components.md
mishig's picture
|
download
raw
16.3 kB
# Componentes e configurações
## ComponentSpec[[diffusers.ComponentSpec]]
#### diffusers.ComponentSpec[[diffusers.ComponentSpec]]
```python
diffusers.ComponentSpec(name: str | None = None, type_hint: typing.Optional[typing.Type] = None, description: str | None = None, config: diffusers.configuration_utils.FrozenDict | None = None, pretrained_model_name_or_path: str | list[str] | None = None, subfolder: str | None = '', variant: str | None = None, revision: str | None = None, default_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained', repo: str | list[str] | None = None)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L98)
**Parâmetros:**
name : Nome do componente
type_hint : Tipo do componente (por exemplo, UNet2DConditionModel)
description : Descrição opcional do componente
config : Dicionário de configuração opcional para a criação de __init__
pretrained_model_name_or_path : Caminho opcional pretrained_model_name_or_path para a criação via from_pretrained
subfolder : Subpasta opcional em pretrained_model_name_or_path
variant : variante opcional em pretrained_model_name_or_path
revision : Revisão opcional em pretrained_model_name_or_path
default_creation_method : Preferred creation method - "from_config" or "from_pretrained"
Especificação para um componente de pipeline.
Um componente pode ser criado de duas maneiras:
1. Do zero usando __init__ com um dicionário de configuração
2. usando `from_pretrained`
#### criar[[diffusers.ComponentSpec.create]]
```python
create(config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None, **kwargs)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L267)
Crie o componente usando from_config com config.
#### decode_load_id[[diffusers.ComponentSpec.decode_load_id]]
```python
decode_load_id(load_id: str)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L228)
**Parâmetros:**
load_id : A string load_id a ser decodificada, formato: "pretrained_model_name_or_path|subfolder|variant|revision", onde os valores None são representados como "null"
**Retorna:**
Dicionário que mapeia os nomes dos campos de carregamento para seus valores. Ex.: { "pretrained_model_name_or_path": "path/to/repo", "subfolder": "subfolder", "variant": "variant", "revision": "revision" } Se o valor de um segmento for "null", ele é substituído por None. Retorna None se load_id for "null" (indicando que o componente não foi criado com o método `load`).
Decodifique uma string de load_id de volta para um dicionário de campos e valores de carregamento.
#### from_component[[diffusers.ComponentSpec.from_component]]
```python
from_component(name: str, component: Any)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L149)
**Parâmetros:**
name : Nome do componente
component : Objeto de componente a partir do qual criar a especificação
**Retorna:**
Objeto ComponentSpec
**Exceções:** ``ValueError``
- ``ValueError`` -- Se o componente não for suportado (por exemplo, nn.Module sem load_id, não-ConfigMixin)
Crie um ComponentSpec a partir de um Component.
Atualmente suporta:
- Componentes criados com o método `ComponentSpec.load()`
- Componentes que são subclasses de ConfigMixin, mas não são nn.Modules (por exemplo, agendadores, guias)
#### load[[diffusers.ComponentSpec.load]]
```python
load(**kwargs)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L295)
Carregue o componente usando from_pretrained.
#### loading_fields[[diffusers.ComponentSpec.loading_fields]]
```python
loading_fields()
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L209)
Retorna os nomes de todos os campos relacionados ao carregamento (ou seja, aqueles cujo field.metadata["loading"] é True).
## ConfigSpec[[diffusers.ConfigSpec]]
#### diffusers.ConfigSpec[[diffusers.ConfigSpec]]
```python
diffusers.ConfigSpec(name: str, default: Any, description: str | None = None)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L360)
Especificação para um parâmetro de configuração de pipeline.
## ComponentsManager[[diffusers.ComponentsManager]]
#### diffusers.ComponentsManager[[diffusers.ComponentsManager]]
```python
diffusers.ComponentsManager()
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L296)
Um sistema central de registro e gerenciamento para componentes de modelos em vários pipelines.
[ComponentsManager](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) oferece uma maneira unificada de registrar, rastrear e reutilizar componentes de modelo (como UNet, VAE, codificadores de texto, etc.) entre diferentes pipelines modulares. Ele inclui recursos para detecção de duplicatas, gerenciamento de memória e organização de componentes.
> [!WARNING] > Este é um recurso experimental e provavelmente mudará no futuro.
Exemplo:
```python
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")
```
#### adicionar[[diffusers.ComponentsManager.add]]
```python
add(name: str, component: Any, collection: str | None = None)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L393)
**Parâmetros:**
name (str) : O nome do componente
component (Any) : O componente a ser adicionado
collection (str | None) : A coleção à qual adicionar o componente
**Retorna:** `str`
O ID único do componente, que é gerado como "{name}_{id(component)}", onde id(component) é o identificador único embutido do Python para o objeto
Adicione um componente ao ComponentsManager.
#### disable_auto_cpu_offload[[diffusers.ComponentsManager.disable_auto_cpu_offload]]
```python
disable_auto_cpu_offload()
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L795)
Desative o offloading automático de CPU para todos os componentes.
#### enable_auto_cpu_offload[[diffusers.ComponentsManager.enable_auto_cpu_offload]]
```python
enable_auto_cpu_offload(device: str | int | torch.device = None, memory_reserve_margin = '3GB', offload_strategy = None)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L701)
**Parâmetros:**
device (str | int | torch.device) : O dispositivo de execução para onde os modelos são movidos para as passadas de frente
memory_reserve_margin (str) : A margem de reserva de memória a ser usada, padrão é 3GB. Esta é a quantidade de memória a manter livre no dispositivo para evitar a falta de memória durante a execução do modelo (por exemplo, para ativações intermediárias, gradientes, etc.)
offload_strategy : Qualquer função chamável com a assinatura `(hooks, model_id, model, execution_device) -> hooks`, retornando quais modelos residentes devem ser descarregados antes que o modelo a ser carregado seja carregado. O padrão é `AutoOffloadStrategy`, que libera a combinação mínima suficiente.
Ative o offloading automático de CPU para todos os componentes.
O algoritmo funciona da seguinte forma:
1. Todos os modelos começam na CPU por padrão
2. Quando o forward pass de um modelo é chamado, ele é movido para o dispositivo de execução
3. Se houver memória insuficiente, outros modelos no dispositivo são movidos de volta para a CPU
4. O sistema tenta descarregar a menor combinação de modelos que libere memória suficiente
5. Os modelos permanecem no dispositivo de execução até que outro modelo precise de memória e os force a sair
Um modelo offloaded em grupo participa disso, mas se posiciona: ele ainda pode abrir espaço movendo outros modelos para o lado, e nunca é movido para abrir espaço para eles. Qualquer ordem funciona — offload em grupo antes ou depois de habilitar isso. `AutoOffloadStrategy` dimensiona suas decisões com base nas pegadas de memória dos modelos, que não descrevem um modelo segurando um grupo de cada vez, então passe um `offload_strategy` que decida com base no fluxo de trabalho.
#### get_components_by_ids[[diffusers.ComponentsManager.get_components_by_ids]]
```python
get_components_by_ids(ids: list[str], return_dict_with_names: bool | None = True)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L1104)
**Parâmetros:**
ids (list[str]) : lista de IDs de componentes
return_dict_with_names (bool | None) : Se deve retornar um dicionário com os nomes dos componentes como chaves:
**Retorna:** dict[str, Any]
Dicionário de componentes.
- Se return_dict_with_names=True, as chaves são os nomes dos componentes.
- Se return_dict_with_names=False, as chaves são os IDs dos componentes.
**Exceções:** ``ValueError``
- ``ValueError`` -- Se nomes de componentes duplicados forem encontrados nos resultados da busca quando return_dict_with_names=True
Obtém componentes por uma lista de IDs.
#### get_components_by_names[[diffusers.ComponentsManager.get_components_by_names]]
```python
get_components_by_names(names: list[str], collection: str | None = None)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L1137)
**Parâmetros:**
names (list[str]) : lista de nomes de componentes
collection (str | None) : Coleção opcional para filtrar por
**Retorna:** dict[str, Any]
Dicionário de componentes com os nomes dos componentes como chaves
**Exceções:** ``ValueError``
- ``ValueError`` -- Se nomes de componentes duplicados forem encontrados nos resultados da busca
Obtém componentes por uma lista de nomes, opcionalmente filtrados por coleção.
#### get_ids[[diffusers.ComponentsManager.get_ids]]
```python
get_ids(names: str | list[str] = None, collection: str | None = None)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L1086)
**Parâmetros:**
names (str | list[str]) : lista de nomes de componentes
collection (str | None) : Coleção opcional para filtrar por
**Retorna:** list[str]
lista de IDs de componentes
Obtém os IDs dos componentes por uma lista de nomes, opcionalmente filtrados por coleção.
#### get_model_info[[diffusers.ComponentsManager.get_model_info]]
```python
get_model_info(component_id: str, fields: str | list[str] | None = None)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L812)
**Parâmetros:**
component_id (str) : Nome do componente para o qual se deseja obter informações
fields (str | list[str] | None) : Campo(s) a retornar. Pode ser uma string para um único campo ou uma lista de campos. Se for None, usa a configuração available_info_fields.
**Retorna:**
Dicionário contendo os metadados do componente solicitado. Se fields for especificado, retorna apenas esses campos. Caso contrário, retorna todos os campos.
Obtenha informações abrangentes sobre um componente.
#### get_one[[diffusers.ComponentsManager.get_one]]
```python
get_one(component_id: str | None = None, name: str | None = None, collection: str | None = None, load_id: str | None = None)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L1041)
**Parâmetros:**
component_id (str | None) : ID de componente opcional para obter
name (str | None) : Nome ou padrão do componente
collection (str | None) : Coleção opcional para filtrar por
load_id (str | None) : load_id opcional para filtrar por
**Retorna:**
Um único componente
**Exceções:** ``ValueError``
- ``ValueError`` -- Se nenhum componente corresponder ou se múltiplos componentes corresponderem
Obtenha um único componente por meio de:
- busca por nome (correspondência de padrão), coleção ou load_id.
- passando um component_id
Gera um erro se vários componentes corresponderem ou nenhum for encontrado.
#### remover[[diffusers.ComponentsManager.remove]]
```python
remove(component_id: str = None)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L485)
**Parâmetros:**
component_id (str) : O ID do componente a ser removido
Remove um componente do ComponentsManager.
#### remove_from_collection[[diffusers.ComponentsManager.remove_from_collection]]
```python
remove_from_collection(component_id: str, collection: str)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L467)
Remove um componente de uma coleção.
#### search_components[[diffusers.ComponentsManager.search_components]]
```python
search_components(names: str | None = None, collection: str | None = None, load_id: str | None = None, return_dict_with_names: bool = True)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L515)
**Parâmetros:**
names : Nome(s) ou padrão(ões) dos componentes Padrões: - "unet" : corresponde a qualquer componente com nome base "unet" (ex.: unet_123abc) - "!unet" : tudo exceto componentes com nome base "unet" - "unet*" : qualquer coisa com nome base começando com "unet" - "!unet*" : qualquer coisa com nome base NÃO começando com "unet" - "*unet*" : qualquer coisa com nome base contendo "unet" - "!*unet*" : qualquer coisa com nome base NÃO contendo "unet" - "refiner|vae|unet" : qualquer coisa com nome base correspondendo exatamente a "refiner", "vae" ou "unet" - "!refiner|vae|unet" : qualquer coisa com nome base NÃO correspondendo exatamente a "refiner", "vae" ou "unet" - "unet*|vae*" : qualquer coisa com nome base começando com "unet" OU começando com "vae"
collection : Coleção opcional para filtrar por
load_id : load_id opcional para filtrar por
return_dict_with_names : Se True, retorna um dicionário com os nomes dos componentes como chaves, lança um erro se múltiplos componentes com o mesmo nome forem encontrados Se False, retorna um dicionário com os IDs dos componentes como chaves
**Retorna:**
Dicionário que mapeia nomes de componentes para componentes, se return_dict_with_names=True, ou um dicionário que mapeia IDs de componentes para componentes, se return_dict_with_names=False
Pesquise componentes por nome com correspondência de padrões simples. Opcionalmente, filtre por collection ou load_id.
#### set_offload_strategy[[diffusers.ComponentsManager.set_offload_strategy]]
```python
set_offload_strategy(offload_strategy)
```
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L779)
**Parâmetros:**
offload_strategy : Qualquer função chamável com a assinatura `(hooks, model_id, model, execution_device) -> hooks`: ela recebe os hooks dos modelos atualmente no dispositivo e retorna os que devem ser descarregados antes que o modelo recebido seja carregado. O padrão é `AutoOffloadStrategy`, que libera a combinação mínima suficiente.
Substitua a estratégia de offload em todos os modelos gerenciados. Válido apenas quando o offload automático para CPU está habilitado.
## InsertableDict[[diffusers.modular_pipelines.InsertableDict]]
#### diffusers.modular_pipelines.InsertableDict[[diffusers.modular_pipelines.InsertableDict]]
[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L60)

Xet Storage Details

Size:
16.3 kB
·
Xet hash:
288f1df81ca43a7fb5adac4122a931983deaedabb0f5de017a13b3175dffbadf

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.