Skip to content

[docs] LoRA support #10844

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Feb 22, 2025
Merged

[docs] LoRA support #10844

merged 4 commits into from
Feb 22, 2025

Conversation

stevhliu
Copy link
Member

From conversation in #10796, this PR explores adding a badge indicating LoRA support on a pipelines API doc. The badges could be used to also indicate other features.

Let me know what you think, and if we like it, we can add this to every pipeline that supports LoRA!

@HuggingFaceDocBuilderDev

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

Copy link
Member

@a-r-r-o-w a-r-r-o-w left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @stevhliu! It looks great:

image

Should the badge be added for the older models as well (such as SD1.5/SDXL/AnimateDiff/etc.) I can help compile a list of all models where loading loras is supported if you'd like

@stevhliu
Copy link
Member Author

stevhliu commented Feb 20, 2025

Yeah I think it'd make sense to apply to older models for consistency. If it's not too much trouble, I'd appreciate it @a-r-r-o-w! 🤲

@a-r-r-o-w
Copy link
Member

Not a trouble 🤗 I believe these should be it:

Amused
AnimateDiff + XL
CogVideoX
Deepfloyd IF
HunyuanVideo
Instruct Pix2Pix
Flux
Stable Diffusion + SDXL + SD3
Pix2Pix Zero
Kandinsky
Kolors
Latent Consistency Models
LEdits++
LTXVideo
Lumina2
Mochi1
Personalized Image Animator
Sana
Text to Video Synth (Zeroscope)
Unidiffuser
Wuerstchen

@sayakpaul
Copy link
Member

@a-r-r-o-w how are you compiling the list?

It mentions UniDiffuser but the UniDiffuserPipeline doesn't inherit from any LoRA mixin:

class UniDiffuserPipeline(DiffusionPipeline):

Am I missing something?

Copy link
Member

@sayakpaul sayakpaul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is super cool, @stevhliu! A great QoL improvement for our developers.

For the list of the changes, I think we only include the pipelines that inherit from a LoRA loader mixin, otherwise maybe I am missing something.

Will wait for Aryan to comment on my previous question.

@a-r-r-o-w
Copy link
Member

Was going by the imports but looks like that's not the case since they're imported to satisfy # Copied from in encode_prompt

@sayakpaul
Copy link
Member

Okay, let me get the list. @stevhliu sorry for the bother. We might have to revert some changes.

@sayakpaul
Copy link
Member

Code:

import diffusers
import inspect

def has_lora_loader_mixin(cls):
    """Return True if any base in the class hierarchy has 'LoraLoaderMixin' in its name."""
    return any("LoraLoaderMixin" in base.__name__ for base in inspect.getmro(cls))

def find_pipeline_classes(module):
    """Find classes in the given module that:
       - have names ending with 'Pipeline', and
       - inherit from a class whose name contains 'LoraLoaderMixin'.
    """
    matching_classes = []
    for attr_name in dir(module):
        attr = getattr(module, attr_name)
        if inspect.isclass(attr) and attr.__name__.endswith("Pipeline") and has_lora_loader_mixin(attr):
            matching_classes.append(attr)
    return matching_classes

if __name__ == "__main__":
    pipelines = find_pipeline_classes(diffusers)
    if pipelines:
        print("Found the following pipeline classes:")
        for cls in pipelines:
            print(f" - {cls.__name__} (defined in {cls.__module__})")
    else:
        print("No matching pipeline classes found.")

Output:

