Diffusers documentation

Bria 3.2

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

Bria 3.2

Bria 3.2 là mô hình text-to-image thương mại hóa thế hệ tiếp theo. Với chỉ 4 tỷ tham số, nó mang lại thẩm mỹ và khả năng hiển thị văn bản vượt trội, được đánh giá là cho kết quả ngang bằng với các mô hình mã nguồn mở hàng đầu và vượt trội hơn so với các mô hình có giấy phép khác. Ngoài việc được xây dựng hoàn toàn trên dữ liệu có giấy phép, 3.2 còn cung cấp một số lợi thế cho việc sử dụng doanh nghiệp và thương mại:

  • Hiệu suất tính toán - mô hình nhỏ hơn X3 so với các mô hình tương đương trên thị trường (4B tham số so với 12B tham số của các mô hình mã nguồn mở khác)
  • Tính nhất quán về kiến trúc: Cùng kiến trúc với 3.1 — lý tưởng cho người dùng muốn nâng cấp mà không bị gián đoạn.
  • Tăng tốc tinh chỉnh: tinh chỉnh nhanh gấp 2 lần trên L40S và A100.

Các checkpoint mô hình gốc của Bria 3.2 có thể được tìm thấy tại đây. Kho Github của Bria 3.2 có thể được tìm thấy tại đây.

Nếu bạn muốn tìm hiểu thêm về nền tảng Bria và nhận quyền truy cập thử nghiệm miễn phí, vui lòng truy cập bria.ai.

Cách sử dụng

Vì mô hình được kiểm soát truy cập, trước khi sử dụng với diffusers, bạn cần truy cập trang Hugging Face của Bria 3.2, điền biểu mẫu và chấp nhận điều kiện truy cập. Sau khi được cấp quyền, bạn cần đăng nhập để hệ thống xác nhận bạn đã chấp nhận điều kiện truy cập.

Sử dụng lệnh bên dưới để đăng nhập:

hf auth login

BriaPipeline

lớp diffusers.BriaPipeline

< >

( 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 )

Tham số

  • transformer (BriaTransformer2DModel) — Kiến trúc Conditional Transformer (MMDiT) để khử nhiễu các latents ảnh đã mã hóa.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Một scheduler được sử dụng kết hợp với transformer để khử nhiễu các latents ảnh đã được mã hóa.
  • vae (AutoencoderKL) — Mô hình Variational Auto-Encoder (VAE) để mã hóa và giải mã hình ảnh từ và sang các biểu diễn ẩn.
  • text_encoder (T5EncoderModel) — Bộ mã hóa văn bản đóng băng. Bria sử dụng T5, cụ thể là biến thể t5-v1_1-xxl.
  • tokenizer (T5TokenizerFast) — Tokenizer của lớp T5Tokenizer.

Dựa trên FluxPipeline với một số thay đổi:

  • không có embedding được pool
  • Chúng tôi sử dụng zero padding cho prompts
  • Không có guidance embedding vì đây không phải là phiên bản đã được distilled

__call__

< >

( prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 30timesteps: list = 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 = ['latents']max_sequence_length: int = 128clip_value: None | float = Nonenormalize: bool = False ) → ~pipelines.bria.BriaPipelineOutput or tuple

Tham số

  • prompt (str hoặc list[str], tùy chọn) — Prompt hoặc các prompt để định hướng việc tạo ảnh. Nếu không được định nghĩa, bạn phải truyền prompt_embeds thay thế.
  • height (int, tùy chọn, mặc định là self.unet.config.sample_size * self.vae_scale_factor) — Chiều cao của hình ảnh được tạo ra, tính bằng pixel. Mặc định được đặt là 1024 để đạt kết quả tốt nhất.
  • width (int, tùy chọn, mặc định là self.unet.config.sample_size * self.vae_scale_factor) — Chiều rộng của hình ảnh được tạo ra, tính bằng pixel. Giá trị mặc định là 1024 để đạt kết quả tốt nhất.
  • num_inference_steps (int, tùy chọn, mặc định là 50) — Số bước khử nhiễu. Số bước khử nhiễu nhiều hơn thường dẫn đến hình ảnh có chất lượng cao hơn, với cái giá là suy luận chậm hơn.
  • timesteps (list[int], tùy chọn) — Các bước thời gian tùy chỉnh để sử dụng cho quá trình khử nhiễu với các trình lập lịch hỗ trợ đối số timesteps trong phương thức set_timesteps của chúng. Nếu không được định nghĩa, hành vi mặc định khi num_inference_steps được truyền vào sẽ được sử dụng. Phải được sắp xếp theo thứ tự giảm dần.
  • guidance_scale (float, tùy chọn, mặc định là 5.0) —

Trả về

~pipelines.bria.BriaPipelineOutput hoặc tuple

~pipelines.bria.BriaPipelineOutput nếu return_dict là True, ngược lại là một tuple. Khi trả về tuple, phần tử đầu tiên là một danh sách chứa các hình ảnh đã tạo.

Hàm được gọi khi gọi pipeline cho việc sinh.

