buildborderless/FLUX.MF-lightning_8step-uncen
buildborderless
Texto a imagen
Modelo de generación de imágenes a partir de texto basado en FLUX, creado como una fusión de black-forest-labs/FLUX.1-dev y FLUX.1-schnell, con LoRAs adicionales. Está orientado a generación y evaluación de datasets dentro del proyecto OpenSight, y recomienda producir imágenes en unas 6 a 8 etapas para acelerar la inferencia frente a FLUX.1-dev completo.
Como usar
Instalación y uso con Diffusers:
pip install -U diffusers transformers accelerate
import torch
from diffusers import DiffusionPipeline
# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained(
"buildborderless/FLUX.MF-lightning_8step-uncen",
dtype=torch.bfloat16,
device_map="cuda"
)
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(prompt).images[0]
Código de fusión sub-memory-efficient incluido en la ficha:
from diffusers import FluxTransformer2DModel
from huggingface_hub import snapshot_download
from accelerate import init_empty_weights
from diffusers.models.model_loading_utils import load_model_dict_into_meta
import safetensors.torch
import glob
import torch
with init_empty_weights():
config = FluxTransformer2DModel.load_config("black-forest-labs/FLUX.1-dev", subfolder="transformer")
model = FluxTransformer2DModel.from_config(config)
dev_ckpt = snapshot_download(repo_id="black-forest-labs/FLUX.1-dev", allow_patterns="transformer/*")
schnell_ckpt = snapshot_download(repo_id="black-forest-labs/FLUX.1-schnell", allow_patterns="transformer/*")
dev_shards = sorted(glob.glob(f"{dev_ckpt}/transformer/*.safetensors"))
schnell_shards = sorted(glob.glob(f"{schnell_ckpt}/transformer/*.safetensors"))
merged_state_dict = {}
guidance_state_dict = {}
for i in range(len((dev_shards))):
state_dict_dev_temp = safetensors.torch.load_file(dev_shards[i])
state_dict_schnell_temp = safetensors.torch.load_file(schnell_shards[i])
keys = list(state_dict_dev_temp.keys())
for k in keys:
if "guidance" not in k:
merged_state_dict[k] = (state_dict_dev_temp.pop(k) + state_dict_schnell_temp.pop(k)) / 2
else:
guidance_state_dict[k] = state_dict_dev_temp.pop(k)
if len(state_dict_dev_temp) > 0:
raise ValueError(f"There should not be any residue but got: {list(state_dict_dev_temp.keys())}.")
if len(state_dict_schnell_temp) > 0:
raise ValueError(f"There should not be any residue but got: {list(state_dict_dev_temp.keys())}.")
merged_state_dict.update(guidance_state_dict)
load_model_dict_into_meta(model, merged_state_dict)
model.to(torch.bfloat16).save_pretrained("merged-flux")
Funcionalidades
- Generación texto-a-imagen con Diffusers y FluxPipeline.
- Pesos en formato Safetensors.
- Modelo fusionado a partir de FLUX.1-dev y FLUX.1-schnell.
- Optimizado para inferencia rápida, con 6 a 8 pasos recomendados.
- Compatible con herramientas locales como Draw Things y DiffusionBee.
- Licencia flux-1-dev-non-commercial-license; requiere revisar las licencias base antes de uso comercial.
- El repositorio indica que algunas LoRAs fusionadas pueden ser NSFW y recomienda uso responsable.
- Existe una versión más reciente: buildborderless/FLUX.MF-8step_lightning_v2.
Casos de uso
- Generar imágenes sintéticas a partir de prompts textuales con menor número de pasos de inferencia.
- Crear datasets visuales para evaluación o entrenamiento dentro de flujos de investigación.
- Probar variantes rápidas de FLUX fusionadas con LoRAs en entornos locales o notebooks.
- Experimentar con generación de retratos, escenas estilizadas y composición visual usando Diffusers.