Sign In

nArnima Turbo - All In One ANIMA V1 checkpoint

341

Updated: May 19, 2026

base modelsemi-realisticturbo

Download

1 variant available

bf16 SafeTensor

BF16, good balance • 5.24 GB

Verified:

Type

Checkpoint

Stats

641

341

819

Reviews

Published

May 16, 2026

Base Model

Anima

Hash

AutoV2
4D21A04EF6
Forge Badge
n_Arno's Avatar

n_Arno

License:

Anima

The Anima Model is licensed by CircleStone Labs LLC. Copyright CircleStone Labs LLC. IN NO EVENT SHALL CIRCLESTONE LABS LLC BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH USE OF THIS MODEL.

Built on NVIDIA Cosmos

With the release of base V1 of ANIMA, now is the time to release a full checkpoint for some fun and stuff (including a bounty that will follow once i got some sleep 🤣)

Usage:

  • Resolution: Base V1 had a huge boost in quality with a final finetune at 1536x1536 resolution = Showcases picture are 960x1440 without any Hires.Fix or Upscale.

  • sampler/scheduler: ER_SDE + Beta (or Smoothstep for sd.cpp)

  • CFG: 1 since the Turbo LoRA is included (but 1.1 to 1.5 also works and allow back some negative prompting)

  • steps: 8-12 should be enough with the Turbo LoRA but i go for 16.

  • positive prompt: i like to start with masterpiece, best quality, score_9, newest, detailed

  • flow shift: keep the default at 3 if your tool of choice display the value

Works with Forge Neo, should work with ComfyUI.

NB: A Q4_K quantized version for sd.cpp is available on HF (remember this version does NOT work with Forge/Comfy)

It is made using:

  • ANIMA Base V1

  • nArnima V2 LoRA at 1.0 (this means that yes, the TE has been slightly modified. Using base Qwen3-4B as override will change results)

  • my Turbo LoRA at 0.9

  • my P3-to-V1 LoRA at -0.1 to restore some details i wanted back without breaking the impressive boost in quality of the Base V1 gens

Ugly build script:

from safetensors.torch import load_file, save_file
import torch
from tqdm import tqdm

torch.set_grad_enabled(False)


def prefix_replace(st, o, n):
    for k in [k for k in st if k.startswith(o)]:
        st[f"{n}{k[len(o):]}"] = st.pop(k)


def to_cuda(t):
    return t.to(device="cuda", dtype=torch.float)


def to_cpu(t):
    return t.to(device="cpu", dtype=torch.bfloat16).contiguous()


def merge_lora_weight(l, lk, w):
    B = to_cuda(l[f"{lk}.lora_B.weight"])
    A = to_cuda(l[f"{lk}.lora_A.weight"])
    if f"{lk}.alpha" in l:
        s = float(l[f"{lk}.alpha"]) / B.shape[1]
    else:
        s = 1.0
    m = (B @ A) * s * w
    return m


def weight_or_bias(k):
    c = {"bias": "diff_b", "weight": "diff"}
    for suffix in c:
        if k.endswith(suffix):
            return k.replace(suffix, c[suffix])


def merge_lora(st, f, w):
    l = load_file(f)
    prefix_replace(l, "text_encoders.qwen3_06b.", "cond_stage_model.qwen3_06b.transformer.")
    prefix_replace(l, "diffusion_model.", "model.diffusion_model.")
    print(f"Merging {f} at {w}")
    for k in (pbar := tqdm(st.keys())):
        pbar.set_postfix_str(k)
        layer = st[k]
        if len(layer.shape) not in [1, 2]:
            del layer
            continue
        if len(layer.shape) == 1:
            lk = weight_or_bias(k)
            if lk in l:
                st[k] = to_cpu(to_cuda(layer) + to_cuda(l[lk]) * w)
        else:
            lk = k.rstrip(".weight")
            if f"{lk}.lora_B.weight" in l:
                st[k] = to_cpu(to_cuda(layer) + merge_lora_weight(l, lk, w))
        del layer
    del l


def main():
    print("Loading anima_baseV10.safetensors")
    model = load_file("anima_baseV10.safetensors")
    prefix_replace(model, "net.", "model.diffusion_model.")

    print("Loading qwen_3_06b_base.safetensors")
    te = load_file("qwen_3_06b_base.safetensors")
    prefix_replace(te, "model.", "cond_stage_model.qwen3_06b.transformer.model.")

    for k in te:
        model[k] = te[k]
    del te

    merge_lora(model, "nArnima_V2.safetensors", 1.0)
    merge_lora(model, "Turbo-ANIMA.safetensors", 0.9)
    merge_lora(model, "anima-P3-to-V1.safetensors", -0.1)

    print("Loading qwen_image_vae.safetensors")
    vae = load_file("qwen_image_vae.safetensors")
    prefix_replace(vae, "", "first_stage_model.")
    for k in vae:
        model[k] = vae[k]
    del vae

    print("Saving nArnima-Turbo-AIO.safetensors")
    save_file(model, "nArnima-Turbo-AIO.safetensors")
    print("Done!")


if __name__ == "__main__":
    main()

Legal

The CircleStone Model is licensed by CircleStone Labs LLC under the CircleStone Non-Commercial License. Copyright CircleStone Labs LLC. IN NO EVENT SHALL CIRCLESTONE LABS LLC BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH USE OF THIS MODEL.