🚀 DFloat11压缩模型:black-forest-labs/FLUX.1-schnell
这是使用我们自定义的 DFloat11 格式对 black-forest-labs/FLUX.1-schnell
进行 无损压缩 的版本。该压缩模型的输出与原始BFloat16模型 逐位相同,同时将GPU内存消耗降低了约 30%。
✨ 主要特性
- 无损压缩:压缩过程完全无损,保证模型输出与原始模型逐位相同。
- 高效的GPU处理:无需CPU解压缩或主机 - 设备数据传输,所有操作都在GPU上完成。
- 节省内存:减少约30%的GPU内存消耗。
- 快速推理:比CPU卸载方法快得多,适用于内存受限的环境。
📦 安装指南
- 安装DFloat11的pip包(会自动安装CUDA内核;需要支持CUDA的GPU并已安装PyTorch):
pip install dfloat11[cuda12]
💻 使用示例
基础用法
import torch
from diffusers import FluxPipeline
from dfloat11 import DFloat11Model
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()
DFloat11Model.from_pretrained('DFloat11/FLUX.1-schnell-DF11', device='cpu', bfloat16_model=pipe.transformer)
prompt = "A futuristic cityscape at sunset, with flying cars, neon lights, and reflective water canals"
image = pipe(
prompt,
guidance_scale=0.0,
num_inference_steps=4,
max_sequence_length=256,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]
image.save("flux-schnell.png")
📚 详细文档
工作原理
DFloat11使用BFloat16指数位的 霍夫曼编码 来压缩模型权重,并结合 硬件感知的算法设计,实现直接在GPU上进行高效的实时解压缩。在推理过程中,权重在GPU内存中保持压缩状态,并在 矩阵乘法之前进行解压缩,使用后 立即丢弃 以最小化内存占用。
关键优势
- 无需CPU解压缩或主机 - 设备数据传输:所有操作都完全在GPU上处理。
- DFloat11比CPU卸载方法快得多:能够在内存受限的环境中进行实际部署。
- 压缩完全无损:保证模型的输出与原始模型 逐位相同。
更多信息
🔧 技术细节
属性 |
详情 |
模型类型 |
基于black-forest-labs/FLUX.1-schnell 的无损压缩版本 |
训练数据 |
未提及 |
压缩格式 |
DFloat11 |
压缩方法 |
霍夫曼编码结合硬件感知算法 |
内存节省 |
约30%的GPU内存消耗 |
输出一致性 |
与原始BFloat16模型逐位相同 |