Diffusers documentation
Bria 3.2
Bria 3.2
Bria 3.2 — это модель преобразования текста в изображение нового поколения, готовая к коммерческому использованию. Всего 4 миллиарда параметров обеспечивают исключительное качество эстетики и рендеринга текста; по оценкам, результаты сопоставимы с ведущими моделями с открытым исходным кодом, а по сравнению с другими лицензированными моделями Bria 3.2 демонстрирует лучшие показатели. Помимо того, что модель построена исключительно на лицензированных данных, версия 3.2 предлагает несколько преимуществ для корпоративного и коммерческого использования:
- Эффективные вычисления — модель в 3 раза меньше аналогичных моделей на рынке (4 млрд параметров против 12 млрд параметров у других моделей с открытым исходным кодом)
- Согласованность архитектуры: та же архитектура, что и в 3.1 — идеально для пользователей, которые хотят обновиться без сбоев.
- Ускорение дообучения: дообучение на L40S и A100 стало в 2 раза быстрее.
Оригинальные контрольные точки модели Bria 3.2 можно найти здесь. Репозиторий на GitHub для Bria 3.2 можно найти здесь.
Если вы хотите узнать больше о платформе Bria и получить бесплатный доступ, посетите bria.ai.
Использование
Модель доступна по запросу, поэтому перед её использованием с diffusers вам необходимо перейти на страницу Bria 3.2 на Hugging Face, заполнить форму и принять условия доступа. После этого выполните вход в систему, чтобы подтвердить, что вы приняли условия.
Используйте команду ниже для входа:
hf auth login
BriaPipeline
класс 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 )
Параметры
- transformer (BriaTransformer2DModel) — Архитектура Conditional Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
- scheduler (FlowMatchEulerDiscreteScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения. - vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
T5EncoderModel) — Замороженный текстовый энкодер. Bria использует T5, а именно вариант t5-v1_1-xxl. - tokenizer (
T5TokenizerFast) — токенизатор класса T5Tokenizer.
Основан на FluxPipeline с несколькими изменениями:
- нет объединённых эмбеддингов
- Мы используем нулевую отсечку для промптов
- Встроенное представление руководства отсутствует, так как это не дистиллированная версия
__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
Параметры
- prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - height (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - width (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - timesteps (
list[int], необязательный) — Пользовательские шаги для процесса удаления шума в планировщиках, поддерживающих аргументtimestepsв методеset_timesteps. Если не задан, будет использоваться поведение по умолчанию при передачеnum_inference_steps. Значения должны быть в порядке убывания. - guidance_scale (
float, необязательный, по умолчанию 5.0) —
Возвращает
~pipelines.bria.BriaPipelineOutput или tuple
~pipelines.bria.BriaPipelineOutput, если
return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список
с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
<<<<<<< HEAD
Масштаб направленного генерирования, как определено в Classifier-Free Diffusion
Guidance. guidance_scale определяется как w из уравнения 2
статьи Imagen Paper. Масштаб направленного генерирования включается при установке guidance_scale > 1. Более высокое значение масштаба направленного генерирования способствует созданию изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
negative_prompt ( str or list[str] , optional ):
Масштаб управления, как определено в Classifier-Free Diffusion
Guidance. guidance_scale определяется как w из
уравнения 2. в Imagen Paper. Масштаб управления
включается при установке guidance_scale > 1. Более высокий масштаб управления способствует генерации изображений,
тесно связанных с текстовым prompt, обычно за счет снижения качества изображения.
negative_prompt (str или list[str], необязательный):
main Промпт или промпты, которые не следует использовать для управления генерацией изображения. Если не задано, необходимо передать
negative_prompt_embeds. Игнорируется, если управление не используется (то есть игнорируется, еслиguidance_scaleменьше1). num_images_per_prompt (int, необязательный, по умолчанию 1): Количество изображений, генерируемых для каждого промпта. generator (torch.Generatorилиlist[torch.Generator], необязательный): Один или список генераторов torch для обеспечения детерминированности генерации. latents (torch.FloatTensor, необязательный): Предварительно сгенерированные шумовые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображения. Можно использовать для корректировки одной и той же генерации с разными промптами. Если не предоставлено, тензор латентов будет сгенерирован путем выборки с использованием переданного случайногоgenerator. prompt_embeds (torch.FloatTensor, необязательный): Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой корректировки текстовых входных данных, например взвешивания промпта. Если не предоставлено, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. negative_prompt_embeds (torch.FloatTensor, необязательный): Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой корректировки текстовых входных данных, например взвешивания промпта. Если не предоставлено, negative_prompt_embeds будут сгенерированы из входного аргументаnegative_prompt. output_type (str, необязательный, по умолчанию"pil"): Формат вывода сгенерированного изображения. Выберите между PIL:PIL.Image.Imageилиnp.array. return_dict (bool, необязательный, по умолчаниюTrue): Возвращать ли~pipelines.bria.BriaPipelineOutputвместо обычного кортежа. attention_kwargs (dict, необязательный): Словарь kwargs, который, если указан, передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. callback_on_step_end (Callable, необязательный): Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsбудет включать список всех тензоров, указанных вcallback_on_step_end_tensor_inputs. callback_on_step_end_tensor_inputs (list, необязательный): Список тензорных входных данных для функцииcallback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргументаcallback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте._callback_tensor_inputsвашего класса пайплайна. max_sequence_length (intпо умолчанию 256): Максимальная длина последовательности для использования сprompt. clip_value (float, необязательный): Если задано, предсказанный шум обрезается до диапазона[-clip_value, clip_value]на каждом шаге денойзинга. normalize (bool, необязательный, по умолчаниюFalse): Нормализовать ли предсказанный шум на каждом шаге денойзинга.
Примеры:
>>> 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 )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - do_classifier_free_guidance (
bool) — использовать ли classifier free guidance - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется направляющее поле (то есть игнорируется, еслиguidance_scaleменьше1). - prompt_embeds (
torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - negative_prompt_embeds (
torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt.