flux.1 nf4是一款由敏神开发的先进模型,针对图像处理和生成任务进行了优化。。在 6GB/8GB/12GB 设备上运行 Flux 时,NF4 的速度显著快于 FP8,而在大于 16GB 的显存设备上则稍快。对于 6GB/8GB 显存的 GPU,速度提升约为 1.3 倍到 2.5 倍(pytorch 2.4,cuda 12.4)或约为 1.3 倍到 4 倍(pytorch 2.1,cuda 12.1)。 我刚刚测试了 3070 ti 笔记本(8GB 显存),FP8 每次迭代需要 8.3 秒;NF4 每次迭代需要 2.15 秒(在我的案例中,速度快了 3.86 倍)。这是因为交换较少,部分原因是 NF4 的原生 bnb.matmul_4bit 而不是 torch.nn.functional.linear:避免了类型转换,并且计算使用了许多低位 cuda 技巧。(更新 1:在 pytorch 2.4,cuda 12.4 上,bnb 的速度提升不那么明显。更新的 pytorch 可能使用了改进的 fp8 转换。) (更新 2:上述数字不是基准测试 – 我只测试了很少的设备。其他一些设备可能有不同的性能。) (更新 3:我现在测试了更多设备,速度提升有些随机,但我总是看到速度提升 – 我会稍后提供更可靠的数字!)
BitsandBytes 和 Flux 的主要更新
BitsandBytes 简介
BitsandBytes 是一个标准的低比特加速器,已被大多数大型语言模型如 LLama、Phi 等采用。lllyasviel 宣布,他是第一个在实际软件中实现 BitsandBytes 低比特加速用于图像扩散的人,如果你正在写一篇论文/调查,并希望对图像扩散模型进行一些nf4/fp4实验,你可以引用这个页面
Flux 检查点支持
目前支持的 Flux 检查点包括:
- flux1-dev-bnb-nf4-v2.safetensors:包含主要模型在 NF4 格式的完整检查点。推荐使用。
- flux1-dev-fp8.safetensors:包含主要模型在 FP8 格式的完整检查点。
NF4 与 FP8 的比较
NF4 的优势
- 速度:NF4 在 6GB/8GB/12GB 设备上比 FP8 快得多,速度提升约为 1.3x 到 2.5x(pytorch 2.4, cuda 12.4)或 1.3x 到 4x(pytorch 2.1, cuda 12.1)。
- 大小:NF4 权重的大小约为 FP8 的一半。
- 精度:NF4 在数值精度上可能优于 FP8,并且在大多数情况下确实如此。
- 动态范围:NF4 在动态范围上技术上保证优于 FP8。
使用 Flux
设备支持
- 如果你的设备支持 CUDA 11.7 以上,可以使用 NF4。大多数 RTX 3XXX/4XXX GPU 支持此功能。
- 如果你的设备是 GTX 10XX/20XX GPU,则可能不支持 NF4,请下载 flux1-dev-fp8.safetensors。
UI 设置
在 Forge 的 UI 中,你可以选择强制加载权重类型。大多数情况下,你可以设置为 Auto,它会使用下载检查点中的默认精度。
GPU Weights
更大的 GPU 权重意味着您可以获得更快的速度。但是,如果该值太大,您将回退到一些 GPU 问题,并且速度将降低到 10 倍左右。
较小的 GPU 权重意味着您的速度较慢。但是,您将能够漫射更大的图像,因为现在您有更多的可用 VRAM。
Swap Method
queue/队列:您将一个层加载到 GPU,然后计算,然后加载另一个层,然后计算,…就像它是一个队列一样。
ASYNC:你会有两个工人。一个工作线程始终计算层。一个工作线程总是将图层加载到 GPU。他们同时工作。
一些实验报告说,ASYNC 方法比 Queue 快 30%。但是,有一个缺点,即一个工作线程可能会错误地将太多层移动到 GPU,从而使另一个工作线程没有足够的 GPU 内存来计算。在这种情况下,速度会突然慢 10 倍。
Swap Location
是将模型拆分为两个部分。一部分到GPU,另一部分到“交换/Shared”位置。
如果选择 CPU 作为交换位置,则模型将加载到 CPU 内存和 GPU:
如果选择“共享”作为交换位置,则模型将加载到 GPU 和共享内存:
在较新的设备上,“共享”卸载/交换比 CPU 交换快约 15%。但是,其他一些设备在使用“共享”交换时报告崩溃。了解以上信息后,根据自己硬件配置来设置!
理论推理速度上限
Forge 的默认预设已经非常快,但你可以通过调整 UI 来进一步提高速度,达到理论上的推理速度上限。
蒸馏 CFG 引导
Flux-dev 是一个蒸馏模型,推荐设置 CFG=1 并不使用负面提示。使用“蒸馏 CFG 引导”,默认值为 3.5。
完整性检查
最后,使用以下设置进行完整性检查:
- 提示:Astronaut in a jungle, cold color palette, muted colors, very detailed, sharp focus
- 步骤:20, 采样器:Euler, 调度类型:Simple, CFG 比例:1, 蒸馏 CFG 比例:3.5, 种子:12345, 尺寸:896×1152, 模型:flux1-dev-bnb-nf4-v2
确保你得到类似的图像。
总结
BitsandBytes 和 Flux 的更新为图像扩散模型带来了显著的性能提升和精度改进。通过合理配置和使用,用户可以在不同设备上实现最佳的推理速度和图像质量。
我认为:这次更新不仅展示了技术的前沿进展,也为广大用户提供了更高效、更精确的工具,这将推动图像处理和人工智能领域的进一步发展。
, BitsandBytes, Flux, 图像扩散, 低比特加速器, 推理速度, 精度改进, 蒸馏模型, 设备支持, 理论速度上限, 完整性检查