Diffusers documentation

P-H3-Image

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

P-H3-Image

P-H3-Image, Pruna AI tarafından MiniMax-H3 tabanlı olarak geliştirilmiş, metinden görüntüye üretim ve talimata dayalı görüntü düzenleme için kullanılan bir görüntü modelidir. Kontrol noktasını PrunaAI/P-H3-Image adresinde bulabilirsiniz.

import torch
from diffusers import ComponentsManager, ModularPipeline

manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")  # or "mps", "xpu"

pipe = ModularPipeline.from_pretrained("PrunaAI/P-H3-Image", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)

prompt = (
    "A German Expressionist oil painting of a Berlin street at night in the manner of Ernst Ludwig Kirchner, "
    "with gaunt figures hurrying past a glowing gas lamp."
)
image = pipe(prompt=prompt, height=3360, width=2496, generator=torch.Generator().manual_seed(3), output="images")[0]
edited = pipe(prompt="let it snow on the street", image=image, output="images")[0]

Her istek önce prompt upsampler üzerinden geçer. Hızlandırıcıdaki her bileşenle birlikte, hattın 8 megapikselde bfloat16 ile yaklaşık 101 GB'a ihtiyacı vardır; bu nedenle örnekler otomatik boşaltmayı kullanır: ComponentsManager, bir blok gerektiğinde her bileşeni hızlandırıcıya taşır ve hat 80 GB'lık bir GPU üzerinde çalışır.

Bileşenler

BileşenSınıf
transformerMiniMaxH3Transformer3DModel
text_encoderQwen3VLForConditionalGeneration (Qwen3-VL-4B)
text_connectorPH3ImageTextConnector
vaeAutoencoderKLPH3Image
tokenizer, processorMetin kodlayıcısının belirteçleyicisi ve MiniMax-H3'ün görüntü işleyicisine sahip bir Qwen3VLProcessor
scheduler, audio_schedulerMiniMaxH3Scheduler
prompt_upsampler, prompt_upsampler_processorQwen3_5ForConditionalGeneration (Qwen3.5-9B tabanlı) ve işlemcisi

İş Akışları

İş akışı, image girdisinde seçilir:

  • text2image, prompt üzerinden üretim yapar. height ve width varsayılan olarak 2912'dir ve 32'nin katlarına yuvarlanır. Model, 8 megapikselde en iyi sonucu verir; örneğin 2912x2912, 3872x2176 veya 2176x3872.
  • image_conditioned, image öğesini prompt içindeki talimata göre düzenler ve 4 veya 8 megapiksel çözünürlükte en iyi sonucu verir. Görsel, metin kodlayıcı için yaklaşık vision_pixels (bir megapiksel) çözünürlükte, VAE için ise kendi boyutunda kodlanır; bu aralığın dışında kalması durumunda reference_min_pixels (bir megapiksel) değerine yükseltilir veya reference_max_pixels (sekiz megapiksel) değerine düşürülür. height ve width belirtilmediğinde, düzenleme ilk görselin boyutunda oluşturulur; bu boyut daha küçükse canvas_min_pixels (dört megapiksel) değerine yükseltilir. 32'nin katlarına yuvarlanarak geçirilen height ve width değerleri tuvali değiştirir ancak görselleri değiştirmez. image ayrıca en fazla 8 görselden oluşan bir liste de olabilir: ilk görsel düzenlenir, diğerleri ise <Picture 2>, <Picture 3> vb. şeklinde referans olarak kullanılır.

Prompt örnekleme

P-H3-Image, kısa istekler yerine tam istekleri işlemek üzere tasarlandığından, pipeline her istekte önce prompt upsampler'ı çalıştırır. İsteği değerlendirir ve ardından prompt'u yazar: height ve width en-boy oranına uygun ayrıntılı bir metinden-görsele prompt veya düzenleme sırasında görsellerde nelerin korunup nelerin değiştirileceğine dair bir özet. Yazdığı prompt, prompt çıktısı olarak geri döner.

out = pipe(prompt=prompt, height=3360, width=2496, output=["images", "prompt"])
print(out["prompt"])

max_new_tokens, akıl yürütme ve istemi birlikte sınırlar; varsayılan olarak metinden görüntüye için 1024, düzenlemeler için 1536 token'dur. Upsampler kullanılabilir bir istem döndürmezse, pipeline bunu render etmek yerine bir hata fırlatır.

