Diffusers documentation
Bria 3.2
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
< 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 )
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__
< source >( 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 (
strhoặclist[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ềnprompt_embedsthay 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ốtimestepstrong phương thứcset_timestepscủa chúng. Nếu không được định nghĩa, hành vi mặc định khinum_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_embedsthay thế. Tham số này bị bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếuguidance_scalenhỏ hơn1). 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.Generatorhoặclist[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ụnggeneratorngẫ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àoprompt. 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àonegative_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.Imagehoặcnp.array. return_dict (bool, tùy chọn, mặc định làTrue): Có nên trả về một~pipelines.bria.BriaPipelineOutputthay 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 đếnAttentionProcessornhư đã định nghĩa dướiself.processortrong 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_kwargssẽ bao gồm một danh sách tất cả các tensor như được chỉ định bởicallback_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àmcallback_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_inputscủa lớp pipeline của bạn. max_sequence_length (intmặc định là 256): Độ dài chuỗi tối đa để sử dụng vớiprompt. 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
< 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 )
Tham số
- prompt (
strhoặclist[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 (
strhoặclist[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ềnnegative_prompt_embedsthay thế. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếuguidance_scalenhỏ hơn1). - 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àoprompt. - 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àonegative_prompt.