# GPU 机移除 SD1.5 / SDXL 模型与 LoRA（2026-09-13）

> 操作机：DSH 机 192.168.31.76 ｜ 目标机：GPU 机 192.168.31.31（zywpc）
> 指令：「从 GPU 机移除 SDXL 和 SD1.5 的模型和 lora，对应文件在 DSH 机上有备份，注意不要错误移除 2026 年技术的这些模型和 lora」
> 结果：**删除 81 个文件 / 130.89 GiB，零误删**；磁盘可用 94G → **194G**（92% → 83%）

---

## 一、结论速览

| 项目 | 数量 | 体积 |
|---|---|---|
| 删除 `checkpoints/`（含 `sd1.5/`、`sdxl/` 子目录） | **27 个** | ~125 GiB |
| 删除 `loras/`（SD1.5/SDXL 配套 LoRA） | **54 个** | ~6 GiB |
| **合计删除** | **81 个** | **130.89 GiB** |
| 保留 `loras/`（2026 技术） | 17 个 | 19 GiB |
| `diffusion_models/`（现代主模型） | 16 个 | **完全未动** |

磁盘：`/` 994G 已用 → 894G 已用；可用 94G → **194G**。

---

## 二、判定方法：完全不依赖文件名

文件名在本机极不可靠（`boonude.safetensors` 名字像 SD 的 nude LoRA，实际是 **Boogu** 的；`pixel sprites`、`add_detail` 这类通用名也看不出底模）。因此逐个文件读取**结构证据**：

| 证据层 | 方法 | 结论方向 |
|---|---|---|
| ① `safetensors` `__metadata__` | `ss_base_model_version` / `modelspec.architecture` / `ss_sd_model_name` | `ss_base=krea2/boogu_image.0.1/minimax_h3` → 现代；`sd_v1/sdxl/stable-diffusion-*` → 老 SD |
| ② 张量 key 结构 | 完整模型：`cond_stage_model.transformer`、`conditioner.embedders` = SD 的 U-Net+CLIP；`diffusion_model.blocks`、`context_refiner`、`double_blocks` = DiT | 直接判定架构族 |
| ③ `.ckpt` 文件 | zip 内 `archive/data.pkl` 的 key 表全量特征扫描（`embedders.0/1`、`cond_stage_model.transformer`、`diffusion_model.blocks`、`context_refiner`） | 5 个 ckpt 全部 `emb0=0 emb1=0 cond=197` → **SD1.5**（非 DiT） |
| ④ `kohya` LoRA 特征 | `lora_unet_*` / `lora_te_*` / `lora_te1_*` / `lora_te2_*`（含 `te2` 即 SDXL） | 老 SD LoRA |

**最终统计**：`OLD_SD 81 / MODERN 17 / PLACEHOLDER 2`（共 100 个条目）。

---

## 三、防误删：过程中真实抓到的两个错误

这次判定脚本先后写出两版，**每版都被自查抓出误判**，全部发生在"分类"阶段，没有任何文件在核对完成前被删除：

### 错误 1：`transformer.` 特征过宽 → 21 个老 checkpoint 被误判为 MODERN
- 原因：DiT 的 key 有 `transformer.xxx.lora_A`，但 **SD 的 CLIP 编码器 key 也叫 `cond_stage_model.transformer.text_model...`**，被同一条规则吃掉。
- 后果：若照此执行，`sd_xl_base_1.0`、`chilloutmix`、`GuoFeng3_Fix` 等老模型会被"保留"，看似安全，但规则本身已失效。
- 修正：改为**先判 SD 强特征，后判 DiT**。

### 错误 2：`kohya` 规则排在 metadata 之前 → **Krea2 LoRA 被判成 SD（会真删！）**
- 命中文件：`loras/krea/krea2-bloomgirls-realism-step00004000.safetensors`
- 它有权威元数据 `ss_base=krea2 / arch=krea-2/lora`，但因 key 里含 kohya 特征，被前面的规则先判成 `OLD_SD`。
- 修正：**metadata 提升为最高优先级**，并追加一层 **现代关键词硬白名单**（路径/文件名含 `krea`、`boogu`、`minimax`、`h3`、`boonude`、`sexgod`、`knp`、`ltx`、`qwen`、`flux` → 一律保留，规则判错也不删）。

### 删除前最后一道检查（对 81 项清单执行）
```
grep -inE "krea|boogu|minimax|_h3|/h3/|boonude|sexgod|knp|ltx|qwen|flux|z-image" delete_list.txt
→ CLEAN ✓ 无任何现代模型关键词
清单分布：checkpoints 20 + checkpoints/sd1.5 2 + checkpoints/sdxl 5 + loras 54 = 81
```

---

## 四、备份核对