prompt değerini olduğu gibi görüntülemek için bloklardan adımı çıkarın. Çıkarılan blok ayrıca kendi başına da çalışır; örneğin prompt'u görüntülemesinden önce kullanıcıya göstermek için:

manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")

blocks = ModularPipeline.from_pretrained("PrunaAI/P-H3-Image").blocks
upsampler_block = blocks.sub_blocks.pop("prompt_upsampler")

upsampler = upsampler_block.init_pipeline("PrunaAI/P-H3-Image", components_manager=manager)
upsampler.load_components(dtype=torch.bfloat16)
upsampled = upsampler(prompt=prompt, height=3360, width=2496, output="prompt")

pipe = blocks.init_pipeline("PrunaAI/P-H3-Image", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
image = pipe(prompt=upsampled, height=3360, width=2496, output="images")[0]

Adım olmadan, upsampler'ın yazdığı her iki biçimdeki düzenleme komutu, altı bölümlük özet veya Edit <Picture 1>. ile başlayan bir paragraf, olduğu gibi kodlanır; diğer tüm talimatlar bu önekle eklenir.

Örnekleme

  • 8 adım, kontrol noktasının sample_sigmas üzerinde çalışır. Başka bir ızgara kullanmak için sigmas parametresini iletin.
  • Model rehberlik damıtılmıştır, bu nedenle bir rehber, negative_prompt veya guidance_scale yoktur.

PH3ImageModularPipeline

sınıf diffusers.PH3ImageModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

MiniMax-H3 tabanlı bir görüntü modeli olan P-H3-Image için metinden görüntüye (text2image) ve talimata dayalı düzenleme (image_conditioned) için bir ModularPipeline.

Görsel, iki adet atılan ses latentini içeren tek bir paketlenmiş dizide gürültüden arındırılmış tek bir latent karedir.

import torch
from diffusers import ComponentsManager, ModularPipeline

manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")

pipe = ModularPipeline.from_pretrained("PrunaAI/P-H3-Image", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
prompt = (
    "A German Expressionist oil painting of a Berlin street at night in the manner of Ernst Ludwig Kirchner, "
    "with gaunt figures hurrying past a glowing gas lamp."
)
image = pipe(prompt=prompt, height=3360, width=2496, output="images")[0]

PH3ImageBlocks

sınıf diffusers.PH3ImageBlocks

< >

( )

P-H3-Image için modüler pipeline blokları: text2image ve image geçirildiğinde talimata dayalı düzenleme (image_conditioned). prompt önce prompt upsampler'dan geçer; verilen haliyle render etmek için prompt_upsampler adımını kaldırın.

Desteklenen iş akışları:

  • text2image: prompt gerektirir
  • image_conditioned: prompt ve image gerektirir

Bileşenler: image_processor (VaeImageProcessor) prompt_upsampler (Qwen3_5ForConditionalGeneration): İstem yükseltici. prompt_upsampler_processor (AutoProcessor): İşlemcisi. text_encoder (Qwen3VLForConditionalGeneration) text_connector (PH3ImageTextConnector) tokenizer (Qwen2Tokenizer) processor (Qwen3VLProcessor) vae (AutoencoderKLPH3Image) scheduler (MiniMaxH3Scheduler) audio_scheduler (MiniMaxH3Scheduler) transformer (MiniMaxH3Transformer3DModel)

Yapılandırmalar: reference_min_pixels (varsayılan: 1048576) reference_max_pixels (varsayılan: 8388608) canvas_min_pixels (varsayılan: 4194304) vision_pixels (varsayılan: 1000000) sample_sigmas (varsayılan: [1.0, 0.984753, 0.967905, 0.951688, 0.925372, 0.881923, 0.810083, 0.528718, 0.0]): sigmas geçirilmediğinde kullanılan kontrol noktası örneklem ızgarası.

Girdiler: image (Image | list, isteğe bağlı): Düzenlenecek görüntü veya en fazla 8 görüntünün listesi: ilki düzenlenir, diğerleri referans olarak kullanılır. height (int, isteğe bağlı): Üretilen görüntünün piksel cinsinden yüksekliği, 32'nin katına yuvarlanır. text2image için varsayılan değer 2912'dir, bu da 8 megapikselde en iyi sonucu verir. Bir düzenleme, en az canvas_min_pixels olmak üzere ilk görüntünün boyutuna ayarlanır ve 4 veya 8 megapikselde en iyi sonucu verir. width (int, isteğe bağlı): Üretilen görüntünün piksel cinsinden genişliği, 32'nin katına yuvarlanır. text2image için varsayılan değer 2912'dir, bu da 8 megapikselde en iyi sonucu verir. Bir düzenleme, en az canvas_min_pixels olmak üzere ilk görüntünün boyutuna ayarlanır ve 4 veya 8 megapikselde en iyi sonucu verir. prompt (str): İstemi veya image geçirildiğinde düzenleme talimatı. Tek bir dize. max_new_tokens (int, isteğe bağlı, iş akışına bağlı olarak varsayılan 1536 veya 1024): Upsampler'ın akıl yürütmesi dahil olmak üzere üretebileceği en fazla token sayısı. vision_images (list, isteğe bağlı): Metin kodlayıcı için yeniden boyutlandırılan düzenleme görüntüleri, düzenlenecek görüntü ilk sırada. reference_images (list, isteğe bağlı): VAE için yeniden boyutlandırılan düzenleme görüntüleri, düzenlenecek görüntü ilk sırada. condition_latents (list, isteğe bağlı): Düzenleme görüntülerinin koşullandırma latentleri. Biçimleri, referans bloklarının geometrisini verir. generator (Generator, isteğe bağlı): İsteğin üreteci. Koşullandırma gürültüsü, üretilen satırların gürültüsünden önce, her koşul için bir çekim olacak şekilde buradan çekilir. latents (Tensor): (1, latent_channels, 1, latent_height, latent_width) biçiminde önceden üretilmiş görüntü gürültüsü, çekim yerine kullanılır. sigmas (list, isteğe bağlı): Sıkı şekilde azalan ve 0 ile biten özel bir örneklem ızgarası. Varsayılan olarak checkpoint'in sample_sigmas değerini kullanır. *denoiser_input_fields (None,isteğe bağlı): Transformer'ın adıyla okuduğu paketlenmiş dizinin yapısal tanımı: token_tags, position_ids ve üç satır-dizin tensörü. attention_kwargs (dict,isteğe bağlı): Dikkat işleyicileri için ek kwargs. output_type (str,isteğe bağlı*, varsayılan pil): Çıktı biçimi: ‘pil’, ‘np’, ‘pt’.

Çıktılar: images (list): Oluşturulan görüntüler.

PH3ImageTextConnector

sınıf diffusers.PH3ImageTextConnector

< >

( hidden_state_indices: tuple = (13, 19, 25, 31, 36)text_hidden_size: int = 2560out_channels: int = 5120 )

Parametreler

  • hidden_state_indices (tuple[int, ...], varsayılan (13, 19, 25, 31, 36)) — Metin kodlayıcısının hidden_states girdilerinden hangilerinin, output_hidden_states numaralandırmasına göre okunacağı (0 gömme çıktısı, i i. çözücü katmanının çıktısı ve sonuncu girdi son normlanmış gizli durumu).
  • text_hidden_size (int, varsayılan 2560) — Metin kodlayıcısının gizli boyutu.
  • out_channels (int, varsayılan 5120) — Koşullandırma MiniMax-H3’ün dönüştürücüsünün okuduğu kanal sayısı.

P-H3-Image'ın Qwen3-VL metin kodlayıcısının gizli durumlarını, dönüştürücüsünün okuduğu metin koşullamasına eşler.

hidden_state_indices içinde listelenen gizli durumlar birleştirilir, standartlaştırılır, doğrusal olarak projekte edilir ve standartlaştırma işlemi geri alınır. İlk token, her istem için aynı koşullandırmaya sahip bir dikkat yutucusudur (attention sink) bu nedenle sink_embedding ile değiştirilir.

forward

< >

( hidden_states: tuple ) → torch.Tensor

Parametreler

  • hidden_states (tuple[torch.Tensor, ...]) — output_hidden_states=True parametresiyle döndürüldüğü gibi metin kodlayıcısının gizli durumları: her giriş için (batch_size, num_tokens, text_hidden_size) biçiminde bir tensör.

Dönüş değeri

torch.Tensor

(batch_size, num_tokens, out_channels) biçiminde, bağlayıcının parametrelerinin veri türündeki koşullandırma.

Update on GitHub