FP8加速
ComfyUI FP8终极加速指南 (针对NVIDIA RTX 40系及以上显卡)
一、 问题的起点:为什么加载了FP8模型,还会看到bfloat16的提示?
当你加载一个FP8格式的模型,但在ComfyUI的日志中看到manualy cast:torch.bfloat16时,这揭示了一个核心概念:模型权重的存储格式不等于计算时使用的数据格式。
- 你的情况: 模型权重确实以FP8的格式被加载到了显存中。
- 你获得的好处: 显存占用减半。 这是FP8带来的第一个巨大优势。
- 你缺失的部分: 计算过程并没有利用FP8的硬件加速单元。为了保证计算的稳定性和精度,系统将FP8权重“手动转换”回了bfloat16格式进行运算。
- 结论: 你只享受到了一半的好处(显存节省),而错过了另一半(速度提升)。
二、 正确的解决方案:解锁全部性能的“双重开关”
要同时获得“显存节省”和“计算加速”,你需要开启两个关键开关。这套组合拳是专门为RTX 40系及以上显卡的Tensor Core设计的。
- 作用: 这是一个全局开关,在启动ComfyUI时就告诉底层框架(PyTorch):“准备好!我们要进行高性能FP8计算了!” 它会启用专门为速度优化的CUDA计算核心。
- 如何操作 (以 .bat 文件为例):
- 作用: 这是一个局部指令,在你加载具体模型时下达。它告诉ComfyUI:“对于这个模型,请务必使用FP8的快速计算路径来处理。”
- 如何操作:
三、 深入理解:它到底是如何工作的?
一个Checkpoint大模型主要包含UNet, CLIP (Text Encoder) 和 VAE三部分。fp8_..._fast设置非常智能,它只会将FP8加速应用在UNet上。
- UNet: 计算量最大 (99%)、体积最大,是速度瓶颈,且对低精度容忍度较好。是FP8加速的核心目标。
- VAE & CLIP: 计算量小,且VAE对精度非常敏感,强行FP8会导致画质崩坏。因此它们会保持在FP16或更高精度下运行,以确保结果质量。
ComfyUI支持即时类型转换。
- 加载FP16/BF16模型 + 选择 fp8_e4m3fn_fast: ComfyUI会在加载时自动将UNet权重从FP16转换为FP8。你同样能享受到完整的显存和速度优势。