Diffusers documentation

Agendadores

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Agendadores

🤗 O Diffusers fornece muitas funções de agendador para o processo de difusão. Um agendador recebe a saída de um modelo (a amostra na qual o processo de difusão está iterando) e um timestep para retornar uma amostra sem ruído. O timestep é importante porque determina em que ponto do processo de difusão a etapa está; os dados são gerados iterando para frente n timesteps e a inferência ocorre propagando para trás pelos timesteps. Com base no timestep, um agendador pode ser discreto, no qual o timestep é um int, ou contínuo, no qual o timestep é um float.

Dependendo do contexto, um scheduler define como adicionar ruído iterativamente a uma imagem ou como atualizar uma amostra com base na saída de um modelo:

  • durante o treinamento, um agendador adiciona ruído (existem diferentes algoritmos para a forma de adicionar ruído) a uma amostra para treinar um modelo de difusão
  • durante a inferência, um agendador define como atualizar uma amostra com base na saída de um modelo pré-treinado

Muitos agendadores são implementados a partir da biblioteca k-diffusion de Katherine Crowson e também são amplamente utilizados no A1111. Para ajudá-lo a mapear os agendadores do k-diffusion e do A1111 para os agendadores no 🤗 Diffusers, veja a tabela abaixo:

A1111/k-diffusion🤗 DiffusersUso
DPM++ 2MDPMSolverMultistepScheduler
DPM++ 2M KarrasDPMSolverMultistepSchedulerinicialize com use_karras_sigmas=True
DPM++ 2M SDEDPMSolverMultistepSchedulerinicialize com algorithm_type="sde-dpmsolver++"
DPM++ 2M SDE KarrasDPMSolverMultistepSchedulerinicialize com use_karras_sigmas=True e algorithm_type="sde-dpmsolver++"
DPM++ 2S aN/Amuito semelhante ao DPMSolverSinglestepScheduler
DPM++ 2S a KarrasN/Amuito semelhante a DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...)
DPM++ SDEDPMSolverSinglestepScheduler
DPM++ SDE KarrasDPMSolverSinglestepSchedulerinicialize com use_karras_sigmas=True
DPM2KDPM2DiscreteScheduler
DPM2 KarrasKDPM2DiscreteSchedulerinicialize com use_karras_sigmas=True
DPM2 aKDPM2AncestralDiscreteScheduler
DPM2 a KarrasKDPM2AncestralDiscreteSchedulerinicialize com use_karras_sigmas=True
DPM adaptativoN/A
DPM rápidoN/A
EulerEulerDiscreteScheduler
Euler aEulerAncestralDiscreteScheduler
HeunHeunDiscreteScheduler
LMSLMSDiscreteScheduler
LMS KarrasLMSDiscreteSchedulerinicialize com use_karras_sigmas=True
N/ADEISMultistepScheduler
N/AUniPCMultistepScheduler

Agendamentos de ruído e tipos de agendamento

A1111/k-diffusion🤗 Diffusers
Karrasinicialize com use_karras_sigmas=True
sgm_uniforminicializar com timestep_spacing="trailing"
simplesinicializar com timestep_spacing="trailing"
exponencialinicialize com timestep_spacing="linspace", use_exponential_sigmas=True
betainicializar com timestep_spacing="linspace", use_beta_sigmas=True

Todos os agendadores são construídos a partir da classe base SchedulerMixin, que implementa utilitários de baixo nível compartilhados por todos os agendadores.

SchedulerMixin

classe diffusers.SchedulerMixin

< >

( )

Classe base para todos os agendadores.

SchedulerMixin contém funções comuns compartilhadas por todos os agendadores, como as funcionalidades gerais de carregamento e salvamento.

ConfigMixin cuida de armazenar os atributos de configuração (como num_train_timesteps) que são passados para a função __init__ do scheduler, e os atributos podem ser acessados por scheduler.config.num_train_timesteps.

Atributos de classe:

  • _compatibles (list[str]) — Uma lista de classes de agendadores compatíveis com a classe de agendador pai. Use from_config() para carregar uma classe de agendador compatível diferente (deve ser sobrescrita pela classe pai).

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike | None = Nonesubfolder: str | None = Nonereturn_unused_kwargs: bool = False**kwargs: Any ) → SchedulerMixin or tuple[SchedulerMixin, dict[str, Any]]