- 备份位置：DSH 机 `~/Downloads/dl-hub/用户上传/models/`（`Stable-diffusion/` + `Lora/`，共 145 个文件 / 337.3 GiB，含大量 GPU 机上没有的模型）
- 核对口径：**文件名 + 字节数逐一致**（备份内 basename 无重名，匹配无歧义）
- 结果：**81 / 81 全部命中，0 缺失**（130.89 GiB）
- 按用户要求**跳过 sha256 全量校验**（130 GiB × 2 端的哈希耗时过长），故本次口径为"名 + 字节数"，未做逐比特比对。

---

## 五、保留清单（2026 技术，全部完好）

`loras/` 17 个：

| 归属 | 文件 |
|---|---|
| **Krea2**（7） | `KNP_000003000`、`krea2_darkbrush`、`krea/krea2-bloomgirls-realism-step00004000`、`krea/krea2-masterpieces-v51`、`krea/krea2filterbypass3`、`krea/realism_engine_krea2_v3.1`、`krea/snofs_krea_v1_1` |
| **Boogu**（2） | `boogu_image_turbo_lora_rank_128_bf16`、**`boonude`**（`ss_base=boogu_image.0.1`，名字易误判为 SD） |
| **MiniMax H3**（8） | `SexGod-NaughtyTimes-lora-MINIMAXH3`、`minimax_h3_fl2v_turbo_4step_v0.1_comfyui_alpha8`、`minimax_h3_fl2v_turbo_4step_v1.0_768p`、`minimax_h3_fl2v_turbo_8step_v1.0`、`minimax_h3_ref2v_turbo_4step_v0.1`、`minimax_h3_turbo_4步加速_DasiwaREF2VAHybridV1_...-T8`、`minimax/minimax_h3_fl2v_turbo_8step_v1.0`、`h3/minimax_h3_turbo_v4_step600_ema_pruned` |

`diffusion_models/` 16 个 `.safetensors` **完全未动**：Krea2 Turbo、JANK2、Boogu（base/edit/turbo × bf16/fp8/nvfp4）、MiniMax H3（dasiwa/Singularity/fl2va/ref2va）、LTX-2.5 22B 等。
`text_encoders/`、`vae/` 亦未做任何改动。

---

## 六、删除后复核

```
checkpoints/  → 12K（仅剩 put_checkpoints_here 占位文件，模型列表为空）
loras/        → 19G（17 个现代 LoRA + put_loras_here）
diffusion_models/*.safetensors → 16 个（未动）
ComfyUI system_stats → HTTP 200（进程存活，未重启）
/models/checkpoints → []
/models/loras       → 16（见下方提醒）
```

---

## 七、遗留提醒

1. **`loras/krea/krea2filterbypass3.safetensors` 只有 160 字节** —— 实际上是一个无效文件（safetensors header 都没写完），ComfyUI 列表里也不显示它。疑似当初下载残缺，建议重新获取；本次按"现代文件"保留，未删除。
2. **ComfyUI 无需重启**，但浏览器端模型下拉框会缓存旧列表，**建议硬刷新（Ctrl+Shift+R）**后再用。
3. 本次只清 `checkpoints/` 与 `loras/`。**LM Studio 的 GGUF、`diffusion_models/`、`text_encoders/`、`vae/`、`output/` 均未涉及**。
4. 若日后要清理 `ls` 不到的其他 SD 残留，注意 GPU 机 `~/Downloads` 下还有游离文件（历史上已知有未导入的 GGUF），排查用 `find /home/zyw -iname "*.safetensors" -printf "%s\t%p\n" | sort -rn`。

---

## 八、回滚方式（需要时）

备份是完整、独立的副本（`dl-hub/用户上传/models/`），单文件即可恢复：

```bash
# 例：恢复 SDXL base 与一个 LoRA
sshpass -p '***' scp -o StrictHostKeyChecking=no \
  ~/Downloads/dl-hub/用户上传/models/Stable-diffusion/sdxl/sd_xl_base_1.0.safetensors \
  zyw@192.168.31.31:/home/zyw/ComfyUI/models/checkpoints/sdxl/
sshpass -p '***' scp -o StrictHostKeyChecking=no \
  ~/Downloads/dl-hub/用户上传/models/Lora/hanfu-v3.0-ming.safetensors \
  zyw@192.168.31.31:/home/zyw/ComfyUI/models/loras/
```

（⚠️ 传大文件用 `sshpass scp`，expect 包装的 scp 传大文件会卡在 0 字节。）

---

## 附：本次操作产物

| 文件 | 说明 |
|---|---|
| `/tmp/verdict.tsv`（GPU 机）· 本机副本 | 100 个条目的逐文件判定与证据 |
| `/tmp/delete_list.txt` | 81 项删除清单（相对 `ComfyUI/models`） |
| `/tmp/keep_list.txt` | 19 项保留清单 |
| `/tmp/backup_index_full.tsv` | DSH 备份 145 个文件的完整索引 |
