README.md
| 1 | --- |
| 2 | license: other |
| 3 | license_name: minimax-h3-community-license-agreement |
| 4 | license_link: LICENSE |
| 5 | base_model: PrunaAI/p-h3-image |
| 6 | base_model_relation: quantized |
| 7 | pipeline_tag: text-to-image |
| 8 | language: |
| 9 | - en |
| 10 | tags: |
| 11 | - comfyui |
| 12 | - diffusion-single-file |
| 13 | - text-to-image |
| 14 | - image-to-image |
| 15 | - image-generation |
| 16 | - image-editing |
| 17 | - prompt-upsampling |
| 18 | - lora |
| 19 | - int8 |
| 20 | - 4-bit |
| 21 | - minimax-h3 |
| 22 | - pruna-ai |
| 23 | --- |
| 24 | <!-- header start --> |
| 25 | <p align="center"> |
| 26 | <img src="assets/p-h3-image-comfy.jpg" width="800"> |
| 27 | </p> |
| 28 | <!-- header end --> |
| 29 | |
| 30 | <p align="center"> |
| 31 | <a href="https://github.com/PrunaAI/pruna"> |
| 32 | <img src="https://img.shields.io/badge/GitHub-PrunaAI-9334E9?style=plastic&logo=github&logoColor=white" alt="GitHub"> |
| 33 | </a> |
| 34 | |
| 35 | <a href="https://twitter.com/PrunaAI"> |
| 36 | <img src="https://img.shields.io/badge/Twitter%2FX-@PrunaAI-9334E9?style=plastic&logo=x&logoColor=white" alt="Twitter/X"> |
| 37 | </a> |
| 38 | |
| 39 | <a href="https://www.linkedin.com/company/pruna-ai"> |
| 40 | <img src="https://img.shields.io/badge/LinkedIn-PrunaAI-9334E9?style=plastic&logo=linkedin&logoColor=white" alt="LinkedIn"> |
| 41 | </a> |
| 42 | |
| 43 | <a href="https://discord.com/invite/JFQmtFKCjd"> |
| 44 | <img src="https://img.shields.io/badge/Discord-Join%20us-9334E9?style=plastic&logo=discord&logoColor=white" alt="Discord"> |
| 45 | </a> |
| 46 | |
| 47 | <a href="https://dashboard.pruna.ai/login?utm_source=huggingface&utm_medium=org_card&utm_campaign=hf_traffic"> |
| 48 | <img src="https://img.shields.io/badge/Performance%20Models-Try%20them%20now-9334E9?style=plastic&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MTEiIGhlaWdodD0iNDc3IiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMjMuNzAzIDMwMC41MzJjLTEuODQyLS42NzQtNC4xNDItMS4wNTctNS43MDMtMi4wMjktMTIuNTU4LTcuODQ2LTguODM3LTI1LjE3MiA1LjI1NS0yOC4zNjFhLjY2LjY2IDAgMCAwIC4zNDgtLjIwMS42LjYgMCAwIDAgLjE1Ni0uMzZxNi40OS04MS45ODYgNjguNTc3LTEzNC42MjlhLjM0LjM0IDAgMCAwIC4wOTItLjEyNS4zMy4zMyAwIDAgMC0uMDI2LS4zLjMzLjMzIDAgMCAwLS4xMTItLjEwOGMtNC4xMTUtMi40OTctOC42NC00Ljc1LTEyLjM1My03LjQ0M2ExOTAgMTkwIDAgMCAxLTE4Ljc5NC0xNS41MjJjLTIuOTM2LTIuNzY4LTMuNzAzLTUuODkxLjU4LTcuNzdhLjUuNSAwIDAgMCAuMjgtLjYwOEM1MyA3NS45NSA0OC40MTcgNDguNTk5IDQ1LjUxOCAxOS42NXEtLjM5My0zLjg1Mi0uMjcxLTYuMzJhLjc1Ljc1IDAgMCAxIC4xMzQtLjQuNy43IDAgMCAxIC4zMjQtLjI1NXEyLjEwNC0uODQyIDUuODQ0LTEuNDMxYzU4LjExNC05LjEzNiAxMjcuMDA5IDguNDI1IDE0NC4zMDcgNzIuNjQ1cS4xMDMuMzY0LjE3OCAwIDUuMDk2LTI0LjA5NyA0LjYzOC00OC4xOTMtLjA0Ny0yLjc4NyAxLjg3OS00Ljc4OCAxMC40MDctMTAuOCAyNC43OTgtOC42ODdjNy40NzEgMS4wOTUgNy43NDIgNC42MzggNy4yMDkgMTEuMWEzMzQgMzM0IDAgMCAxLTExLjg4NCA2NC43MDYuMzg4LjM4OCAwIDAgMCAuMTgyLjQ0NC40LjQgMCAwIDAgLjE2NC4wNTFjOTIuNDIxIDguNDUzIDE1OC44NzUgNzkuNDg5IDE2NS4wODQgMTcxLjI3NGExIDEgMCAwIDAgLjEyOS40MjQuODMuODMgMCAwIDAgLjI5MS4yOTZjMy43NSAyLjE3IDYuMiAyLjIxNiA4Ljg1NSA2LjU5MiA1LjA2OCA4LjMzMiAxLjQ1IDIwLjQzMS04LjU5MyAyMi40N2ExLjcxIDEuNzEgMCAwIDAtMS4zNjUgMS40NjhxLTkuMTczIDc1LjM4My02NC43NjIgMTIzLjM3MWMtMjguNjIyIDI0LjcwNC02NS43NDQgMzkuNzQ5LTEwMy40NjQgNDIuMzMtMTAwLjM1OSA2Ljg2My0xODQuNDg2LTY1LjYyMi0xOTUuMDA1LTE2NS41N2EuOC44IDAgMCAwLS4xNTQtLjM5NS43NC43NCAwIDAgMC0uMzMzLS4yNU0xNTEuMzM4IDk3LjY0M2wxOS4wNjYgMTkuMzc1YS41LjUgMCAwIDAgLjE1LjEuNS41IDAgMCAwIC4xNzYuMDMxLjQzLjQzIDAgMCAwIC4zMTktLjE1cTEwLjg0Ny0xMi40NjUgNy40NDMtMjguMTU1Yy00LjUzNS0yMC44Ni0xOC41OTgtMzcuNjY0LTM3LjI3MS00OC4zODktMjEuMDY3LTEyLjY4OS00Ny44NjUtMTUuOTA1LTcyLjI4LTE0Ljg0cS0uNjE3LjAzLS4xNC40MjJsNjMuNDcyIDUzLjMyNmEuNC40IDAgMCAwIC4xNDQuMDcyLjM0LjM0IDAgMCAwIC4zMDEtLjA2OC4zLjMgMCAwIDAgLjA4OC0uMTI2IDQ3IDQ3IDAgMCAwIDMuMjgyLTEzLjA4MXEuMDIzLS4yMzMuMTI0LS40MzN0LjI2OC0uMzM0YzIuOTU1LTIuNDc4IDQuMTE1LjQ1OCA0LjY5NCAyLjg1MnEyLjMyIDkuNTM3LjE4NyAxOS4yNDRhMS40OCAxLjQ4IDAgMCAwIC40NCAxLjQwM3ptLTYuNTI2IDkuMjk1LTkuMDI0LTEwLjI3NmEuNy43IDAgMCAwLS4zNDMtLjIwNy44Ni44NiAwIDAgMC0uNDMzIDBxLTExLjY4IDMuMDIxLTIzLjExNC0uODIyYy01LjgxNi0zLjg1Mi0uNzU4LTUuNTE3IDIuNTktNS44MTZxNS45MTgtLjUzMyAxMS43MzUtMi41MDZhLjMuMyAwIDAgMCAuMTI3LS4wOC4zLjMgMCAwIDAgLjA3My0uMTMzLjM0LjM0IDAgMCAwIC4wMDEtLjE1NC4zNC4zNCAwIDAgMC0uMDctLjEzOGMtMTkuNDU5LTIxLjE1LTQwLjc2LTQwLjI0NS02Mi4yNzUtNTkuMjY0cS0uMzU2LS4zMTgtLjMxOC4xNWEzMDggMzA4IDAgMCAwIDguMzg3IDUxLjgwMmM0LjU5MiAxOC4zMDggMTMuNzU1IDM0LjE1NyAzMS44NDggNDEuODcycTI2LjI0NyAxMS4xODIgNTMuNzI5IDIuODMzYS41ODMuNTgzIDAgMCAwIC4yOTktLjg4OCAyMzUgMjM1IDAgMCAwLTEzLjIxMi0xNi4zNzNtNDUuMTI1IDQ5Ljc0NXEtMTIuNTk1IDEuMzE4LTIzLjQ0MS01LjU4M2MtMy4wNzctNC44OTkgMi4wNjYtOC41OTMgNS40NDItMTEuMTgzYS41ODQuNTg0IDAgMCAwIC4xODctLjcwMSA4LjQ2IDguNDYgMCAwIDAtMy40ODgtMy44NjIuODEuODEgMCAwIDAtLjgyMy4wMDljLTE2LjY5MSA5Ljk3Ny0zNC40ODUgMTAuNzgyLTUzLjE4NiA2Ljk2N3EtMS41Ny0uMzItMi44NTIuNjQ1LTYxLjQ1MSA0Ni4zNy02OS42NyAxMjMuOTEzLS42ODMgNi40MzMtMS44MDYgOC44MjdjLTIuOTQ1IDYuMzAyLTcuNzcgNy44NDUtMTQuMjIyIDkuNDcycS0uNDQ5LjExMyAwIC4yMzRjOS4yNzYgMi4zMSAxNC42OCA2LjE0MyAxNi4wNzQgMTYuNDAxIDguNDYyIDYyLjQ5IDQ4Ljk0IDExNy44NjQgMTEwLjM4MyAxMzguMzQxYTEwNCAxMDQgMCAwIDAgMTEuMDA2IDMuNTA3YzkyLjY0NSAyMy45MDkgMTgxLjIzMi0zMy42NjIgMjAyLjgwNC0xMjUuMDU0cTEuNjA5LTYuNzkgMy40NS0xOS4wODVjMS4xMDQtNy4zOTYgNS42OTUtMTIuMTE4IDEzLjE0Ny0xMy41NjguNDEyLS4wODQgMS45MDgtLjc1Ny4yODEtLjk5MS04LjA1MS0xLjE0MS0xMi4yNC02LjM4Ni0xMi45ODgtMTQuMTI4cS0xLjA3NS0xMS4yNS0yLjUxNi0xOS4wMzhjLTExLjc3Mi02My44OTItNTYuMzgzLTExNC41NzItMTE5LjI4NS0xMzEuNDZxLTE1LjEyLTMuODgtMzAuOTg3LTUuMjQ1YS4zODYuMzg2IDAgMCAwLS40MDIuMjUyIDE2OC42IDE2OC42IDAgMCAxLTExLjM1MiAyNC44NTRjLTQuMTMzIDcuNDA2LTguMTYzIDE1LjQ5NC0xNS43NTYgMTYuNDc2Ii8+PGNpcmNsZSBjeD0iMTQwLjA2NSIgY3k9IjI3My4wMyIgcj0iNTAuNjE4IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iOS4yMDMiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTQ2Ljk2NyAyNDIuMDkyYzE1LjY3MiAwIDI4LjM3NiAxMy45NjMgMjguMzc2IDMxLjE4OHMtMTIuNzA0IDMxLjE4OS0yOC4zNzYgMzEuMTg5LTI4LjM3Ny0xMy45NjQtMjguMzc3LTMxLjE4OWMwLTIuNjI1LjI5Ny01LjE3NC44NTItNy42MSAxLjYwNyAzLjcyNyA1LjMxMyA2LjMzOCA5LjYyOSA2LjMzOCA1Ljc4OSAwIDEwLjQ4MS00LjY5MyAxMC40ODItMTAuNDgycy00LjY5My0xMC40ODEtMTAuNDgyLTEwLjQ4MWMtLjc2MSAwLTEuNTA0LjA4My0yLjIxOS4yMzcgNS4xMzktNS42NzYgMTIuMjUzLTkuMTkgMjAuMTE1LTkuMTkiLz48Y2lyY2xlIGN4PSIyNjkuOTMyIiBjeT0iMjczLjAzIiByPSI1MC42MTgiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSI5LjIwMyIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0yNzYuODM0IDI0Mi4wOTJjMTUuNjcyIDAgMjguMzc2IDEzLjk2MyAyOC4zNzYgMzEuMTg4cy0xMi43MDQgMzEuMTg5LTI4LjM3NiAzMS4xODktMjguMzc3LTEzLjk2NC0yOC4zNzctMzEuMTg5YzAtMi42MjUuMjk3LTUuMTc0Ljg1My03LjYxIDEuNjA2IDMuNzI3IDUuMzEyIDYuMzM4IDkuNjI4IDYuMzM4IDUuNzg5IDAgMTAuNDgyLTQuNjkzIDEwLjQ4Mi0xMC40ODJzLTQuNjkzLTEwLjQ4MS0xMC40ODItMTAuNDgxYy0uNzYxIDAtMS41MDQuMDgzLTIuMjE5LjIzNyA1LjEzOS01LjY3NiAxMi4yNTQtOS4xOSAyMC4xMTUtOS4xOSIvPjxwYXRoIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSI5LjIwMyIgZD0iTTE3Ny4xMzUgMzQ1LjMyOGMuODk5LS4yNCAyLjgwMS0uMTk3IDYuMzA0LjQ2NCA2LjMxMSAxLjE5IDE2LjU4NSA0LjIyMSAyNi4xMjIgNC4yMjEgOS40NTIgMCAxNy4xMTgtMS45MjYgMjEuMzgzLTIuNjAzLjc3LS4xMjMgMS4zODUtLjE5OSAxLjg3OC0uMjM3LS4zNCAxMy44NDMtMTIuODkzIDI3LjcxLTI3Ljg2OCAyNy43MS0xNS4xNzIgMC0yNy44NzYtMTMuODM1LTI3Ljg3Ni0yOC44MTEgMC0uMzU3LjAyOS0uNTk2LjA1Ny0uNzQ0WiIvPjwvc3ZnPg==" alt="Performance Models"> |
| 49 | </a> |
| 50 | </p> |
| 51 | <div align="center"> |
| 52 | |
| 53 | <h1 style="color: #9334E9;">P-H3-Image</h1> |
| 54 | |
| 55 | <h2>ComfyUI files for P-H3-Image, based on MiniMax-H3</h2> |
| 56 | |
| 57 | <h3> |
| 58 | <span style="color: #9334E9;">bf16, int8 and w4a8</span> |
| 59 | · |
| 60 | <span style="color: #9334E9;">From 21 GB of VRAM</span> |
| 61 | · |
| 62 | <span style="color: #9334E9;">8 steps</span> |
| 63 | · |
| 64 | Text-to-image and editing with up to 8 images |
| 65 | </h3> |
| 66 | |
| 67 | </div> |
| 68 | |
| 69 | This repository holds the ComfyUI files for **P-H3-Image**, an image model for text-to-image generation and image |
| 70 | editing based on [MiniMax-H3](https://huggingface.co/MiniMaxAI/MiniMax-H3). It renders 8-megapixel images in 8 steps |
| 71 | without CFG and edits with up to 8 input images. Every component comes in bf16 and in ComfyUI's native int8 and 4-bit |
| 72 | formats. The smallest set is a 20 GB download that peaks at 21 GB of VRAM at 8 MP, against 143 GB of weights for |
| 73 | MiniMax-H3. |
| 74 | |
| 75 | ComfyUI supports P-H3-Image natively, no custom nodes needed. The diffusers pipeline is |
| 76 | in [PrunaAI/P-H3-Image](https://huggingface.co/PrunaAI/P-H3-Image). Try it in the [Hugging Face Spaces](https://huggingface.co/spaces/PrunaAI/P-H3-Image). Read the full blog post [here](https://pruna.ai/blog/oss-p-h3-image-launch). |
| 77 | |
| 78 | ## Quickstart |
| 79 | |
| 80 | 1. **Update ComfyUI.** P-H3-Image support is on ComfyUI's master branch and ships with the next release. Until then, |
| 81 | update to the latest ComfyUI from GitHub (nightly). The desktop app and Comfy Cloud follow stable releases and get it |
| 82 | with the next one. |
| 83 | |
| 84 | ```bash |
| 85 | cd ComfyUI && git pull |
| 86 | ``` |
| 87 | |
| 88 | 2. **Download one file per component** into `ComfyUI/models`. The bf16 set, a 55 GB download plus the prompt upsampler, |
| 89 | peaks at about 56 GB of VRAM: |
| 90 | |
| 91 | ```bash |
| 92 | hf download PrunaAI/P-H3-Image-comfy --include "diffusion_models/p-h3-image_bf16.safetensors" "text_encoders/p-h3-image_text_encoder_bf16.safetensors" "text_encoders/p-h3-image_prompt_upsampler_bf16.safetensors" "vae/p-h3-image_vae_bf16.safetensors" --local-dir ComfyUI/models |
| 93 | ``` |
| 94 | |
| 95 | The smallest set, a 20 GB download plus the prompt upsampler, peaks at about 21 GB of VRAM: |
| 96 | |
| 97 | ```bash |
| 98 | hf download PrunaAI/P-H3-Image-Comfy --include "diffusion_models/p-h3-image_w4a8.safetensors" "text_encoders/p-h3-image_text_encoder_w4a8.safetensors" "text_encoders/p-h3-image_prompt_upsampler_bf16.safetensors" "vae/p-h3-image_vae_int8_convrot.safetensors" --local-dir ComfyUI/models |
| 99 | ``` |
| 100 | |
| 101 | 3. **Open a workflow** from `workflows/`, type a short request and run. The |
| 102 | workflows render at 8 MP in 8 steps through the prompt upsampler. |
| 103 | |
| 104 | ## Pick your files |
| 105 | |
| 106 | Pick one file per component. Files of different precisions can be mixed freely. |
| 107 | |
| 108 | | Component | Folder | bf16 | int8 (`int8_convrot`) | w4a8 | |
| 109 | |---|---|:---:|:---:|:---:| |
| 110 | | Diffusion model | `diffusion_models/` | 40.5 GB | 21.2 GB | 13.4 GB | |
| 111 | | Text encoder | `text_encoders/` | 9.1 GB | 5.1 GB | 3.6 GB | |
| 112 | | Prompt upsampler | `text_encoders/` | 19.3 GB | 9.7 GB | 6.7 GB | |
| 113 | | VAE | `vae/` | 5.6 GB | 3.1 GB | – | |
| 114 | | LoRA for MiniMax-H3 | `loras/` | 2.0 GB | – | – | |
| 115 | |
| 116 | | Set (model, text encoder, VAE) | Download | Peak VRAM at 8 MP | |
| 117 | |---|:---:|:---:| |
| 118 | | bf16 | 55 GB | 56 GB | |
| 119 | | int8 | 30 GB | 31 GB | |
| 120 | | w4a8, int8 VAE | **20 GB** | **21 GB** | |
| 121 | |
| 122 | <p align="center"> |
| 123 | <img src="assets/weights.png" width="100%"> |
| 124 | </p> |
| 125 | |
| 126 | *Weights on disk. MiniMax-H3 counts its transformer, text encoder and video VAE.* |
| 127 | |
| 128 | The int8 set stays very close to bf16, often almost pixel for pixel. The w4a8 set keeps the quality but changes more |
| 129 | of the details and sometimes the composition. On a 48 GB L40S, where the bf16 set has to offload, the w4a8 set renders a |
| 130 | 2048 × 2048 image in 6.3 s instead of 19 s. |
| 131 | |
| 132 | <p align="center"> |
| 133 | <img src="assets/quantization.jpg" width="100%"> |
| 134 | </p> |
| 135 | |
| 136 | *The same prompts and seed in bf16, int8 and w4a8, at 8 MP. The headers give the download size and the peak VRAM at |
| 137 | 8 MP.* |
| 138 | |
| 139 | The quantized files use ComfyUI's native formats, need no calibration data and run on comfy-kitchen's INT8 kernels, for |
| 140 | NVIDIA Ampere or newer and AMD RDNA3/4. |
| 141 | |
| 142 | - **int8 (`int8_convrot`).** Weights are rotated with grouped Hadamard transforms to spread outliers, then stored as |
| 143 | INT8 with per-row scales. Activations are quantized to INT8 on the fly. |
| 144 | - **w4a8.** The same rotation, then 4-bit weights on a 16-level codebook with an FP8 scale for every 16 inputs, and |
| 145 | INT8 activations. The layers most sensitive to 4-bit weights stay in int8. |
| 146 | |
| 147 | ## Workflows |
| 148 | |
| 149 | | Workflow | What it does | |
| 150 | |---|---| |
| 151 | | `p-h3-image_text_to_image.json` | Text-to-image at 8 MP from a short request | |
| 152 | | `p-h3-image_edit.json` | Edits an image, with optional reference images | |
| 153 | | `p-h3-image_lora_text_to_image.json` | Text-to-image with the LoRA on your own MiniMax-H3 | |
| 154 | | `p-h3-image_lora_edit.json` | Editing with the LoRA on your own MiniMax-H3 | |
| 155 | |
| 156 | The workflows use only ComfyUI's own nodes. Load Diffusion Model loads the model, followed by ModelSamplingMiniMaxH3 at |
| 157 | 1.0 for both shifts. Load CLIP (type `minimax`) loads the text encoder, Load VAE the VAE, and p-h3-image Conditioning |
| 158 | turns the prompt and the images into the conditioning and the latent. The prompt upsampler runs on Generate Text, and |
| 159 | sampling on ManualSigmas with the 8-step grid, Basic Guider, `euler` and Sampler Custom Advanced, with no CFG or |
| 160 | negative prompt. The LoRA loads with ComfyUI's Load LoRA (Bypass, Model Only). |
| 161 | |
| 162 | ## Recommended resolutions |
| 163 | |
| 164 | <p align="center"> |
| 165 | <img src="assets/resolutions.png" width="100%"> |
| 166 | </p> |
| 167 | |
| 168 | | Aspect ratio | 8 MP (width × height) | 4 MP, for edits | |
| 169 | |:---:|:---:|:---:| |
| 170 | | 1:1 | **2912 × 2912** | 2048 × 2048 | |
| 171 | | 4:3 | **3360 × 2496** | 2368 × 1760 | |
| 172 | | 3:4 | **2496 × 3360** | 1760 × 2368 | |
| 173 | | 3:2 | **3552 × 2368** | 2496 × 1664 | |
| 174 | | 2:3 | **2368 × 3552** | 1664 × 2496 | |
| 175 | | 16:9 | **3872 × 2176** | 2720 × 1536 | |
| 176 | | 9:16 | **2176 × 3872** | 1536 × 2720 | |
| 177 | |
| 178 | Text-to-image works best at 8 MP. In the workflows, Resolution Selector at 8 megapixels and a multiple of 32 gives |
| 179 | these sizes. Edits work best at 4 or 8 MP. In the edit workflows, Scale Image to Total Pixels brings `image_1`, the |
| 180 | image being edited, to 4 MP, and p-h3-image Conditioning generates the edit at its size unless `width` and `height` are |
| 181 | set. Reference images above about 8 MP are scaled down. |
| 182 | |
| 183 | ## Prompt upsampler |
| 184 | |
| 185 | P-H3-Image is sensitive to prompting and renders full, specific prompts much better than short requests. The prompt |
| 186 | upsampler, based on Qwen3.5-9B, turns a one-line request into that prompt, and all example workflows use it. It thinks |
| 187 | about the request first and then writes the prompt. |
| 188 | |
| 189 | It runs on ComfyUI's own nodes, the way FLUX.3 Klein's templates run theirs: Load CLIP (type `minimax`) and Generate |
| 190 | Text, with greedy decoding, so a request always gives the same prompt. |
| 191 | |
| 192 | - **Text-to-image.** Format Text turns the request into the upsampler's input, `Aspect ratio: 1:1` and `Request: ...` |
| 193 | on two lines, and Generate Text runs with `thinking` on. Keep the aspect ratio the same as in Resolution Selector. |
| 194 | - **Edits.** Format Text writes the upsampler's input with a `<Picture N>` block for every image, and the images reach |
| 195 | Generate Text through Batch Images: `image_1` at 1 MP, the references padded to its size. The result is the edit |
| 196 | prompt for p-h3-image Conditioning. |
| 197 | - **Use prompt upsampler**, an If/Else switch, set to false sends the request to the model as it is. |
| 198 | |
| 199 | The upsampler runs before P-H3-Image, and ComfyUI moves it out of VRAM when P-H3-Image needs the memory. Its output is |
| 200 | cached, so it only runs again when the request or the images change. |
| 201 | |
| 202 | | Upsampler file | Size | Peak VRAM | Time per prompt, L40S | |
| 203 | |---|:---:|:---:|:---:| |
| 204 | | `p-h3-image_prompt_upsampler_bf16` (recommended) | 19.3 GB | about 21 GB | about 7 s | |
| 205 | | `p-h3-image_prompt_upsampler_int8_convrot` | 9.7 GB | about 12 GB | about 13 s | |
| 206 | | `p-h3-image_prompt_upsampler_w4a8` | 6.7 GB | about 9 GB | about 11 s | |
| 207 | |
| 208 | The w4a8 prompts differ most from bf16. Use the smaller files only when 21 GB does not fit. |
| 209 | |
| 210 | ## Editing |
| 211 | |
| 212 | Connect the image to edit as `image_1` and up to 7 references after it, in the same order in Batch Images and on |
| 213 | p-h3-image Conditioning, with a `<Picture N>` block in Upsampler input for every image. The request can name the images |
| 214 | however you like, such as "the hat from the second photo". |
| 215 | |
| 216 | <p align="center"> |
| 217 | <img src="assets/multi_image.jpg" width="100%"> |
| 218 | </p> |
| 219 | |
| 220 | *Top, eight public-domain portraits and the dinner party P-H3-Image composed from them, from a one-sentence request. |
| 221 | Bottom, eight scientists at a poker table, seven presidents wading through the swamp with an astronaut, and characters |
| 222 | from our own renders in the same swamp.* |
| 223 | |
| 224 | ## Already have MiniMax-H3? |
| 225 | |
| 226 | If you run MiniMax-H3 in ComfyUI, the 2 GB LoRA `loras/p-h3-image_lora_bf16.safetensors` runs P-H3-Image on its FL2VA |
| 227 | transformer without a second large download. Load `minimax_h3_fl2va_bf16.safetensors` from |
| 228 | [Comfy-Org/MiniMax-H3](https://huggingface.co/Comfy-Org/MiniMax-H3) (the pruned and quantized FL2VA files work too), |
| 229 | apply the LoRA with Load LoRA (Bypass, Model Only) at strength 1.0, and start from the `lora` workflows. |
| 230 | |
| 231 | ## Limitations |
| 232 | |
| 233 | - **It is sensitive to prompting.** Keep the prompt upsampler in the graph. Hype words and very long prompts make |
| 234 | images worse, and very short prompts give weak results without it. |
| 235 | - **Hands can break, and small people in the background can come out distorted.** Rendering at 8 MP helps. |
| 236 | - **Text is not fully reliable.** Small or dense text turns into pseudo-text, and longer passages sometimes get single |
| 237 | letters wrong. Short quoted strings render well. |
| 238 | - **Quantized files are not identical to bf16.** int8 stays very close, w4a8 changes more of the details. |
| 239 | |
| 240 | ## License |
| 241 | |
| 242 | The P-H3-Image weights are based on MiniMax-H3 and released under the [MiniMax H3 Community License](LICENSE). Please |
| 243 | read it before use. Among other terms, it excludes the European Union, the United Kingdom, the Republic of Korea and |
| 244 | the United States unless you have a separate license from MiniMax, and products built on it must show "Powered by |
| 245 | MiniMax H3". The text encoder's Qwen3-VL-4B parts and the prompt upsampler, based on Qwen3.5-9B, are under the |
| 246 | [Apache License 2.0](LICENSE-APACHE). See [NOTICE](NOTICE) for details. |
| 247 | |
| 248 | ## What's next? |
| 249 | |
| 250 | - Compress your own models with [Pruna](https://github.com/PrunaAI/pruna) and give us a ⭐️ for more efficiency! |
| 251 | - Want to use our optimized image models right away? Check [P-Image-Ideogram](https://www.pruna.ai/p-image-ideogram) and [P-Image-Edit](https://www.pruna.ai/p-image-edit). |
| 252 | |
| 253 | <style> |
| 254 | .model-button { |
| 255 | display: inline-flex; |
| 256 | flex-direction: row; |
| 257 | justify-content: center; |
| 258 | align-items: center; |
| 259 | gap: 8px; |
| 260 | |
| 261 | padding: 8px 20px; |
| 262 | border: none; |
| 263 | border-radius: 8px; |
| 264 | |
| 265 | background: #9334e9; |
| 266 | color: #ffffff; |
| 267 | |
| 268 | font-size: 14px; |
| 269 | font-weight: 400; |
| 270 | line-height: 1; |
| 271 | text-decoration: none; |
| 272 | white-space: nowrap; |
| 273 | cursor: pointer; |
| 274 | |
| 275 | box-sizing: border-box; |
| 276 | overflow: visible; |
| 277 | opacity: 1; |
| 278 | } |
| 279 | </style> |
| 280 | |
| 281 | <a href="https://dashboard.pruna.ai/login?utm_source=huggingface&utm_medium=model_card&utm_campaign=hf_traffic" class="model-button">Try our models</a> |
| 282 | |