🚀 DFloat11压缩模型:black-forest-labs/FLUX.1-Fill-dev
这是使用自定义的 DFloat11 格式对 black-forest-labs/FLUX.1-Fill-dev
进行 无损压缩 后的版本。该压缩模型的输出与原始的 BFloat16 模型 逐位相同,同时可将 GPU 内存消耗减少约 30%。
✨ 主要特性
- 模型类型:基于 DFloat11 格式的无损压缩文本到图像模型。
- 压缩特性:使用 BFloat16 指数位的霍夫曼编码进行压缩,结合硬件感知算法设计,可在 GPU 上直接进行高效的即时解压缩。
- 性能优势:无需 CPU 解压缩或主机 - 设备数据传输,所有操作均在 GPU 上完成;比 CPU 卸载方法快得多,可在内存受限环境中实际部署;压缩完全无损,保证模型输出与原始模型逐位相同。
属性 |
详情 |
模型类型 |
基于 DFloat11 格式的无损压缩文本到图像模型 |
训练数据 |
未提及 |
📦 安装指南
- 安装或升级 DFloat11 的 pip 包(会自动安装 CUDA 内核;需要支持 CUDA 的 GPU 并已安装 PyTorch):
pip install -U dfloat11[cuda12]
- 安装或升级 diffusers 包:
pip install -U diffusers
💻 使用示例
基础用法
import torch
from diffusers import FluxFillPipeline
from diffusers.utils import load_image
from dfloat11 import DFloat11Model
image = load_image("https://huggingface.co/datasets/diffusers/diffusers-images-docs/resolve/main/cup.png")
mask = load_image("https://huggingface.co/datasets/diffusers/diffusers-images-docs/resolve/main/cup_mask.png")
pipe = FluxFillPipeline.from_pretrained("black-forest-labs/FLUX.1-Fill-dev", torch_dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()
DFloat11Model.from_pretrained('DFloat11/FLUX.1-Fill-dev-DF11', device='cpu', bfloat16_model=pipe.transformer)
image = pipe(
prompt="a white paper cup",
image=image,
mask_image=mask,
height=1632,
width=1232,
guidance_scale=30,
num_inference_steps=50,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]
image.save(f"flux-fill-dev.png")
📚 详细文档
工作原理
DFloat11 通过对 BFloat16 指数位进行 霍夫曼编码 来压缩模型权重,并结合 硬件感知算法设计,实现了在 GPU 上直接进行高效的即时解压缩。在推理过程中,权重在 GPU 内存中保持压缩状态,并在 矩阵乘法之前进行解压缩,使用后 立即丢弃 以最小化内存占用。
更多学习资源