FurrySpec | Simple Furry Mix

詳細

ファイルをダウンロード (1)

モデル説明

👋 If you like what I do and want to support the development, feel free to buy me a coffee:

Ko-Fi


Hola!,

This week, I've been testing various merging methods and realized that most checkpoints suffer from a damaged Layer 11. This is the reason why they are sometimes incompatible with LoRAs. However, VAEs tend to filter out these issues, or they get ignored if the checkpoint is in FP32.

Since I do everything using my free Google Colab account, I have to be very picky with RAM usage, but luckily, I managed to merge several checkpoints in a short time. (I'm not publishing those, as they are just tests or works in progress).

The main idea behind this project was to merge checkpoints with the damaged Layer 11 and then repair them using NoobAI as a base, since this flaw typically occurs during merging. I wrote a script for this purpose, and I also created a tool that prevents NaN generation in already published checkpoints (just click here).

How to replace damaged parts?

  • Simply copy and paste this script into Colab.

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

1. ROUTES

We will use Illustrious/ Noobai as the donor because we have confirmed that it is 100% clean

ruta_master_con_nans = “/content/HerrscherAGGA2026_FurrySpec_V15.safetensors” ruta_donante_sano = “/content/civitai_downloads/furryspecSimpleFurry_v1.safetensors” ruta_salida_parcheada = “/content/HerrscherAGGA2026_FurrySpec_V2.safetensors”

print(“Initiating surgical patching of Layer 11…”)

2. Load models

master = load_file(ruta_master_con_nans) sano = load_file(ruta_donante_sano)

3. Identify and replace only the broken tensioners in Layer 11

parches = 0

We specifically looked at the CLIP architecture (conditioner)

keys_a_revisar = [k for k in master.keys() if “layers.11” in k]

for key in keys_a_revisar: if torch.isnan(master[key]).any() or torch.isinf(master[key]).any(): print(f”Repairing an infected tensioner: {key}”) if key in sano: # Direct replacement for the sound value of Illustrious/ Noob master[key] = sano[key].to(master[key].dtype) parches += 1 else: # If it’s not in the donor (unlikely), we clean with zeros master[key] = torch.nan_to_num(master[key], nan=0.0) parches += 1

4. Final Verification (Safety cleaning of the entire model)

for key in master.keys(): if torch.isnan(master[key]).any() or torch.isinf(master[key]).any(): master[key] = torch.nan_to_num(master[key], nan=0.0)

5. Guardar

print(f”\n✅ Surgery completed. Specific {parches} patches were applied.”) save_file(master, ruta_salida_parcheada) print(f”💾 Save on: {ruta_salida_parcheada}”)

6. Cleaning

del master, sano gc.collect() torch.cuda.empty_cache()


Here is the recipe:

furry = [
{“path”: “/content/civitai_downloads/furrytoonmix_xlIllustriousV2.safetensors”, “alpha”: 1.0},
{“path”: “/content/civitai_downloads/yiffymix_v63Noobxl.safetensors”, “alpha”: 0.35},
{“path”: “/content/civitai_downloads/oopsAllToons_naiV10Toonitup.safetensors”, “alpha”: 0.30},
{“path”: “/content/civitai_downloads/bananaSplitzXL_vee9PointOh.safetensors”, “alpha”: 0.30},
{“path”: “/content/civitai_downloads/molKeunMix_deepnavyV4.safetensors”, “alpha”: 0.25},
]

このモデルで生成された画像