这类问题我又碰上了一次。在 8G 显存的卡上加载 Flux 模型,报 dtype 不支持或者直接显存溢出,量化版本效果又不理想。
第一反应是「没有启用分块解码与顺序加载」,验证下来不成立。
把日志和配置对完,能解释这个现象的基本就这几处。完整模型参数量大,半精度权重就超过显存;文本编码器单独占一大块显存;显卡不支持 bf16,只能退回 fp16。
第一件事是查显卡是否支持 bf16
python -c "import torch;print(torch.cuda.is_bf16_supported())"
接着启用顺序加载与分块解码
pipe.enable_model_cpu_offload(); pipe.enable_vae_slicing()
再往下改用 fp16 或量化版本
python -c "print('load fp8 or gguf variant')"
降低分辨率与步数先跑通
image = pipe(prompt, width=768, height=768, num_inference_steps=20).images[0]
这类改动我都写进变更记录,过两周再出问题时能对上号。
怎么算真的好了,看的是同一批现象。模型能完整加载并出图,显存峰值压在容量以内,单张耗时在可接受范围。
补一句。分块解码会让速度明显变慢,但能把峰值显存降下来,显存紧张时这是最直接的开关。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。