<<<<<<< HEAD Thang độ dẫn hướng được định nghĩa trong Classifier-Free Diffusion Guidance. guidance_scale được định nghĩa là w của phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được kích hoạt bằng cách đặt guidance_scale > 1. Thang độ dẫn hướng cao hơn khuyến khích tạo ra các hình ảnh gắn kết chặt chẽ với prompt văn bản, thường phải đánh đổi bằng chất lượng hình ảnh thấp hơn.

negative_prompt ( str hoặc list[str] , tùy chọn ):

Thang độ dẫn hướng được định nghĩa trong Classifier-Free Diffusion Guidance. guidance_scale được định nghĩa là w của phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được bật bằng cách đặt guidance_scale > 1. Thang độ dẫn hướng cao hơn khuyến khích tạo ra các hình ảnh gắn kết chặt chẽ với prompt văn bản, thường phải đánh đổi bằng chất lượng hình ảnh thấp hơn. negative_prompt (str hoặc list[str], tùy chọn):

main Prompt hoặc các prompt không được dùng để hướng dẫn tạo ảnh. Nếu không được định nghĩa, bạn phải truyền negative_prompt_embeds thay thế. Tham số này bị bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếu guidance_scale nhỏ hơn 1). num_images_per_prompt (int, tùy chọn, mặc định là 1): Số lượng ảnh cần tạo cho mỗi prompt. generator (torch.Generator hoặc list[torch.Generator], tùy chọn): Một hoặc một danh sách torch generator(s) để đảm bảo quá trình tạo ảnh là tất định. latents (torch.FloatTensor, tùy chọn): Các latents nhiễu được tạo trước, lấy mẫu từ phân phối Gaussian, dùng làm đầu vào cho việc tạo ảnh. Có thể dùng để tinh chỉnh cùng một quá trình tạo ảnh với các prompt khác nhau. Nếu không được cung cấp, một tensor latents sẽ được tạo bằng cách lấy mẫu sử dụng generator ngẫu nhiên được cung cấp. prompt_embeds (torch.FloatTensor, tùy chọn): Các text embeddings được tạo trước. Có thể dùng để dễ dàng tinh chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, text embeddings sẽ được tạo từ tham số đầu vào prompt. negative_prompt_embeds (torch.FloatTensor, tùy chọn): Các negative text embeddings được tạo trước. Có thể dùng để dễ dàng tinh chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds sẽ được tạo từ tham số đầu vào negative_prompt. output_type (str, tùy chọn, mặc định là "pil"): Định dạng đầu ra của ảnh được tạo. Chọn giữa PIL: PIL.Image.Image hoặc np.array. return_dict (bool, tùy chọn, mặc định là True): Có nên trả về một ~pipelines.bria.BriaPipelineOutput thay vì một tuple thông thường hay không. attention_kwargs (dict, tùy chọn): Một từ điển kwargs mà nếu được chỉ định sẽ được truyền đến AttentionProcessor như đã định nghĩa dưới self.processor trong diffusers.models.attention_processor. callback_on_step_end (Callable, tùy chọn): Một hàm được gọi vào cuối mỗi bước khử nhiễu trong quá trình suy luận. Hàm này được gọi với các tham số sau: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs sẽ bao gồm một danh sách tất cả các tensor như được chỉ định bởi callback_on_step_end_tensor_inputs. callback_on_step_end_tensor_inputs (list, tùy chọn): Danh sách các tensor đầu vào cho hàm callback_on_step_end. Các tensor được chỉ định trong danh sách sẽ được truyền như tham số callback_kwargs. Bạn chỉ có thể bao gồm các biến được liệt kê trong thuộc tính ._callback_tensor_inputs của lớp pipeline của bạn. max_sequence_length (int mặc định là 256): Độ dài chuỗi tối đa để sử dụng với prompt. clip_value (float, tùy chọn): Nếu được đặt, nhiễu dự đoán sẽ bị cắt (clip) trong khoảng [-clip_value, clip_value] ở mỗi bước khử nhiễu. normalize (bool, tùy chọn, mặc định là False): Có nên chuẩn hóa nhiễu dự đoán ở mỗi bước khử nhiễu hay không.

Ví dụ:

>>> 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

< >

( 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 )

Tham số

  • prompt (str hoặc list[str], tùy chọn) — prompt cần được mã hóa
  • device — (torch.device): thiết bị torch
  • num_images_per_prompt (int) — số lượng hình ảnh cần được tạo cho mỗi prompt
  • do_classifier_free_guidance (bool) — có sử dụng classifier free guidance hay không
  • negative_prompt (str hoặc list[str], tùy chọn) — Prompt hoặc các prompt không dùng để định hướng việc tạo ảnh. Nếu không được định nghĩa, cần truyền negative_prompt_embeds thay thế. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếu guidance_scale nhỏ hơn 1).
  • prompt_embeds (torch.FloatTensor, tùy chọn) — Các embedding văn bản đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, các embedding văn bản sẽ được tạo từ đối số đầu vào prompt.
  • negative_prompt_embeds (torch.FloatTensor, tùy chọn) — Các embedding văn bản âm đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds sẽ được tạo từ đối số đầu vào negative_prompt.
Update on GitHub