Team Ai
Modelpublic

WeReCooking/Anima-v1.0-Turbo-AIO-Q4_K

sourceHugging Faceotherupdated 4mo agoView on Hugging Face
1likes123downloads
Model Card
Inspired by n-Arno/Anima-P3-Turbo-AIO-Q4_K. v1.0 AIO built from circlestone-labs/Anima split files. Was previously used by Luminia/Anima-2B-CPU.

Status

~~v1.0 AIO is ready but waiting for a v1.0-compatible Turbo LoRA. The existing Turbo LoRA (v0.1, trained on Preview 3) degrades quality and does not accelerate v1.0. Once a v1.0 Turbo LoRA is released, the AIO will be rebuilt and the Space updated. The Space currently runs Preview 3 + Turbo (main branch). The v1.0 code is parked in the upcoming-v1.0 branch.~~

Files

FileModelSizeStatus
Anima-base-v1.0-Turbo-AIO-Q4_K.ggufBase v1.0 + Turbo LoRA v0.11.71 GBWaiting for v1.0 Turbo LoRA

v1.0 AIO Build Script

Components from circlestone-labs/Anima:

  • —DiT: split_files/diffusion_models/anima-base-v1.0.safetensors (3.99 GB, 685 tensors)
  • —Text encoder: split_files/text_encoders/qwen_3_06b_base.safetensors (1.14 GB, 310 tensors)
  • —VAE: split_files/vae/qwen_image_vae.safetensors (242 MB, 194 tensors)
  • —Turbo LoRA: dummy9996/Anima-Turbo-LoRA (142 MB, 508 loraA/loraB pairs)

Step 1: Concat + merge LoRA

python
import torch
from safetensors.torch import load_file, save_file

sd_dit = load_file("anima-base-v1.0.safetensors")
sd_llm = load_file("qwen_3_06b_base.safetensors")
sd_vae = load_file("qwen_image_vae.safetensors")
sd_lora = load_file("anima-turbo-lora-v0.1.safetensors")

# Concat with sd.cpp-compatible prefixes
merged = {}
for k, v in sd_vae.items():
    merged[f"first_stage_model.{k}"] = v
for k, v in sd_llm.items():
    merged[f"text_encoders.llm.{k}"] = v
for k, v in sd_dit.items():
    merged[f"model.diffusion_model.{k}"] = v

# Merge Turbo LoRA (lora_A/lora_B with key remap: diffusion_model.* -> net.*)
applied = 0
for k in sd_lora:
    if ".lora_A." in k:
        b_key = k.replace(".lora_A.", ".lora_B.")
        base_key = k.replace(".lora_A.weight", ".weight").replace("diffusion_model.", "model.diffusion_model.net.".replace("net.net.", "net."))
        # Correct remap: diffusion_model.X -> model.diffusion_model.net.X
        base_key = k.replace(".lora_A.weight", ".weight")
        base_key = "model.diffusion_model." + base_key.replace("diffusion_model.", "")
        if b_key in sd_lora and base_key in merged:
            a = sd_lora[k].float()
            b = sd_lora[b_key].float()
            merged[base_key] = (merged[base_key].float() + b @ a).to(merged[base_key].dtype)
            applied += 1

print(f"Applied {applied}/508 LoRA pairs")
save_file(merged, "Anima-base-v1.0-Turbo-AIO.safetensors")

Step 2: Convert to GGUF Q4_K

bash
sd-cli -M convert -m Anima-base-v1.0-Turbo-AIO.safetensors --type q4_K -o Anima-base-v1.0-Turbo-AIO-Q4_K.gguf

Step 3: Test

bash
sd-cli -m Anima-base-v1.0-Turbo-AIO-Q4_K.gguf --vae-tiling --fa --offload-to-cpu --steps 8 --cfg-scale 1 -W 512 -H 512 --sampling-method er_sde --scheduler smoothstep --cache-mode spectrum -p "score_9, masterpiece, best quality, newest, 1girl"

Parameters

  • —CFG 1
  • —sampler: er_sde
  • —scheduler: smoothstep (~beta)
  • —steps: 8-16

License

Same as upstream circlestone-labs/Anima.

WeReCooking/Anima-v1.0-Turbo-AIO-Q4_K · Team Ai