全精度显存优化
1. 直接砍权重位宽(省 30 %~50 % 显存)
--unet-in-fp8-e4m3fn # 把 UNet 压到 FP8,画质几乎无损,显存直接减半
--vae-in-fp16 # VAE 用 FP16 足够,BF16/FP32 没必要
--clip-in-fp16 # Text-encoder 用 FP16(若用 Qwen3-4B 能省 3-4 GB)
```
> 注意:FP8 需要 Ada 以上显卡 + PyTorch 2.2↑,老卡换 `--unet-in-fp16` 即可。
---
2. 让模块常驻 CPU(省 2~8 GB 显存)
--vae-in-cpu # VAE 只占内存,出图前再搬上 GPU,速度掉 <5 %
--clip-in-cpu # Text-encoder 常驻内存,采样阶段再搬,掉速 5 %~10 %
```
> 两个一起用,16 GB 卡也能跑 FLUX-Qwen3 组合。
---
3. 动态卸载策略(Forge 官方版)
--always-low-vram # 最激进,权重按层搬,显存<8 GB 救星
--always-normal-vram # 折中,UNet 常驻,其余按需搬,掉速 10 % 左右
--always-offload-from-vram # 在 low-vram 基础上,采样完立即清空,再省 1 GB 级
```
---
4. Attention 切片 / 分块(再省 300 MB~2 GB)
--attention-split # 把 attention 切成多块,显存碎片少,高分辨率必备
--force-upcast-attention # 计算时临时升到 FP32,防止 FP16 炸显存,代价 3 % 速度
```
---
5. 关闭“占显存”的调试功能
--disable-gpu-warning # 不预分配警告缓存,省 200 MB
--no-hashing # 跳过模型校验,省 300-500 MB 临时缓冲
```
---
6. 让 CUDA 自己省碎片
--cuda-malloc # 用 cudaMallocAsync,碎片少,高 batch 明显
--pin-shared-memory # 允许把交换区钉在内存,倒腾更快,间接防 OOM
```
---
7. 极端救急(速度换显存)
--always-cpu # 全部放 CPU,只有运算时搬,<6 GB 显存也能跑,速度最慢
--all-in-fp16 # 全局 FP16,包括 UNet/VAE/CLIP,再省 1-2 GB
```
---
8. 可选:mmap 关掉(老 SSD/Win10 有 BUG 时)
--disable-mmap # 模型不用内存映射,占显存略增,但可避免 Win 上“占满不释放”
```
---
一条“16 GB 卡跑 FLUX+4B 文本模型”的示范组合(实测 12 GB 以内稳稳出 1024 px):
```bash
python launch.py ^
--xformers --sage --cuda-malloc --cuda-stream --listen ^
--always-normal-vram ^
--unet-in-fp8-e4m3fn --vae-in-fp16 --clip-in-fp16 ^
--vae-in-cpu --clip-in-cpu ^
--attention-split --force-upcast-attention
```
照抄后若还超,就把 `--always-normal-vram` 换成 `--always-low-vram`,或把 `--unet-in-fp8-e4m3fn` 换成 `--unet-in-fp16`,再降 `--gpu-weights-percent 50`,基本就能把 20 GB 模型压进 8 GB 卡。