Parâmetros

  • pretrained_model_name_or_path (str ou os.PathLike, opcional) — Pode ser:
    • Uma string, o id do modelo (por exemplo, google/ddpm-celebahq-256) de um modelo pré-treinado hospedado no Hub.
    • Um caminho para um diretório (por exemplo, ./my_model_directory) contendo a configuração do agendador salva com save_pretrained().
  • subfolder (str, opcional) — A localização da subpasta de um arquivo de modelo dentro de um repositório de modelo maior no Hub ou localmente.
  • return_unused_kwargs (bool, opcional, padrão False) — Se os kwargs que não são consumidos pela classe Python devem ser retornados ou não.
  • cache_dir (str ou os.PathLike, opcional) — Caminho para um diretório onde a configuração de um modelo pré-treinado baixado é armazenada em cache, caso o cache padrão não seja utilizado.
  • force_download (bool, opcional, padrão False) — Se deve forçar o (re-)download dos pesos do modelo e dos arquivos de configuração, sobrescrevendo as versões em cache, caso existam.
  • proxies (dict[str, str], opcional) — Um dicionário de servidores proxy a serem usados por protocolo ou endpoint, por exemplo, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Os proxies são usados em cada solicitação.
  • output_loading_info (bool, opcional, padrão False) — Indica se deve ou não retornar também um dicionário contendo chaves ausentes, chaves inesperadas e mensagens de erro.
  • local_files_only (bool, opcional, padrão False) — Se deve carregar apenas os pesos e arquivos de configuração do modelo localmente. Se definido como True, o modelo não será baixado do Hub.
  • token (str ou bool, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. Se True, o token gerado por diffusers-cli login (armazenado em ~/.huggingface) é utilizado.
  • revision (str, opcional, padrão "main") — A versão específica do modelo a ser usada. Pode ser o nome de um branch, o nome de uma tag, um id de commit ou qualquer identificador permitido pelo Git.

Retorna

SchedulerMixin ou tuple[SchedulerMixin, dict[str, Any]]

O agendador instanciado a partir da configuração. Se return_unused_kwargs for True, uma tupla é retornada, onde o segundo elemento é um dicionário de argumentos de palavra-chave não utilizados.

Instancie um agendador a partir de um arquivo de configuração JSON predefinido em um diretório local ou em um repositório do Hub.

> Para usar modelos privados ou com acesso restrito, faça login com hf > auth login. Você também pode ativar o modo especial > “offline” para usar este método em um > ambiente com firewall.

save_pretrained

< >

( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )

Parâmetros

  • save_directory (str ou os.PathLike) — Diretório onde o arquivo JSON de configuração será salvo (será criado se não existir).
  • push_to_hub (bool, opcional, padrão False) — Se deve ou não enviar seu modelo para o Hugging Face Hub após salvá-lo. Você pode especificar o repositório para o qual deseja enviar com repo_id (o padrão será o nome de save_directory no seu namespace).
  • kwargs (dict[str, Any], opcional) — Argumentos de palavra-chave adicionais passados ao método push_to_hub().

Salve um objeto de configuração de agendador em um diretório para que ele possa ser recarregado usando o método de classe from_pretrained().

SchedulerOutput

classe diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

Parâmetros

  • prev_sample (torch.Tensor de forma (batch_size, num_channels, height, width) para imagens) — Amostra calculada (x_{t-1}) do passo de tempo anterior. prev_sample deve ser usado como entrada do modelo no loop de remoção de ruído.

Classe base para a saída da função step de um agendador.

KarrasDiffusionSchedulers

KarrasDiffusionSchedulers são uma generalização ampla dos agendadores no 🤗 Diffusers. Os agendadores desta classe se distinguem em alto nível pela estratégia de amostragem de ruído, pelo tipo de rede e escalonamento, pela estratégia de treinamento e pela forma como a perda é ponderada.

Os diferentes agendadores desta classe, dependendo do tipo de solucionador de equações diferenciais ordinárias (ODE), se enquadram na taxonomia acima e fornecem uma boa abstração para o design dos principais agendadores implementados no 🤗 Diffusers. Os agendadores desta classe estão disponíveis aqui.

PushToHubMixin

classe diffusers.utils.PushToHubMixin

< >

( )

Um Mixin para enviar um modelo, agendador ou pipeline para o Hugging Face Hub.

push_to_hub

< >

( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )

Parâmetros

  • repo_id (str) — O nome do repositório para o qual você deseja enviar os arquivos do seu modelo, agendador ou pipeline. Deve conter o nome da sua organização ao enviar para uma organização. repo_id também pode ser um caminho para um diretório local.
  • commit_message (str, opcional) — Mensagem a ser commitada durante o push. Padrão: "Upload {object}".
  • private (bool, opcional) — Se deve tornar o repositório privado. Se None (padrão), o repositório será público, a menos que o padrão da organização seja privado. Este valor é ignorado se o repositório já existir.
  • token (str, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. O token gerado ao executar hf auth login (armazenado em ~/.huggingface).
  • create_pr (bool, opcional, padrão False) — Se deve ou não criar um PR com os arquivos enviados ou fazer o commit diretamente.
  • safe_serialization (bool, opcional, padrão True) — Se os pesos do modelo devem ser convertidos para o formato safetensors.
  • variant (str, opcional) — Se especificado, os pesos são salvos no formato pytorch_model.<variant>.bin.

Envie arquivos de modelo, agendador ou pipeline para o 🤗 Hugging Face Hub.

Exemplos:

from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")

# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")

# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")
Update on GitHub