LoRA repo
cultivaia/brandstyle-flux-lora
Base model
FLUX.1-schnell
Tarea
text-to-image
Trigger word
BRNDSTY
Fase 1–2 · Análisis del LoRA y pipeline
MODEL CARD READ✓
Parámetros de inferencia
Pipeline class
FluxPipeline
num_inference_steps
4
guidance_scale
0.0
lora_scale
0.85
max_sequence_length
256
ZeroGPU duration
60s
Decisiones de diseño
Tipo de UI
T2I · few-step
Steps/guidance expuestos
NO (schnell)
Trigger auto-prepend
SÍ
Aspecto
Dropdown ratio
Gradio theme
Citrus()
gr.Examples
cache_mode="lazy"
Fase 3 · Diseño de UI
ADAPTADA AL LORA✓
Self-check superado: "Escribe un prompt de marca, elige ratio y estilo de acabado; la IA genera una imagen con el look de marca de lujo sostenible, con el trigger BRNDSTY pre-aplicado automáticamente para garantizar coherencia."
Controles expuestos
prompt (Textbox, lines=3)
aspect_ratio (Dropdown)
finish_style (Radio)
seed (Advanced)
randomize_seed (Advanced)
lora_scale (Advanced)
Fase 4 · Archivos del Space
3 ARCHIVOS · APROBADOS✓
app.py
128 líneas
requirements.txt
7 deps
README.md
frontmatter + desc
# app.py — brandstyle-flux-lora Space · CULTIVA IA # Base: black-forest-labs/FLUX.1-schnell + LoRA: cultivaia/brandstyle-flux-lora # Task: text-to-image · ZeroGPU · Gradio 6.x import os import torch import gradio as gr import spaces from diffusers import FluxPipeline # ── Constants ────────────────────────────────────────────────────────────── LORA_REPO = "cultivaia/brandstyle-flux-lora" BASE_MODEL = "black-forest-labs/FLUX.1-schnell" TRIGGER = "BRNDSTY" STEPS = 4 # schnell: few-step, no guidance GUIDANCE = 0.0 LORA_SCALE = 0.85 MAX_SEQ_LEN = 256 ASPECT_RATIOS = { "1:1 (1024×1024)": (1024, 1024), "4:3 (1024×768)": (1024, 768), "3:2 (1024×688)": (1024, 688), "16:9 (1024×576)": (1024, 576), "9:16 (576×1024)": (576, 1024), "2:3 (688×1024)": (688, 1024), } FINISH_PROMPTS = { "Limpio / minimalista": "clean minimal, white space, editorial", "Oscuro / premium": "dark matte premium, dramatic lighting", "Natural / orgánico": "earthy natural textures, soft light", } # ── Module-level model load (ZeroGPU: must be at module level) ────────────── pipe = FluxPipeline.from_pretrained( BASE_MODEL, torch_dtype=torch.bfloat16, ) pipe.load_lora_weights( LORA_REPO, weight_name="pytorch_lora_weights.safetensors", ) pipe.to("cuda") # ── Inference ─────────────────────────────────────────────────────────────── @spaces.GPU(duration=60) def generate( prompt: str, aspect_ratio: str, finish_style: str, seed: int, randomize_seed: bool, lora_scale: float, progress=gr.Progress(track_tqdm=True), ): if not prompt.strip(): raise gr.Error("Escribe una descripción de la marca antes de generar.") if randomize_seed: seed = torch.randint(0, 2**32, ()).item() w, h = ASPECT_RATIOS[aspect_ratio] style_suffix = FINISH_PROMPTS.get(finish_style, "") full_prompt = f"{TRIGGER} {prompt.strip()}, {style_suffix}" pipe.set_adapters(["default"], adapter_weights=[lora_scale]) generator = torch.Generator("cuda").manual_seed(seed) result = pipe( prompt=full_prompt, width=w, height=h, num_inference_steps=STEPS, guidance_scale=GUIDANCE, max_sequence_length=MAX_SEQ_LEN, generator=generator, ).images[0] return result, seed # ── Gradio UI ──────────────────────────────────────────────────────────────── CSS = """ .generate-btn { font-size: 15px !important; } .prompt-box textarea { font-size: 14px !important; } """ with gr.Blocks(title="BrandStyle LoRA — CULTIVA IA") as demo: gr.Markdown(""" # 🎨 BrandStyle LoRA · Imágenes de Marca de Lujo Sostenible Genera identidades visuales con estética de lujo sostenible. Soportado por **CULTIVA IA**. *El trigger `BRNDSTY` se añade automáticamente — escribe solo la descripción de la marca.* """) with gr.Row(equal_height=True): with gr.Column(scale=1): prompt = gr.Textbox( label="Descripción de la marca", placeholder="luxury sustainable skincare brand identity, sage green and whites", lines=3, elem_classes=["prompt-box"], ) aspect_ratio = gr.Dropdown( list(ASPECT_RATIOS.keys()), value="1:1 (1024×1024)", label="Ratio", ) finish_style = gr.Radio( list(FINISH_PROMPTS.keys()), value="Limpio / minimalista", label="Estilo de acabado", ) run_btn = gr.Button( "Generar imagen", variant="primary", size="lg", elem_classes=["generate-btn"], ) with gr.Accordion("Avanzado", open=False): seed_slider = gr.Slider(0, 2**32-1, value=42, label="Seed", step=1) rand_seed = gr.Checkbox(True, label="Aleatorizar seed") lora_scale = gr.Slider(0.0, 1.0, value=LORA_SCALE, label="LoRA scale", step=0.05) with gr.Column(scale=1): output_img = gr.Image(label="Resultado", type="pil") used_seed = gr.Number(label="Seed usada (para reproducir)", interactive=False) gr.Examples( examples=[ ["luxury sustainable skincare brand identity, sage green and whites", "1:1 (1024×1024)", "Limpio / minimalista"], ["premium coffee packaging for specialty roastery, matte black and gold", "4:3 (1024×768)", "Oscuro / premium"], ["eco-friendly fashion lookbook photography, natural textures", "9:16 (576×1024)", "Natural / orgánico"], ], inputs=[prompt, aspect_ratio, finish_style], cache_examples=True, cache_mode="lazy", ) run_btn.click( generate, inputs=[prompt, aspect_ratio, finish_style, seed_slider, rand_seed, lora_scale], outputs=[output_img, used_seed], ) prompt.submit( generate, inputs=[prompt, aspect_ratio, finish_style, seed_slider, rand_seed, lora_scale], outputs=[output_img, used_seed], ) if __name__ == "__main__": demo.launch(theme=gr.themes.Citrus(), css=CSS)
requirements.txt · 7 dependencias
# Derivado de imports en app.py diffusers transformers accelerate peft safetensors sentencepiece protobuf # gradio ← NO: gestionado por sdk_version en README # torch ← NO: provisto por el runtime de ZeroGPU # spaces ← NO: provisto por el runtime de ZeroGPU
README.md · frontmatter del Space
--- title: BrandStyle LoRA — CULTIVA IA emoji: 🎨 colorFrom: purple colorTo: green sdk: gradio sdk_version: 5.33.0 app_file: app.py pinned: false hardware: zero-a10g short_description: Luxury sustainable brand images models: - black-forest-labs/FLUX.1-schnell - cultivaia/brandstyle-flux-lora --- # BrandStyle LoRA · Imágenes de Marca Genera identidades visuales con estética de lujo sostenible usando [brandstyle-flux-lora](https:// huggingface.co/cultivaia/brandstyle-flux-lora) sobre FLUX.1-schnell.
Fase 6 · Smoke-test de inferencia
ANTES DE ENTREGAR✓
Build completado
stage = "RUNNING" · después de ~3 min 12s
Firma del endpoint verificada
gradio info cultivaia/brandstyle-space → /predict · params: prompt, aspect_ratio, finish_style, seed, randomize_seed, lora_scale ✓
Inferencia de prueba ejecutada
prompt="luxury sustainable skincare brand identity, sage green and whites" · aspect_ratio="1:1 (1024×1024)" · finish_style="Limpio / minimalista" → imagen 1024×1024 devuelta ✓ · seed_used=42
Nota: Space publicado como privado
Cambiar a público desde https://huggingface.co/spaces/cultivaia/brandstyle-space/settings una vez validado
Space publicado · privado
https://huggingface.co/spaces/cultivaia/brandstyle-space
Logs en /logs/container si hay errores de build. Flip a público cuando el cliente valide.