Diffusers documentation
Pipeline
Pipeline
ModularPipeline
classe 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 )
Classe base para todos os 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 (
strouos.PathLike, opcional) — Caminho para uma configuração de pipeline pré-treinada. Primeiro, tentará carregar a configuração demodular_model_index.jsone, em seguida, usarámodel_index.jsoncomo alternativa para compatibilidade com repositórios padrão não modulares. Se pretrained_model_name_or_path não contiver nenhuma configuração de pipeline, será definido como None durante a inicialização. - trust_remote_code (
bool, opcional) — Se deve confiar em código remoto ao carregar o pipeline. Precisa ser definido como True se você quiser criar blocos de pipeline com base no código personalizado empretrained_model_name_or_path - components_manager (
ComponentsManager, opcional) — Instância de ComponentsManager para gerenciar múltiplos componentes em diferentes pipelines e aplicar estratégias de offloading. - collection (
str, opcional) —` Nome da coleção para organizar componentes no ComponentsManager. - workflow (
str, opcional) — Nome de um workflow declarado pelos blocos do pipeline. Se fornecido, os blocos são podados para os blocos de execução daquele workflow, de modo que o pipeline espera apenas — eload_components()carrega apenas — os componentes que aquele workflow utiliza.
Carregue um ModularPipeline de um repositório do huggingface hub.
load_components
< source >( names: list[str] | str | None = Noneworkflow: str | None = None**kwargs )
Parâmetros
- names — lista de nomes de componentes a serem carregados. Se for None, carregará todos os componentes com default_creation_method == “from_pretrained”. Se fornecida como uma lista ou string, carregará apenas os componentes especificados.
- workflow — nome de um workflow declarado pelos blocos do pipeline. Se fornecido, apenas os componentes usados pelos blocos de execução do workflow são carregados. Não pode ser combinado com
names. - **kwargs — kwargs adicionais a serem passados para
from_pretrained().Pode ser:- um único valor a ser aplicado a todos os componentes a serem carregados, por exemplo, dtype=torch.bfloat16
- um dict, por exemplo, dtype={“unet”: torch.bfloat16, “default”: torch.float32}
- se potencialmente sobrescrever ComponentSpec se um campo de carregamento diferente for passado em kwargs, por exemplo,
pretrained_model_name_or_path,variant,revision, etc. - se potencialmente sobrescrever ComponentSpec se um campo de carregamento diferente for passado em kwargs, por exemplo,
pretrained_model_name_or_path,variant,revision, etc.
Carregue os componentes selecionados a partir das especificações.
register_components
< source >( **kwargs )
Registre os componentes com suas especificações correspondentes.
Este método é responsável por:
- Define os objetos de componentes como atributos no loader (por exemplo, self.unet = unet)
- Atualiza o dicionário de configuração, que será salvo como
modular_model_index.jsondurantesave_pretrained(apenas para componentes de from_pretrained) - Adiciona componentes ao gerenciador de componentes, se um estiver anexado (apenas para componentes de from_pretrained)
Este método é chamado quando:
- Os componentes são inicializados pela primeira vez em init:
- componentes de from_pretrained não carregados durante init, portanto registrados como None;
- componentes não de from_pretrained são criados durante init e registrados como o próprio objeto
- Os componentes são atualizados com o método
update_components(): por exemplo, loader.update_components(unet=unet) ou loader.update_components(guider=guider_spec) - (from_pretrained) Os componentes são carregados com o método
load_components(): por exemplo, loader.load_components(names=[“unet”]) ou loader.load_components() para carregar todos os componentes padrão
Observações:
- Ao registrar None para um componente, o atributo é definido como None, mas as especificações ainda são sincronizadas com o dicionário de configuração, que será salvo como
modular_model_index.jsondurantesave_pretrained - component_specs são atualizados para corresponder ao novo componente fora deste método, por exemplo, no método
update_components()
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 (
strouos.PathLike) — Diretório para salvar o pipeline. Será criado se não existir. - safe_serialization (
bool, opcional, padrãoTrue) — Se o modelo deve ser salvo usandosafetensorsou da maneira tradicional do PyTorch compickle. - variant (
str, opcional) — Se especificado, os pesos são salvos no formatopytorch_model.<variant>.bin. - max_shard_size (
intoustr, padrãoNone) — O tamanho máximo de um checkpoint antes de ser dividido em shards. Os shards do checkpoint terão, então, cada um um tamanho menor que esse valor. Se expresso como string, deve ser composto por dígitos seguidos de uma unidade (como"5GB"). Se expresso como inteiro, a unidade é bytes. - push_to_hub (
bool, opcional, padrãoFalse) — Se deve enviar o pipeline para o hub de modelos do Hugging Face após salvá-lo. - **kwargs — Argumentos de palavra-chave adicionais:
overwrite_modular_index(bool, opcional, padrãoTrue): Se deve atualizar omodular_model_index.jsonpara que a especificação de carregamento de cada componente salvo aponte para o destino:repo_idao enviar para o Hub, caso contráriosave_directory. Componentes que não são carregados não são salvos e sempre mantêm suas especificações de carregamento registradas. PasseFalsepara também preservar as especificações registradas dos componentes que estão sendo salvos (por exemplo, para um índice que referencia intencionalmente outros repositórios); componentes sem um id de carregamento (como modelos personalizados adicionados comupdate_components) ainda são reescritos, pois não possuem uma fonte registrada.repo_id(str, opcional): O ID do repositório para o qual o pipeline será enviado. O padrão é o último componente desave_directory.commit_message(str, opcional): Mensagem de commit para a operação de push no hub.private(bool, opcional): Se o repositório deve ser privado.create_pr(bool, opcional, padrãoFalse): Se deve criar um pull request em vez de fazer push diretamente.token(str, opcional): O token do Hugging Face a ser usado para autenticação.
Salve o pipeline e todos os seus componentes em um diretório, para que ele possa ser recarregado usando o método de classe from_pretrained().
para
< source >( *args**kwargs ) → DiffusionPipeline
Parâmetros
- dtype (
torch.dtype, opcional) — Retorna um pipeline com odtypeespecificado - device (
torch.Device, opcional) — Retorna um pipeline com odeviceespecificado - silence_dtype_warnings (
str, opcional, padrãoFalse) — Se deve omitir avisos quando odtypede destino não é compatível com odevicede destino.
Retorna
O pipeline foi convertido para o dtype e/ou dtype especificado.
Executa a conversão de dtype e/ou device do Pipeline. Um torch.dtype e um torch.device são inferidos a partir dos argumentos de self.to(*args, **kwargs).
> Se o pipeline já tiver o torch.dtype e o torch.device corretos, ele é retornado como está. Caso contrário, > o pipeline retornado é uma cópia de self com o torch.dtype e o torch.device desejados.
Aqui estão as formas de chamar to:
to(dtype, silence_dtype_warnings=False) → DiffusionPipelinepara retornar um pipeline com odtypeespecificadoto(device, silence_dtype_warnings=False) → DiffusionPipelinepara retornar um pipeline com odeviceespecificadoto(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipelinepara retornar um pipeline com odevicee odtypeespecificados
unload_components
< source >( names: list[str] | str )
Descarregue os componentes selecionados, liberando sua memória.
O atributo component é definido novamente como None e, se um ComponentsManager estiver anexado, o componente é removido
dele. A especificação do componente permanece intacta, portanto o componente pode ser carregado novamente mais tarde com load_components().
update_components
< source >( **kwargs )
Parâmetros
- **kwargs — Objetos de componente ou valores de configuração para atualizar:
- Objetos de componente: modelos carregados com
AutoModel.from_pretrained()ouComponentSpec.load()são automaticamente marcados com informações de carregamento. Objetos ConfigMixin sem pesos (por exemplo, schedulers, guiders) podem ser passados diretamente. - Valores de configuração: valores simples para atualizar as configurações
(por exemplo,
requires_safety_checker=False)
- Objetos de componente: modelos carregados com
Atualize os componentes e os valores e especificações de configuração após a instância do pipeline ter sido criada.
Este método permite que você:
- Substitua os componentes existentes por novos (por exemplo, atualizando
self.unetouself.text_encoder) - Atualize os valores de configuração (por exemplo, alterando a flag
self.requires_safety_checker)
Além de atualizar os componentes e os valores de configuração como atributos do pipeline, o método também atualiza:
- as especificações correspondentes em
_component_specse_config_specs - o dicionário
config, que será salvo comomodular_model_index.jsondurante osave_pretrained
Exemplos:
# 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)Observações:
- Componentes carregados com
AutoModel.from_pretrained()ouComponentSpec.load()terão as especificações de carregamento preservadas para serialização. Componentes personalizados ou carregados localmente sem referências do Hub terão suas entradas emmodular_model_index.jsonatualizadas automaticamente durantesave_pretrained(). - Objetos ConfigMixin sem pesos (por exemplo, agendadores, guias) podem ser passados diretamente.