Collapse
Found the following pipeline classes:
 - AltDiffusionImg2ImgPipeline (defined in diffusers.pipelines.deprecated.alt_diffusion.pipeline_alt_diffusion_img2img)
 - AltDiffusionPipeline (defined in diffusers.pipelines.deprecated.alt_diffusion.pipeline_alt_diffusion)
 - AnimateDiffControlNetPipeline (defined in diffusers.pipelines.animatediff.pipeline_animatediff_controlnet)
 - AnimateDiffPAGPipeline (defined in diffusers.pipelines.pag.pipeline_pag_sd_animatediff)
 - AnimateDiffPipeline (defined in diffusers.pipelines.animatediff.pipeline_animatediff)
 - AnimateDiffSDXLPipeline (defined in diffusers.pipelines.animatediff.pipeline_animatediff_sdxl)
 - AnimateDiffSparseControlNetPipeline (defined in diffusers.pipelines.animatediff.pipeline_animatediff_sparsectrl)
 - AnimateDiffVideoToVideoControlNetPipeline (defined in diffusers.pipelines.animatediff.pipeline_animatediff_video2video_controlnet)
 - AnimateDiffVideoToVideoPipeline (defined in diffusers.pipelines.animatediff.pipeline_animatediff_video2video)
 - CogVideoXFunControlPipeline (defined in diffusers.pipelines.cogvideo.pipeline_cogvideox_fun_control)
 - CogVideoXImageToVideoPipeline (defined in diffusers.pipelines.cogvideo.pipeline_cogvideox_image2video)
 - CogVideoXPipeline (defined in diffusers.pipelines.cogvideo.pipeline_cogvideox)
 - CogVideoXVideoToVideoPipeline (defined in diffusers.pipelines.cogvideo.pipeline_cogvideox_video2video)
 - ConsisIDPipeline (defined in diffusers.pipelines.consisid.pipeline_consisid)
 - CycleDiffusionPipeline (defined in diffusers.pipelines.deprecated.stable_diffusion_variants.pipeline_cycle_diffusion)
 - FluxControlImg2ImgPipeline (defined in diffusers.pipelines.flux.pipeline_flux_control_img2img)
 - FluxControlInpaintPipeline (defined in diffusers.pipelines.flux.pipeline_flux_control_inpaint)
 - FluxControlNetImg2ImgPipeline (defined in diffusers.pipelines.flux.pipeline_flux_controlnet_image_to_image)
 - FluxControlNetInpaintPipeline (defined in diffusers.pipelines.flux.pipeline_flux_controlnet_inpainting)
 - FluxControlNetPipeline (defined in diffusers.pipelines.flux.pipeline_flux_controlnet)
 - FluxControlPipeline (defined in diffusers.pipelines.flux.pipeline_flux_control)
 - FluxFillPipeline (defined in diffusers.pipelines.flux.pipeline_flux_fill)
 - FluxImg2ImgPipeline (defined in diffusers.pipelines.flux.pipeline_flux_img2img)
 - FluxInpaintPipeline (defined in diffusers.pipelines.flux.pipeline_flux_inpaint)
 - FluxPipeline (defined in diffusers.pipelines.flux.pipeline_flux)
 - HunyuanVideoPipeline (defined in diffusers.pipelines.hunyuan_video.pipeline_hunyuan_video)
 - IFImg2ImgPipeline (defined in diffusers.pipelines.deepfloyd_if.pipeline_if_img2img)
 - IFImg2ImgSuperResolutionPipeline (defined in diffusers.pipelines.deepfloyd_if.pipeline_if_img2img_superresolution)
 - IFInpaintingPipeline (defined in diffusers.pipelines.deepfloyd_if.pipeline_if_inpainting)
 - IFInpaintingSuperResolutionPipeline (defined in diffusers.pipelines.deepfloyd_if.pipeline_if_inpainting_superresolution)
 - IFPipeline (defined in diffusers.pipelines.deepfloyd_if.pipeline_if)
 - IFSuperResolutionPipeline (defined in diffusers.pipelines.deepfloyd_if.pipeline_if_superresolution)
 - Kandinsky3Img2ImgPipeline (defined in diffusers.pipelines.kandinsky3.pipeline_kandinsky3_img2img)
 - Kandinsky3Pipeline (defined in diffusers.pipelines.kandinsky3.pipeline_kandinsky3)
 - KolorsImg2ImgPipeline (defined in diffusers.pipelines.kolors.pipeline_kolors_img2img)
 - KolorsPAGPipeline (defined in diffusers.pipelines.pag.pipeline_pag_kolors)
 - KolorsPipeline (defined in diffusers.pipelines.kolors.pipeline_kolors)
 - LTXImageToVideoPipeline (defined in diffusers.pipelines.ltx.pipeline_ltx_image2video)
 - LTXPipeline (defined in diffusers.pipelines.ltx.pipeline_ltx)
 - LatentConsistencyModelImg2ImgPipeline (defined in diffusers.pipelines.latent_consistency_models.pipeline_latent_consistency_img2img)
 - LatentConsistencyModelPipeline (defined in diffusers.pipelines.latent_consistency_models.pipeline_latent_consistency_text2img)
 - Lumina2Text2ImgPipeline (defined in diffusers.pipelines.lumina2.pipeline_lumina2)
 - MochiPipeline (defined in diffusers.pipelines.mochi.pipeline_mochi)
 - PIAPipeline (defined in diffusers.pipelines.pia.pipeline_pia)
 - SanaPipeline (defined in diffusers.pipelines.sana.pipeline_sana)
 - StableDiffusion3ControlNetInpaintingPipeline (defined in diffusers.pipelines.controlnet_sd3.pipeline_stable_diffusion_3_controlnet_inpainting)
 - StableDiffusion3ControlNetPipeline (defined in diffusers.pipelines.controlnet_sd3.pipeline_stable_diffusion_3_controlnet)
 - StableDiffusion3Img2ImgPipeline (defined in diffusers.pipelines.stable_diffusion_3.pipeline_stable_diffusion_3_img2img)
 - StableDiffusion3InpaintPipeline (defined in diffusers.pipelines.stable_diffusion_3.pipeline_stable_diffusion_3_inpaint)
 - StableDiffusion3PAGImg2ImgPipeline (defined in diffusers.pipelines.pag.pipeline_pag_sd_3_img2img)
 - StableDiffusion3PAGPipeline (defined in diffusers.pipelines.pag.pipeline_pag_sd_3)
 - StableDiffusion3Pipeline (defined in diffusers.pipelines.stable_diffusion_3.pipeline_stable_diffusion_3)
 - StableDiffusionControlNetImg2ImgPipeline (defined in diffusers.pipelines.controlnet.pipeline_controlnet_img2img)
 - StableDiffusionControlNetInpaintPipeline (defined in diffusers.pipelines.controlnet.pipeline_controlnet_inpaint)
 - StableDiffusionControlNetPAGInpaintPipeline (defined in diffusers.pipelines.pag.pipeline_pag_controlnet_sd_inpaint)
 - StableDiffusionControlNetPAGPipeline (defined in diffusers.pipelines.pag.pipeline_pag_controlnet_sd)
 - StableDiffusionControlNetPipeline (defined in diffusers.pipelines.controlnet.pipeline_controlnet)
 - StableDiffusionControlNetXSPipeline (defined in diffusers.pipelines.controlnet_xs.pipeline_controlnet_xs)
 - StableDiffusionDepth2ImgPipeline (defined in diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion_depth2img)
 - StableDiffusionDiffEditPipeline (defined in diffusers.pipelines.stable_diffusion_diffedit.pipeline_stable_diffusion_diffedit)
 - StableDiffusionImg2ImgPipeline (defined in diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion_img2img)
 - StableDiffusionInpaintPipeline (defined in diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion_inpaint)
 - StableDiffusionInstructPix2PixPipeline (defined in diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion_instruct_pix2pix)
 - StableDiffusionLDM3DPipeline (defined in diffusers.pipelines.stable_diffusion_ldm3d.pipeline_stable_diffusion_ldm3d)
 - StableDiffusionModelEditingPipeline (defined in diffusers.pipelines.deprecated.stable_diffusion_variants.pipeline_stable_diffusion_model_editing)
 - StableDiffusionPAGImg2ImgPipeline (defined in diffusers.pipelines.pag.pipeline_pag_sd_img2img)
 - StableDiffusionPAGInpaintPipeline (defined in diffusers.pipelines.pag.pipeline_pag_sd_inpaint)
 - StableDiffusionPAGPipeline (defined in diffusers.pipelines.pag.pipeline_pag_sd)
 - StableDiffusionPanoramaPipeline (defined in diffusers.pipelines.stable_diffusion_panorama.pipeline_stable_diffusion_panorama)
 - StableDiffusionParadigmsPipeline (defined in diffusers.pipelines.deprecated.stable_diffusion_variants.pipeline_stable_diffusion_paradigms)
 - StableDiffusionPipeline (defined in diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion)
 - StableDiffusionUpscalePipeline (defined in diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion_upscale)
 - StableDiffusionXLAdapterPipeline (defined in diffusers.pipelines.t2i_adapter.pipeline_stable_diffusion_xl_adapter)
 - StableDiffusionXLControlNetImg2ImgPipeline (defined in diffusers.pipelines.controlnet.pipeline_controlnet_sd_xl_img2img)
 - StableDiffusionXLControlNetInpaintPipeline (defined in diffusers.pipelines.controlnet.pipeline_controlnet_inpaint_sd_xl)
 - StableDiffusionXLControlNetPAGImg2ImgPipeline (defined in diffusers.pipelines.pag.pipeline_pag_controlnet_sd_xl_img2img)
 - StableDiffusionXLControlNetPAGPipeline (defined in diffusers.pipelines.pag.pipeline_pag_controlnet_sd_xl)
 - StableDiffusionXLControlNetPipeline (defined in diffusers.pipelines.controlnet.pipeline_controlnet_sd_xl)
 - StableDiffusionXLControlNetUnionImg2ImgPipeline (defined in diffusers.pipelines.controlnet.pipeline_controlnet_union_sd_xl_img2img)
 - StableDiffusionXLControlNetUnionInpaintPipeline (defined in diffusers.pipelines.controlnet.pipeline_controlnet_union_inpaint_sd_xl)
 - StableDiffusionXLControlNetUnionPipeline (defined in diffusers.pipelines.controlnet.pipeline_controlnet_union_sd_xl)
 - StableDiffusionXLControlNetXSPipeline (defined in diffusers.pipelines.controlnet_xs.pipeline_controlnet_xs_sd_xl)
 - StableDiffusionXLImg2ImgPipeline (defined in diffusers.pipelines.stable_diffusion_xl.pipeline_stable_diffusion_xl_img2img)
 - StableDiffusionXLInpaintPipeline (defined in diffusers.pipelines.stable_diffusion_xl.pipeline_stable_diffusion_xl_inpaint)
 - StableDiffusionXLInstructPix2PixPipeline (defined in diffusers.pipelines.stable_diffusion_xl.pipeline_stable_diffusion_xl_instruct_pix2pix)
 - StableDiffusionXLPAGImg2ImgPipeline (defined in diffusers.pipelines.pag.pipeline_pag_sd_xl_img2img)
 - StableDiffusionXLPAGInpaintPipeline (defined in diffusers.pipelines.pag.pipeline_pag_sd_xl_inpaint)
 - StableDiffusionXLPAGPipeline (defined in diffusers.pipelines.pag.pipeline_pag_sd_xl)
 - StableDiffusionXLPipeline (defined in diffusers.pipelines.stable_diffusion_xl.pipeline_stable_diffusion_xl)
 - StableUnCLIPImg2ImgPipeline (defined in diffusers.pipelines.stable_diffusion.pipeline_stable_unclip_img2img)
 - StableUnCLIPPipeline (defined in diffusers.pipelines.stable_diffusion.pipeline_stable_unclip)
 - TextToVideoSDPipeline (defined in diffusers.pipelines.text_to_video_synthesis.pipeline_text_to_video_synth)
 - TextToVideoZeroPipeline (defined in diffusers.pipelines.text_to_video_synthesis.pipeline_text_to_video_zero)
 - TextToVideoZeroSDXLPipeline (defined in diffusers.pipelines.text_to_video_synthesis.pipeline_text_to_video_zero_sdxl)
 - VideoToVideoSDPipeline (defined in diffusers.pipelines.text_to_video_synthesis.pipeline_text_to_video_synth_img2img)
 - WuerstchenPriorPipeline (defined in diffusers.pipelines.wuerstchen.pipeline_wuerstchen_prior)

@stevhliu
Copy link
Member Author

No problem! Except for the deprecated models, it should now be updated based on @sayakpaul's list

Copy link
Member

@sayakpaul sayakpaul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a bunch!

@sayakpaul sayakpaul merged commit 64dec70 into huggingface:main Feb 22, 2025
1 check passed
@tin2tin
Copy link

tin2tin commented Feb 22, 2025

@stevhliu Thank you!

@stevhliu stevhliu deleted the lora-badges branch February 22, 2025 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants