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:
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.
Description
Posted on Civitai, upload found elsewhere are FORBIDDEN and done without the author permission.
FAQ
Comments (12)
DUDE, Thank you.
I've been loving anima, but it's always been hit or miss with checkpoints so far... until now.
I've had no issues with it yet, but I just started using it.
Hope you'll get no issues whatsoever :D
I was looking forward to this ever since Anima 1.0!
Checkpoint looks awesome, great job! ๐
Thanks! ๐ฅฐ
Thanks @GZees for the tips! ๐
Thanks @SinWhisper for the tips! ๐
the absolute best prompt adherence out of any Anima model i've used so far. i can easily squeeze 4 unique characters in a single prompt.
my only issue was the style lora you used, it's high quality though not for my taste. easily enough, i downloaded the lora separate and put it to negative and it looks anime again.
Indeed, this is a way to do so ^^
A "no style baked in" version is avaiblable here now: https://civitai.red/models/2632277/anima-v1-turbo-aio?modelVersionId=2955442
Thanks @vibhisana for the very generous tips! This will go straight to a bounty prize ๐๐๐



















