Diffusers documentation
Pipelines
Pipelines
Pipelines oferecem uma maneira simples de executar modelos de difusão de ponta em inferência, agrupando todos os componentes necessários (múltiplos modelos treinados independentemente, agendadores e processadores) em uma única classe de ponta a ponta. Pipelines são flexíveis e podem ser adaptados para usar diferentes agendadores ou até mesmo componentes de modelo.
Todos os pipelines são construídos a partir da classe base DiffusionPipeline, que fornece a funcionalidade básica para carregar, baixar e salvar todos os componentes. Os tipos específicos de pipeline (por exemplo, StableDiffusionPipeline) carregados com from_pretrained() são detectados automaticamente e os componentes do pipeline são carregados e passados para a função __init__ do pipeline.
Você não deve usar a classe DiffusionPipeline para treinamento. Os componentes individuais (por exemplo, UNet2DModel e UNet2DConditionModel) dos pipelines de difusão geralmente são treinados individualmente, então sugerimos trabalhar diretamente com eles.
Os Pipelines não oferecem nenhuma funcionalidade de treinamento. Você notará que o autograd do PyTorch é desativado decorando o método
__call__()com o decoradortorch.no_grad, pois os pipelines não devem ser usados para treinamento. Se você estiver interessado em treinamento, consulte os guias de Training!
Use API > Pipelines na barra lateral para navegar por todas as referências de pipelines por modalidade. Para fluxos de trabalho orientados a tarefas, comece pelo Quickstart ou por um guia como text-to-image, image-to-image, inpainting ou video generation.
DiffusionPipeline
Classe base para todos os pipelines.
DiffusionPipeline armazena todos os componentes (modelos, agendadores e processadores) para pipelines de difusão e fornece métodos para carregar, baixar e salvar modelos. Ele também inclui métodos para:
- move todos os módulos do PyTorch para o dispositivo de sua escolha
- ativar/desativar a barra de progresso para a iteração de desruidamento
Atributos de classe:
- config_name (
str) — O nome do arquivo de configuração que armazena os nomes de classe e módulo de todos os componentes do pipeline de difusão. - _optional_components (
List[str]) — Lista de todos os componentes opcionais que não precisam ser passados para o pipeline para que ele funcione (deve ser sobrescrito pelas subclasses).
dispositivo
< source >( ) → torch.device
Retorna
torch.device
O dispositivo torch no qual o pipeline está localizado. Quando os componentes são divididos entre dispositivos (por exemplo, codificadores de texto na CPU enquanto o backbone de desruidização é executado em um acelerador), o dispositivo do acelerador é retornado.
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
A propriedade self.components pode ser útil para executar diferentes pipelines com os mesmos pesos e configurações sem alocar memória adicional.
Retorna (dict):
Um dicionário contendo todos os módulos necessários para inicializar o pipeline.
Exemplos:
>>> from diffusers import (
... StableDiffusionPipeline,
... StableDiffusionImg2ImgPipeline,
... StableDiffusionInpaintPipeline,
... )
>>> text2img = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> img2img = StableDiffusionImg2ImgPipeline(**text2img.components)
>>> inpaint = StableDiffusionInpaintPipeline(**text2img.components)Desativa o cálculo de atenção fatiado. Se enable_attention_slicing foi chamado anteriormente, a atenção é
calculada em uma única etapa.
Desative a atenção eficiente em memória do xFormers.
download
< source >( pretrained_model_name**kwargs ) → os.PathLike
Parâmetros
- pretrained_model_name (
strouos.PathLike, opcional) — Uma string, o id do repositório (por exemplo,CompVis/ldm-text2im-large-256) de um pipeline pré-treinado hospedado no Hub. - custom_pipeline (
str, opcional) — Pode ser:-
Uma string, o id do repositório (por exemplo,
CompVis/ldm-text2im-large-256) de um pipeline pré-treinado hospedado no Hub. O repositório deve conter um arquivo chamadopipeline.pyque define o pipeline personalizado. -
Uma string, o nome do arquivo de um pipeline da comunidade hospedado no GitHub sob Community. Os nomes de arquivo válidos devem corresponder ao nome do arquivo e não ao script do pipeline (
clip_guided_stable_diffusionem vez declip_guided_stable_diffusion.py). Os pipelines da comunidade são sempre carregados da branchmainatual do GitHub. -
Um caminho para um diretório (
./my_pipeline_directory/) contendo um pipeline personalizado. O diretório deve conter um arquivo chamadopipeline.pyque define o pipeline personalizado.
> 🧪 Este é um recurso experimental e pode mudar no futuro.
Para mais informações sobre como carregar e criar pipelines personalizados, consulte Como contribuir com um pipeline da comunidade.
-
- force_download (
bool, opcional, padrãoFalse) — 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ãoFalse) — 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ãoFalse) — Se deve carregar apenas os pesos e arquivos de configuração do modelo localmente. Se definido comoTrue, o modelo não será baixado do Hub. - token (
strou bool, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. SeTrue, o token gerado pordiffusers-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. - custom_revision (
str, opcional, padrão"main") — A versão específica do modelo a ser usada. Pode ser um nome de branch, um nome de tag ou um id de commit, semelhante arevisionao carregar um pipeline personalizado do Hub. Pode ser uma versão do 🤗 Diffusers ao carregar um pipeline personalizado do GitHub; caso contrário, o padrão é"main"ao carregar do Hub. - mirror (
str, opcional) — Espelho de origem para resolver problemas de acessibilidade se você estiver baixando um modelo na China. Não garantimos a atualidade ou a segurança da origem, e você deve consultar o site do espelho para obter mais informações. - variant (
str, opcional) — Carrega os pesos de um nome de arquivo de variante especificado, como"fp16"ou"ema". - use_safetensors (
bool, opcional, padrãoNone) — Se definido comoNone, os pesos em safetensors são baixados se estiverem disponíveis e se a biblioteca safetensors estiver instalada. Se definido comoTrue, o modelo é carregado forçadamente a partir dos pesos em safetensors. Se definido comoFalse, os pesos em safetensors não são carregados. - use_onnx (
bool, opcional, padrãoFalse) — Se definido comoTrue, os pesos ONNX sempre serão baixados, se presentes. Se definido comoFalse, os pesos ONNX nunca serão baixados. Por padrão,use_onnxassume o valor do atributo de classe_is_onnx, que éFalsepara pipelines não-ONNX eTruepara pipelines ONNX. Os pesos ONNX incluem tanto arquivos que terminam em.onnxquanto.pb. - trust_remote_code (
bool, opcional, padrãoFalse) — Se permite ou não pipelines e componentes personalizados definidos no Hub em seus próprios arquivos. Essa opção deve ser definida comoTrueapenas para repositórios nos quais você confia e cujo código você leu, pois ela executará o código presente no Hub na sua máquina local. - use_flashpack (
bool, opcional, padrãoFalse) — Se definido comoTrue, os pesos do FlashPack sempre serão baixados, caso estejam presentes. Se definido comoFalse, os pesos do FlashPack nunca serão baixados.
Retorna
os.PathLike
Um caminho para o pipeline baixado.
Baixe e faça o cache de um pipeline de difusão do PyTorch a partir de pesos de pipeline pré-treinados.
> Para usar modelos privados ou com acesso restrito, faça login com `hf > auth login
enable_attention_slicing
< source >( slice_size: str | int = 'auto' )
Parâmetros
- slice_size (
strouint, opcional, padrão"auto") — Quando"auto", divide a entrada dos cabeçalhos de atenção ao meio, de modo que a atenção será calculada em duas etapas. Se"max", a quantidade máxima de memória será economizada executando apenas uma fatia por vez. Se um número for fornecido, usa tantas fatias quantoattention_head_dim // slice_size. Nesse caso,attention_head_dimdeve ser um múltiplo deslice_size.
Ativa o cálculo de atenção fatiado. Quando esta opção está ativada, o módulo de atenção divide o tensor de entrada em fatias para calcular a atenção em várias etapas. Para mais de uma cabeça de atenção, o cálculo é realizado sequencialmente em cada cabeça. Isso é útil para economizar memória em troca de uma pequena diminuição na velocidade.
> ⚠️ Não ative o fatiamento de atenção se você já estiver usando
scaled_dot_product_attention(SDPA) do PyTorch > 2.0 ou xFormers. Esses cálculos de atenção já são muito eficientes em termos de memória, então você não precisa ativar > essa função. Se você ativar o fatiamento de atenção com SDPA ou xFormers, isso pode levar a desempenhos significativamente mais lentos!
Exemplos:
>>> import torch
>>> from diffusers import StableDiffusionPipeline
>>> pipe = StableDiffusionPipeline.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... dtype=torch.float16,
... use_safetensors=True,
... )
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]enable_group_offload
< source >( onload_device: deviceoffload_device: device = torch.device()offload_type: str = 'block_level'num_blocks_per_group: int | None = Nonenon_blocking: bool = Falseuse_stream: bool = Falserecord_stream: bool = Falselow_cpu_mem_usage = Falseoffload_to_disk_path: str | None = Noneexclude_modules: str | list[str] | None = None )
Parâmetros
- onload_device (
torch.device) — O dispositivo para o qual o grupo de módulos é carregado. - offload_device (
torch.device, padrãotorch.device("cpu")) — O dispositivo para o qual o grupo de módulos é descarregado. Isso deve ser tipicamente a CPU. O padrão é a CPU. - offload_type (
strouGroupOffloadingType, padrão “block_level”) — O tipo de offloading a ser aplicado. Pode ser “block_level” ou “leaf_level”. O padrão é “block_level”. - offload_to_disk_path (
str, opcional, padrãoNone) — O caminho do diretório para onde os parâmetros serão descarregados. Definir esta opção pode ser útil em ambientes com RAM limitada, onde se deseja um equilíbrio razoável entre velocidade e memória. - num_blocks_per_group (
int, opcional) — O número de blocos por grupo ao usar offload_type=“block_level”. Isso é obrigatório ao usar offload_type=“block_level”. - non_blocking (
bool, padrãoFalse) — Se True, o offloading e o onloading são realizados com transferência de dados não bloqueante. - use_stream (
bool, padrãoFalse) — Se True, o offloading e o onloading são feitos de forma assíncrona usando um stream CUDA. Isso pode ser útil para sobrepor o cálculo e a transferência de dados. - record_stream (
bool, padrãoFalse) — Quando habilitado comuse_stream, marca o tensor atual como tendo sido usado por este stream. É mais rápido, à custa de um uso ligeiramente maior de memória. Consulte os documentos oficiais do PyTorch para mais detalhes. - low_cpu_mem_usage (
bool, padrãoFalse) — Se True, o uso de memória da CPU é minimizado ao fixar os tensors em tempo de execução, em vez de fixá-los previamente. Esta opção só é relevante ao usar offloading de CPU em streaming (ou seja,use_stream=True). Isso pode ser útil quando a memória da CPU é um gargalo, mas pode anular os benefícios do uso de streams. - exclude_modules (
Union[str, List[str]], padrãoNone) — Lista de módulos a serem excluídos do offloading.
Aplica o group offloading às camadas internas de um torch.nn.Module. Para entender o que é o group offloading e onde ele é vantajoso, precisamos primeiro fornecer algum contexto sobre como funcionam os outros métodos de offloading suportados.
Normalmente, o offloading é feito em dois níveis:
- Nível de módulo: No Diffusers, isso pode ser habilitado usando o método
ModelMixin::enable_model_cpu_offload(). Ele funciona transferindo cada componente de um pipeline para a CPU para armazenamento e carregando-o no dispositivo de acelerador quando necessário para o cálculo. Este método é mais eficiente em termos de memória do que manter todos os componentes no acelerador, mas os requisitos de memória ainda são bastante altos. Para que este método funcione, é necessário ter memória equivalente ao tamanho do modelo no dtype de tempo de execução + ao tamanho dos maiores tensores de ativação intermediários para poder completar a passagem para frente. - Nível de folha: No Diffusers, isso pode ser ativado usando o método
ModelMixin::enable_sequential_cpu_offload(). Ele funciona transferindo os parâmetros de nível de folha mais baixos do grafo de computação para a CPU para armazenamento e carregando apenas as folhas no dispositivo de acelerador para a computação. Isso usa a menor quantidade de memória do acelerador, mas pode ser mais lento devido ao número excessivo de sincronizações de dispositivo.
O offloading por grupos é um meio-termo entre os dois métodos. Ele funciona transferindo grupos de camadas internas
(seja torch.nn.ModuleList ou torch.nn.Sequential). Este método usa menos memória que o offloading em nível de módulo.
Ele também é mais rápido que o offloading em nível de folha/sequencial, pois o número de sincronizações de dispositivo
é reduzido.
Outro recurso suportado (para dispositivos CUDA com suporte a streams de transferência de dados assíncrona) é a capacidade de sobrepor a transferência de dados e o cálculo para reduzir o tempo de execução total em comparação com o offloading sequencial. Isso é habilitado usando prefetching de camadas com streams, ou seja, a camada que será executada a seguir começa a onloading para o dispositivo de acelerador enquanto a camada atual está sendo executada - isso aumenta ligeiramente os requisitos de memória. Observe que esta implementação também suporta offloading em nível de folha, mas pode ser muito mais rápida ao usar streams.
Exemplo:
>>> from diffusers import DiffusionPipeline
>>> import torch
>>> pipe = DiffusionPipeline.from_pretrained("Qwen/Qwen-Image", dtype=torch.bfloat16)
>>> pipe.enable_group_offload(
... onload_device=torch.device("cuda"),
... offload_device=torch.device("cpu"),
... offload_type="leaf_level",
... use_stream=True,
... )
>>> image = pipe("a beautiful sunset").images[0]enable_model_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Parâmetros
- gpu_id (
int, opcional) — O ID do acelerador que deve ser usado na inferência. Se não for especificado, o valor padrão será 0. - device (
torch.Deviceoustr, opcional, padrão None) — O tipo de dispositivo PyTorch do acelerador que será usado na inferência. Se não for especificado, ele detectará automaticamente o acelerador disponível e o usará.
Desloca todos os modelos para a CPU usando accelerate, reduzindo o uso de memória com baixo impacto no desempenho. Em comparação com enable_sequential_cpu_offload, este método move um modelo inteiro de cada vez para o acelerador quando seu método forward é chamado, e o modelo permanece no acelerador até que o próximo modelo seja executado. As economias de memória são menores do que com enable_sequential_cpu_offload, mas o desempenho é muito melhor devido à execução iterativa do unet.
enable_sequential_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Parâmetros
- gpu_id (
int, opcional) — O ID do acelerador que deve ser usado na inferência. Se não for especificado, o valor padrão será 0. - device (
torch.Deviceoustr, opcional, padrão None) — O tipo de dispositivo PyTorch do acelerador que será usado na inferência. Se não for especificado, ele detectará automaticamente o acelerador disponível e o usará.
Desloca todos os modelos para a CPU usando 🤗 Accelerate, reduzindo significativamente o uso de memória. Quando chamado, os state dicts de todos os componentes torch.nn.Module (exceto aqueles em self._exclude_from_cpu_offload) são salvos na CPU e, em seguida, movidos para torch.device('meta') e carregados no acelerador apenas quando o método forward do submódulo específico é chamado. O offloading ocorre com base em submódulos. As economias de memória são maiores do que com enable_model_cpu_offload, mas o desempenho é menor.
enable_xformers_memory_efficient_attention
< source >( attention_op: typing.Optional[typing.Callable] = None )
Parâmetros
- attention_op (
Callable, opcional) — Substitui o operador padrãoNonepara uso como argumentoopda funçãomemory_efficient_attention()do xFormers.
Ative a atenção eficiente em memória do xFormers. Quando essa opção estiver ativada, você deve observar um menor uso de memória de GPU e uma possível aceleração durante a inferência. A aceleração durante o treinamento não é garantida.
> ⚠️ Quando a memória eficiente de atenção e a atenção fatiada estão ambas habilitadas, a memória eficiente de atenção tem > precedência.
Exemplos:
>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp
>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)from_pipe
< source >( pipeline**kwargs ) → DiffusionPipeline
Cria um novo pipeline a partir de um pipeline dado. Este método é útil para criar um novo pipeline a partir dos componentes existentes do pipeline sem alocar memória adicional.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike**kwargs )
Parâmetros
- pretrained_model_name_or_path (
strouos.PathLike, opcional) — Pode ser:- Uma string, o repo id (por exemplo,
CompVis/ldm-text2im-large-256) de um pipeline pré-treinado hospedado no Hub. - Um caminho para um diretório (por exemplo,
./my_pipeline_directory/) contendo pesos de pipeline salvos usando save_pretrained().
- Uma string, o repo id (por exemplo,
- dtype (
torch.dtypeoudict[str, Union[str, torch.dtype]], opcional) — Substitui otorch.dtypepadrão e carrega o modelo com outro dtype. Para carregar submodelos com diferentes dtypes, passe umdict(por exemplo,{'transformer': torch.bfloat16, 'vae': torch.float16}). Defina o dtype padrão para componentes não especificados comdefault(por exemplo,{'transformer': torch.bfloat16, 'default': torch.float16}). Se um componente não for especificado e nenhum padrão for definido,torch.float32será usado. - custom_pipeline (
str, opcional) —> 🧪 Este é um recurso experimental e pode mudar no futuro.
Pode ser:
- Uma string, o repo id (por exemplo
hf-internal-testing/diffusers-dummy-pipeline) de um pipeline personalizado hospedado no Hub. O repositório deve conter um arquivo chamado pipeline.py que define o pipeline personalizado. - Uma string, o nome do arquivo de um pipeline da comunidade hospedado no GitHub sob
Community. Os nomes de
arquivo válidos devem corresponder ao nome do arquivo e não ao script do pipeline (
clip_guided_stable_diffusionem vez declip_guided_stable_diffusion.py). Os pipelines da comunidade são sempre carregados da branch main atual do GitHub. - Um caminho para um diretório (
./my_pipeline_directory/) contendo um pipeline personalizado. O diretório deve conter um arquivo chamadopipeline.pyque define o pipeline personalizado.
Para mais informações sobre como carregar e criar pipelines personalizados, consulte Carregamento e Adição de Pipelines Personalizados
- Uma string, o repo id (por exemplo
- force_download (
bool, opcional, padrãoFalse) — 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. - cache_dir (
Union[str, 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. - 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ãoFalse) — 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ãoFalse) — Se deve carregar apenas os pesos e arquivos de configuração do modelo localmente. Se definido comoTrue, o modelo não será baixado do Hub. - token (
strou bool, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. SeTrue, o token gerado pordiffusers-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. - custom_revision (
str, opcional) — A versão específica do modelo a ser usada. Pode ser um nome de branch, um nome de tag ou um id de commit, semelhante arevisionao carregar um pipeline personalizado do Hub. O padrão é a versão estável mais recente do 🤗 Diffusers. - mirror (
str, opcional) — Espelho de origem para resolver problemas de acessibilidade se você estiver baixando um modelo na China. Não garantimos a atualidade ou a segurança da origem, e você deve consultar o site do espelho para obter mais informações. - device_map (
str, opcional) — Estratégia que determina como os diferentes componentes de um pipeline devem ser alocados nos dispositivos disponíveis. Atualmente, apenas odevice_map“balanced” é suportado. Consulte este para saber mais. - max_memory (
Dict, opcional) — Um dicionário com o identificador do dispositivo para a memória máxima. Se não for definido, o padrão será a memória máxima disponível para cada GPU e a RAM disponível na CPU. - offload_folder (
strouos.PathLike, opcional) — O caminho para descarregar os pesos se device_map contiver o valor"disk". - offload_state_dict (
bool, opcional) — SeTrue, descarrega temporariamente o state dict da CPU para o disco rígido para evitar a falta de RAM da CPU caso o peso do state dict da CPU + o maior shard do checkpoint não caiba. O padrão éTruequando há algum offload de disco. - low_cpu_mem_usage (
bool, opcional, padrãoTruese a versão do torch >= 1.9.0, caso contrárioFalse) — Acelera o carregamento do modelo carregando apenas os pesos pré-treinados e não inicializando os pesos. Isso também tenta não usar mais do que 1x o tamanho do modelo na memória de CPU (incluindo a memória de pico) durante o carregamento do modelo. Suportado apenas para PyTorch >= 1.9.0. Se você estiver usando uma versão mais antiga do PyTorch, definir este argumento comoTruecausará um erro. - use_safetensors (
bool, opcional, padrãoNone) — Se definido comoNone, os pesos em safetensors são baixados se estiverem disponíveis e se a biblioteca safetensors estiver instalada. Se definido comoTrue, o modelo é carregado forçadamente a partir dos pesos em safetensors. Se definido comoFalse, os pesos em safetensors não são carregados. - use_onnx (
bool, opcional, padrãoNone) — Se definido comoTrue, os pesos ONNX sempre serão baixados, se presentes. Se definido comoFalse, os pesos ONNX nunca serão baixados. Por padrão,use_onnxassume o valor do atributo de classe_is_onnx, que éFalsepara pipelines não-ONNX eTruepara pipelines ONNX. Os pesos ONNX incluem tanto arquivos que terminam em.onnxquanto.pb. - kwargs (dicionário restante de argumentos de palavra-chave, opcional) —
Pode ser usado para sobrescrever variáveis de carregamento e salvamento (os componentes do pipeline da classe de pipeline específica). Os componentes sobrescritos são passados diretamente para o método
__init__dos pipelines. Veja o exemplo abaixo para mais informações. - variant (
str, opcional) — Carrega os pesos de um nome de arquivo de variante especificado, como"fp16"ou"ema". - disable_mmap (‘bool’, opcional, padrão ‘False’) — Se deve desabilitar o mmap ao carregar um modelo Safetensors. Essa opção pode ter um desempenho melhor quando o modelo está em uma montagem de rede ou em um disco rígido, que podem não lidar bem com a natureza de buscas aleatórias (seek) do mmap.
Instanciar um pipeline de difusão do PyTorch a partir de pesos de pipeline pré-treinados.
O pipeline é definido no modo de avaliação (model.eval()) por padrão.
Se você receber a mensagem de erro abaixo, é necessário ajustar os pesos para sua tarefa de destino:
Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.> Para usar modelos privados ou com acesso restrito, faça login com
hf > auth login.
Exemplos:
>>> from diffusers import DiffusionPipeline
>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")
>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler
>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = schedulerMétodo que executa o seguinte:
- Desloca todos os componentes.
- Remove todos os hooks do modelo que foram adicionados ao usar
enable_model_cpu_offloade, em seguida, os aplica novamente. Caso o modelo não tenha sido offloaded, esta função é um no-op. - Redefine os hooks com estado dos componentes de denoiser do diffusers, caso tenham sido adicionados com
register_hook().
Certifique-se de adicionar esta função ao final da função __call__ do seu pipeline para que ela funcione corretamente ao aplicar enable_model_cpu_offload.
Converte uma imagem NumPy ou um lote de imagens em uma imagem PIL.
Remove todos os hooks que foram adicionados ao usar enable_sequential_cpu_offload ou enable_model_cpu_offload.
Redefine os mapas de dispositivos (se houver) para None.
save_pretrained
< source >( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = Falseuse_flashpack: bool = False**kwargs )
Parâmetros
- save_directory (
strouos.PathLike) — Diretório para salvar um 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 inferior a 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. Observe que esse limite será reduzido após um certo período de tempo (a partir de outubro de 2024) para permitir que os usuários façam upgrade para a versão mais recente dodiffusers. Isso visa estabelecer um tamanho padrão comum para este argumento entre as diferentes bibliotecas do ecossistema Hugging Face (transformerseaccelerate, por exemplo). - push_to_hub (
bool, opcional, padrãoFalse) — Se deve ou não enviar seu modelo para o hub de modelos do Hugging Face após salvá-lo. Você pode especificar o repositório para o qual deseja enviar comrepo_id(o padrão será o nome desave_directoryno seu namespace). - kwargs (
Dict[str, Any], opcional) — Argumentos de palavra-chave adicionais passados ao método push_to_hub().
Salva todas as variáveis salveis do pipeline em um diretório. Uma variável do pipeline pode ser salva e carregada se sua classe implementar tanto um método de salvamento quanto um método de carregamento. O pipeline é facilmente recarregado usando o método de classe from_pretrained().
diffusers.StableDiffusionMixin.enable_freeu
< source >( s1: floats2: floatb1: floatb2: float )
Parâmetros
- s1 (
float) — Fator de escala para a etapa 1 para atenuar as contribuições dos recursos de skip. Isso é feito para mitigar o “efeito de suavização excessiva” no processo aprimorado de remoção de ruído. - s2 (
float) — Fator de escala para o estágio 2 para atenuar as contribuições dos recursos de skip. Isso é feito para mitigar o “efeito de suavização excessiva” no processo aprimorado de remoção de ruído. - b1 (
float) — Fator de escala para o estágio 1 para amplificar as contribuições dos recursos do backbone. - b2 (
float) — Fator de escala para o estágio 2 para amplificar as contribuições dos recursos do backbone.
Ativa o mecanismo FreeU, conforme descrito em https://huggingface.co/papers/2309.11497.
Os sufixos após os fatores de escala representam as etapas em que eles estão sendo aplicados.
Consulte o repositório oficial para as combinações de valores que são conhecidas por funcionar bem em diferentes pipelines, como Stable Diffusion v1, v2 e Stable Diffusion XL.
Desativa o mecanismo FreeU, se estiver ativado.
PushToHubMixin
Um Mixin para enviar um modelo, agendador ou pipeline para o Hugging Face Hub.
push_to_hub
< source >( 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_idtambé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. SeNone(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 executarhf auth login(armazenado em~/.huggingface). - create_pr (
bool, opcional, padrãoFalse) — Se deve ou não criar um PR com os arquivos enviados ou fazer o commit diretamente. - safe_serialization (
bool, opcional, padrãoTrue) — Se os pesos do modelo devem ser convertidos para o formatosafetensors. - variant (
str, opcional) — Se especificado, os pesos são salvos no formatopytorch_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")Callbacks
classe diffusers.callbacks.PipelineCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Classe base para todos os callbacks oficiais usados em um pipeline. Esta classe fornece uma estrutura para implementar callbacks personalizados e garante que todos os callbacks tenham uma interface consistente.
Implemente o seguinte: tensor_inputs: isso deve retornar uma lista de entradas de tensor específicas para o seu callback. Você só poderá incluir variáveis listadas no atributo ._callback_tensor_inputs da sua classe de pipeline. callback_fn: este método define a funcionalidade central do seu callback.
classe diffusers.callbacks.SDCFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Função de callback para Pipelines de Stable Diffusion. Após um determinado número de etapas (definido por cutoff_step_ratio ou cutoff_step_index), este callback desativará o CFG.
Nota: Este callback altera o pipeline, mudando o atributo _guidance_scale para 0.0 após o passo de corte.
classe diffusers.callbacks.SDXLCFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Função de callback para os Pipelines base do Stable Diffusion XL. Após um determinado número de etapas (definido por cutoff_step_ratio ou cutoff_step_index), este callback desativará o CFG.
Nota: Este callback altera o pipeline, mudando o atributo _guidance_scale para 0.0 após o passo de corte.
classe diffusers.callbacks.SDXLControlnetCFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Função de callback para os Pipelines do Controlnet Stable Diffusion XL. Após um determinado número de etapas (definido por cutoff_step_ratio ou cutoff_step_index), este callback desativará o CFG.
Nota: Este callback altera o pipeline, mudando o atributo _guidance_scale para 0.0 após o passo de corte.
classe diffusers.callbacks.IPAdapterScaleCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Função de callback para qualquer pipeline que herda de IPAdapterMixin. Após um determinado número de etapas (definido por cutoff_step_ratio ou cutoff_step_index), este callback definirá a escala do IP Adapter como 0.0.
Nota: Este callback altera os processadores de atenção do IP Adapter definindo a escala como 0.0 após o passo de corte.
classe diffusers.callbacks.SD3CFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Função de callback para os pipelines do Stable Diffusion 3. Após um determinado número de etapas (definido por cutoff_step_ratio ou cutoff_step_index), este callback desativará o CFG.
Nota: Este callback altera o pipeline, mudando o atributo _guidance_scale para 0.0 após o passo de corte.