-
Notifications
You must be signed in to change notification settings - Fork 6k
[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
[docs] LoRA support #10844
Conversation
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. |
There was a problem hiding this 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:
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
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! 🤲 |
Not a trouble 🤗 I believe these should be it:
|
@a-r-r-o-w how are you compiling the list? It mentions UniDiffuser but the
Am I missing something? |
There was a problem hiding this 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.
Was going by the imports but looks like that's not the case since they're imported to satisfy |
Okay, let me get the list. @stevhliu sorry for the bother. We might have to revert some changes. |
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: CollapseFound 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) |
No problem! Except for the deprecated models, it should now be updated based on @sayakpaul's list |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a bunch!
@stevhliu Thank you! |
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!