☁️BizyAir Apply PuLID Flux
BizyAir Apply PuLID Flux — ComfyUI Node Guide
- model
- pulid_flux
- eva_clip
- face_analysis
- image
- attn_mask
- BIZYAIR_MODEL
This is the node that actually does the work in a BizyAir PuLID-Flux pipeline - everything else (the EVA-CLIP loader, the face-analysis loader, the PuLID model loader) exists to feed inputs into this one node, which patches your Flux model with a reference face's identity before sampling.
Why PuLID, and why it beat InstantID on Flux
PuLID is ByteDance's identity-adapter technique, and its actual technical contribution is subtler than "it copies a face" - it's that it copies a face while degrading everything else less. Earlier adapters had a known problem called ID pollution: injecting identity into a generation would drag down prompt adherence, style, and detail along with it. PuLID trains two parallel branches, one with identity conditioning and one without, and a contrastive loss keeps the conditioned branch close to the unconditioned one's output - so you get the face without the collateral damage to everything else in the image.
The practical reason PuLID is the default face tool on Flux specifically, rather than InstantID, is blunter than the technical story: PuLID shipped a Flux port in September 2024, and InstantID never did. That's it. InstantID's reference repo has been dormant since mid-2024. If you're working in Flux and need a real photo's face without training a LoRA, PuLID is genuinely the only mainstream adapter option - this node is BizyAir's cloud implementation of it.
Inputs that matter
- model - your Flux checkpoint, type
BIZYAIR_MODEL(fromBizyAir_UNETLoaderor similar). - pulid_flux - the PuLID model itself, loaded via a dedicated BizyAir loader not covered in this article.
- eva_clip - from
BizyAir Load Eva Clip (PuLID Flux). This node has zero inputs of its own and exists specifically to feed this slot. - face_analysis - the InsightFace-equivalent face-analysis model, from another BizyAir loader.
- image - your reference face photo.
- weight - -1 to 5, default 1. Notice this range allows negative values, which is unusual compared to InstantID's 0-to-5 range on the equivalent field - the schema doesn't document what a negative weight does specifically, so treat it as an experimental option rather than assuming it inverts or suppresses identity; start at the default of 1 and adjust from there based on results rather than theory.
- start_at / end_at - 0 to 1, defaults 0/1, the usual step-range gating for when identity conditioning applies during sampling.
Optional:
- attn_mask - restrict where the identity conditioning applies within the image.
Output
BIZYAIR_MODEL - the patched model, ready for your BizyAir sampler chain.
How to install it
Ships with the full BizyAir pack.
ComfyUI Manager: search "BizyAir," Install, restart.
git clone:
cd ComfyUI/custom_nodes
git clone https://github.com/siliconflow/BizyAir.git
API key required, same as every node in the pack.
Common issues
Missing an upstream loader. This node needs four separate loaded inputs (model, pulid_flux, eva_clip, face_analysis) before it'll even attempt to run - miss one and you'll get a missing-input error rather than a useful message about what actually went wrong with your identity conditioning. Build the whole chain (UNet loader → EVA-CLIP loader → face-analysis loader → PuLID model loader → this node) before troubleshooting results.
Likeness stalls short of exact. This is a known, community-documented ceiling for PuLID generally: it gets the face's structure, skin tone, and contour close and then stops - for maximum likeness, the standard practitioner recipe is PuLID for the initial structure, then a dedicated pixel-level face-swap or restoration pass afterward. Don't expect to push weight indefinitely and get photorealistic exactness; past a point you'll just start fighting your prompt instead.
InsightFace's licensing applies through the face_analysis dependency - the pretrained face-recognition models underneath most identity tools, PuLID included, carry non-commercial research terms. Worth knowing if this pipeline's output feeds anything you plan to sell.
Don't expect this to work with SDXL checkpoints. The pulid_flux and eva_clip models here are specifically built for Flux - if you're on SDXL, look at BizyAir Apply InstantID instead.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | BIZYAIR_MODEL | — | |
| pulid_flux | BIZYAIR_PULIDFLUX | — | |
| eva_clip | BIZYAIR_EVA_CLIP | — | |
| face_analysis | BIZYAIR_FACEANALYSIS | — | |
| image | IMAGE | — | |
| weight | FLOAT | 1.00-1–5 | — |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| attn_maskopt | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BIZYAIR_MODEL | BIZYAIR_MODEL | — |