# How to make this - pretrained model: [epiCRealism](https://civitai.com/models/25694?modelVersionId=134065) + [hyper CFG lora 12steps](https://huggingface.co/ByteDance/Hyper-SD/blob/main/Hyper-SD15-12steps-CFG-lora.safetensors) -> merge with lora weight 0.3 - lora model: [AnimateLCM_sd15_t2v_lora.safetensors](https://huggingface.co/wangfuyun/AnimateLCM/blob/main/AnimateLCM_sd15_t2v_lora.safetensors) ```python import torch from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler from animatediff.models.unet import UNet3DConditionModel from animatediff.models.sparse_controlnet import SparseControlNetModel from animatediff.pipelines.pipeline_animation import AnimationPipeline from animatediff.utils.util import load_weights sdpipe = StableDiffusionPipeline.from_single_file(pretrained_model_path, use_safetensors=True, add_watermarker=False).to(dtype=torch.float16) sdpipe.load_lora_weights(lora_model_path) sdpipe.fuse_lora(lora_scale=0.3) text_encoder = sdpipe.text_encoder.cuda() vae = sdpipe.vae.cuda() tokenizer = sdpipe.tokenizer unet_additional_kwargs = params["unet_additional_kwargs"] controlnet_additional_kwargs = params["controlnet_additional_kwargs"] unet = UNet3DConditionModel.from_pretrained_2d(pretrained_model_path, subfolder="unet", unet_config=sdpipe.unet.config, unet_additional_kwargs=unet_additional_kwargs).cuda() unet.config.num_attention_heads = 8 unet.config.projection_class_embeddings_input_dim = None unet.to(dtype=torch.float16) controlnet = SparseControlNetModel.from_unet(unet, controlnet_additional_kwargs=controlnet_additional_kwargs) controlnet_path = "models/motion_module/v3_sd15_sparsectrl_rgb.ckpt" print(f"loading controlnet checkpoint from {controlnet_path} ...") controlnet_state_dict = torch.load(controlnet_path, map_location="cpu") controlnet_state_dict = controlnet_state_dict["controlnet"] if "controlnet" in controlnet_state_dict else controlnet_state_dict controlnet_state_dict = {name: param for name, param in controlnet_state_dict.items() if "pos_encoder.pe" not in name} controlnet_state_dict.pop("animatediff_config", "") controlnet.load_state_dict(controlnet_state_dict) controlnet.to(dtype=torch.float16) controlnet.cuda() pipe = load_weights( pipeline, # motion module motion_module_path = "models/Motion_Module/v3_sd15_mm.ckpt", motion_module_lora_configs = [], # domain adapter adapter_lora_path = "models/Motion_Module/v3_sd15_adapter.ckpt", adapter_lora_scale = 1.0, # image layers dreambooth_model_path = pretrained_model_path, lora_model_path = "", lora_alpha = 0.8, ).to("cuda") pipe.to(dtype=torch.float16) pipe.enable_vae_slicing() pipe.enable_model_cpu_offload() pipe.scheduler = DPMSolverMultistepScheduler( beta_start = 0.00075, beta_end = 0.0145, beta_schedule = "linear", use_karras_sigmas = True, ) ``` # How to use this ```python controlnet_additional_kwargs = params["controlnet_additional_kwargs"] pipe = AnimationPipeline.from_pretrained("models/animatediff_model") unet = pipe.unet vae = pipe.vae unet.config.num_attention_heads = 8 unet.config.projection_class_embeddings_input_dim = None unet.to(dtype=torch.float16) controlnet = SparseControlNetModel.from_unet(unet, controlnet_additional_kwargs=controlnet_additional_kwargs) controlnet_path = "./models/motion_module/v3_sd15_sparsectrl_rgb.ckpt" print(f"loading controlnet checkpoint from {controlnet_path} ...") controlnet_state_dict = torch.load(controlnet_path, map_location="cpu") controlnet_state_dict = controlnet_state_dict["controlnet"] if "controlnet" in controlnet_state_dict else controlnet_state_dict controlnet_state_dict = {name: param for name, param in controlnet_state_dict.items() if "pos_encoder.pe" not in name} controlnet_state_dict.pop("animatediff_config", "") controlnet.load_state_dict(controlnet_state_dict) controlnet.to(dtype=torch.float16) controlnet.cuda() pipe.controlnet = controlnet without_xformers = False if is_xformers_available() and (not without_xformers): unet.enable_xformers_memory_efficient_attention() if controlnet is not None: print("\nenable_xformers_memory_efficient_attention\n") controlnet.enable_xformers_memory_efficient_attention() pipe.to(dtype=torch.float16) pipe.enable_vae_slicing() pipe.enable_model_cpu_offload() pipe.to("cuda") ```