Diffusers documentation
Bria 3.2
Bria 3.2
Bria 3.2 é o modelo de texto para imagem comercialmente pronto de próxima geração. Com apenas 4 bilhões de parâmetros, ele oferece estética e renderização de texto excepcionais, sendo avaliado para fornecer resultados equivalentes aos de modelos open-source líderes e superando outros modelos licenciados. Além de ser construído inteiramente com dados licenciados, o 3.2 oferece várias vantagens para uso empresarial e comercial:
- Cálculo eficiente - o modelo é 3X menor que os modelos equivalentes no mercado (4B parâmetros vs 12B parâmetros em outros modelos de código aberto)
- Consistência de Arquitetura: Mesma arquitetura que a 3.1 — ideal para usuários que desejam fazer o upgrade sem interrupções.
- Aceleração do fine-tuning: fine-tuning 2x mais rápido em L40S e A100.
Os checkpoints originais do modelo Bria 3.2 podem ser encontrados aqui. O repositório no Github do Bria 3.2 pode ser encontrado aqui.
Se você deseja saber mais sobre a plataforma Bria e obter acesso gratuito ao traril, visite bria.ai.
Uso
Como o modelo é restrito, antes de usá-lo com diffusers, você precisa primeiro acessar a página do Bria 3.2 no Hugging Face, preencher o formulário e aceitar a restrição. Depois de ter acesso, é necessário fazer login para que o seu sistema saiba que você aceitou a restrição.
Use o comando abaixo para fazer login:
hf auth login
BriaPipeline
classe diffusers.BriaPipeline
< source >( transformer: BriaTransformer2DModelscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | diffusers.schedulers.scheduling_utils.KarrasDiffusionSchedulersvae: AutoencoderKLtext_encoder: T5EncoderModeltokenizer: T5Tokenizerimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )
Parâmetros
- transformer (BriaTransformer2DModel) — Arquitetura Conditional Transformer (MMDiT) para desruidar os latentes da imagem codificada.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Um scheduler a ser usado em combinação com
transformerpara desruidar os latentes da imagem codificada. - vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar e decodificar imagens para e a partir de representações latentes.
- text_encoder (
T5EncoderModel) — Codificador de texto congelado. A Bria usa T5, especificamente a variante t5-v1_1-xxl. - tokenizer (
T5TokenizerFast) — Tokenizer da classe T5Tokenizer.
Baseado no FluxPipeline com várias alterações:
- nos embeddings agregados
- Usamos zero padding para prompts
- Sem embedding de orientação, pois esta não é uma versão destilada
__call__
< source >( prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 30timesteps: list[int] = Noneguidance_scale: float = 5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']max_sequence_length: int = 128clip_value: None | float = Nonenormalize: bool = False ) → ~pipelines.bria.BriaPipelineOutput or tuple
Parâmetros
- prompt (
stroulist[str], opcional) — O prompt ou os prompts para orientar a geração da imagem. Se não for definido, é necessário passarprompt_embedsem vez disso. - height (
int, opcional, padrão é self.unet.config.sample_size * self.vae_scale_factor) — A altura em pixels da imagem gerada. Isso é definido como 1024 por padrão para os melhores resultados. - width (
int, opcional, padrão é self.unet.config.sample_size * self.vae_scale_factor) — A largura em pixels da imagem gerada. O padrão é 1024 para os melhores resultados. - num_inference_steps (
int, opcional, padrão 50) — O número de etapas de desruidamento. Mais etapas de desruidamento geralmente resultam em uma imagem de maior qualidade, à custa de uma inferência mais lenta. - timesteps (
list[int], opcional) — Timesteps personalizados para usar no processo de remoção de ruído com agendadores que suportam um argumentotimestepsem seu métodoset_timesteps. Se não definido, o comportamento padrão quandonum_inference_stepsé passado será usado. Deve estar em ordem decrescente. - guidance_scale (
float, opcional, padrão 5.0) —
Retorna
~pipelines.bria.BriaPipelineOutput ou tuple
~pipelines.bria.BriaPipelineOutput se
return_dict for True, caso contrário, uma tuple. Ao retornar uma tupla, o primeiro elemento é uma lista
com as imagens geradas.
Função invocada ao chamar o pipeline para geração.
<<<<<<< HEAD
Escala de orientação definida em Classifier-Free Diffusion
Guidance. guidance_scale é definido como w da equação 2.
de Imagen Paper. A escala de orientação é ativada ao definir guidance_scale > 1. Uma escala de orientação maior incentiva a geração de imagens que estão
estreitamente ligadas ao prompt de texto, geralmente em detrimento de uma menor qualidade de imagem.
negative_prompt ( str ou list[str] , opcional ):
Escala de orientação definida em Classifier-Free Diffusion
Guidance. guidance_scale é definido como w da
equação 2. de Imagen Paper. A escala de orientação é
ativada ao definir guidance_scale > 1. Uma escala de orientação mais alta incentiva a geração de imagens
que estão intimamente ligadas ao prompt de texto, geralmente às custas de uma menor qualidade da imagem.
negative_prompt (str ou list[str], opcional):
main O prompt ou os prompts que não devem orientar a geração da imagem. Se não definido, é necessário passar
negative_prompt_embedsem vez disso. Ignorado quando não se usa orientação (ou seja, ignorado seguidance_scalefor menor que1). num_images_per_prompt (int, opcional, padrão 1): O número de imagens a serem geradas por prompt. generator (torch.Generatoroulist[torch.Generator], opcional): Um ou uma lista de geradores torch para tornar a geração determinística. latents (torch.FloatTensor, opcional): Latentes ruidosos pré-gerados, amostrados de uma distribuição gaussiana, a serem usados como entradas para a geração de imagem. Pode ser usado para ajustar a mesma geração com prompts diferentes. Se não fornecido, um tensor de latentes será gerado por amostragem usando ogeneratoraleatório fornecido. prompt_embeds (torch.FloatTensor, opcional): Embeddings de texto pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo ponderação de prompt. Se não fornecido, os embeddings de texto serão gerados a partir do argumento de entradaprompt. negative_prompt_embeds (torch.FloatTensor, opcional): Embeddings de texto negativos pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo ponderação de prompt. Se não fornecido, negative_prompt_embeds será gerado a partir do argumento de entradanegative_prompt. output_type (str, opcional, padrão"pil"): O formato de saída da imagem gerada. Escolha entre PIL:PIL.Image.Imageounp.array. return_dict (bool, opcional, padrãoTrue): Se deve ou não retornar um~pipelines.bria.BriaPipelineOutputem vez de uma tupla simples. attention_kwargs (dict, opcional): Um dicionário de kwargs que, se especificado, é passado aoAttentionProcessorconforme definido emself.processorem diffusers.models.attention_processor. callback_on_step_end (Callable, opcional): Uma função que é chamada no final de cada etapa de remoção de ruído durante a inferência. A função é chamada com os seguintes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá uma lista de todos os tensors especificados porcallback_on_step_end_tensor_inputs. callback_on_step_end_tensor_inputs (list, opcional): A lista de entradas de tensor para a funçãocallback_on_step_end. Os tensors especificados na lista serão passados como argumentocallback_kwargs. Você só poderá incluir variáveis listadas no atributo._callback_tensor_inputsda sua classe de pipeline. max_sequence_length (intpadrão 256): Comprimento máximo da sequência a ser usado com oprompt. clip_value (float, opcional): Se definido, o ruído previsto é limitado ao intervalo[-clip_value, clip_value]em cada etapa de remoção de ruído. normalize (bool, opcional, padrãoFalse): Se deve ou não normalizar o ruído previsto em cada etapa de remoção de ruído.
Exemplos:
>>> import torch
>>> from diffusers import BriaPipeline
>>> pipe = BriaPipeline.from_pretrained("briaai/BRIA-3.2", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
# BRIA's T5 text encoder is sensitive to precision. We need to cast it to bfloat16 and keep the final layer in float32.
>>> pipe.text_encoder = pipe.text_encoder.to(dtype=torch.bfloat16)
>>> for block in pipe.text_encoder.encoder.block:
... block.layer[-1].DenseReluDense.wo.to(dtype=torch.float32)
# BRIA's VAE is not supported in mixed precision, so we use float32.
>>> if pipe.vae.config.shift_factor == 0:
... pipe.vae.to(dtype=torch.float32)
>>> prompt = "Photorealistic food photography of a stack of fluffy pancakes on a white plate, with maple syrup being poured over them. On top of the pancakes are the words 'BRIA 3.2' in bold, yellow, 3D letters. The background is dark and out of focus."
>>> image = pipe(prompt).images[0]
>>> image.save("bria.png")encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 128lora_scale: float | None = None )
Parâmetros
- prompt (
stroulist[str], opcional) — prompt a ser codificado - device — (
torch.device): dispositivo torch - num_images_per_prompt (
int) — número de imagens que devem ser geradas por prompt - do_classifier_free_guidance (
bool) — se deve usar classifier free guidance ou não - negative_prompt (
stroulist[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passarnegative_prompt_embedsem vez disso. Ignorado quando não se usa orientação (ou seja, ignorado seguidance_scalefor menor que1). - prompt_embeds (
torch.FloatTensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entradaprompt. - negative_prompt_embeds (
torch.FloatTensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entradanegative_prompt.