You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

This is a set of extracted LoRAs for ANIMA made using SVD (with the provided script given AS-IS). There are Rank 64, Alpha 32 standard LoRA. Tested working using Forge Neo.

This is done for research purpose only, the original authors of the source models keep "ownership" of extracted LoRAs and can request deletion of those.

They don't replicate the exact source model of course, but provide a good approximation to avoid storing full models for experimentation.

demo

All of those LoRA includes DiT block layers and LLM Adapter layers (if included, VAE and TE is ignored). Bias if existing, Time embedding and the Final layers are not included.

anima_lora_layers = [
    "adaln_modulation_cross_attn.1.weight",
    "adaln_modulation_cross_attn.2.weight",
    "adaln_modulation_mlp.1.weight",
    "adaln_modulation_mlp.2.weight",
    "adaln_modulation_self_attn.1.weight",
    "adaln_modulation_self_attn.2.weight",
    "cross_attn.k_proj.weight",
    "cross_attn.output_proj.weight",
    "cross_attn.q_proj.weight",
    "cross_attn.v_proj.weight",
    "mlp.layer1.weight",
    "mlp.layer2.weight",
    "self_attn.k_proj.weight",
    "self_attn.output_proj.weight",
    "self_attn.q_proj.weight",
    "self_attn.v_proj.weight",
]

anima_llm_layers = [
    "cross_attn.k_proj.weight",
    "cross_attn.o_proj.weight",
    "cross_attn.q_proj.weight",
    "cross_attn.v_proj.weight",
    "mlp.0.weight",
    "mlp.2.weight",
    "self_attn.k_proj.weight",
    "self_attn.o_proj.weight",
    "self_attn.q_proj.weight",
    "self_attn.v_proj.weight",
]

Here is the list of models:

They were all extracted against Preview 3: https://huggingface.co/circlestone-labs/Anima/blob/main/split_files/diffusion_models/anima-preview3-base.safetensors

PS: if the difference was not over 1e-4, the layer was not included.

for k in tqdm(weight_list):
    diff = (tune[k].to(dtype=torch.float) - orig[k].to(dtype=torch.float)) * scale
    if torch.mean(torch.abs(diff)) < 0.0001:
        # Not enough difference, let's skip it
        del diff
        continue

NB: The method used can be adapted to extract a LoRA from ANY models:

  • Define a list of layers (2D shaped)
  • Compute Diff = Tuned minus Orig for each
  • Extract Up/Down from Diff using SVD and store those tensors

Update

Two additional scripts are now included:

  • merge.py: This script takes multiple LoRAs and merge/redim them.
  • extract_lora_te.py: This script extract via SVD a text encoder LoRA for ANIMA based on Qwen3 model files.

Two demo LoRAs are included based on the following examples:

  • Example usage of merge.py:
python merge.py megamix.safetensors "<lora:animosity_anima:0.9>" "<lora:perfectrsbmixAnimaETA:0.7>" "<lora:kirazuriAnima:0.5>"
  • Example usage of extract_lora_te.py:
python extract_lora_te.py qwen_3_06b_base.safetensors Qwen3-0.6B-heretic-abliterated-uncensored.safetensors qwen-heretic-lora.safetensors

PS:

Update2

Added extract_lora_bn.py which include bias and norm weights (1D tensors) at rank 128 (but doesn't include alpha anymore).

Used for https://civitai.red/models/2625328/p3-to-v1-anima-helper

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support