Chroma1-HD

lodestones
Texto a imagen

Modelo fundacional de texto a imagen de 8.9B parámetros basado en FLUX.1-schnell. Está publicado con licencia Apache 2.0 y fue diseñado como modelo base para ajuste fino, con una base neutral orientada a desarrolladores, investigadores y artistas que quieran crear modelos especializados.

Como usar

Instalación básica:

pip install transformers diffusers sentencepiece accelerate

Uso con Diffusers:

import torch
from diffusers import ChromaPipeline

pipe = ChromaPipeline.from_pretrained("lodestones/Chroma1-HD", torch_dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()

prompt = [
    "A high-fashion close-up portrait of a blonde woman in clear sunglasses. The image uses a bold teal and red color split for dramatic lighting. The background is a simple teal-green. The photo is sharp and well-composed, and is designed for viewing with anaglyph 3D glasses for optimal effect. It looks professionally done."
]
negative_prompt = ["low quality, ugly, unfinished, out of focus, deformed, disfigure, blurry, smudged, restricted palette, flat colors"]

image = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    generator=torch.Generator("cpu").manual_seed(433),
    num_inference_steps=40,
    guidance_scale=3.0,
    num_images_per_prompt=1,
).images[0]

image.save("chroma.png")

Inferencia cuantizada con gemlite:

import torch
from diffusers import ChromaPipeline

pipe = ChromaPipeline.from_pretrained("lodestones/Chroma1-HD", torch_dtype=torch.float16)
#pipe.enable_model_cpu_offload()

import gemlite

device = 'cuda:0'
processor = gemlite.helper.A8W8_int8_dynamic
#processor = gemlite.helper.A8W8_fp8_dynamic
#processor = gemlite.helper.A16W4_MXFP

for name, module in pipe.transformer.named_modules():
    module.name = name

def patch_linearlayers(model, fct):
    for name, layer in model.named_children():
        if isinstance(layer, torch.nn.Linear):
            setattr(model, name, fct(layer, name))
        else:
            patch_linearlayers(layer, fct)

def patch_linear_to_gemlite(layer, name):
    layer = layer.to(device, non_blocking=True)
    try:
        return processor(device=device).from_linear(layer)
    except Exception as exception:
        print('Skipping gemlite conversion for: ' + str(layer.name), exception)
        return layer

patch_linearlayers(pipe.transformer, patch_linear_to_gemlite)
torch.cuda.synchronize()
torch.cuda.empty_cache()
pipe.to(device)
pipe.transformer.forward = torch.compile(pipe.transformer.forward, fullgraph=True)
pipe.vae.forward = torch.compile(pipe.vae.forward, fullgraph=True)
#pipe.set_progress_bar_config(disable=True)

prompt = [
    "A high-fashion close-up portrait of a blonde woman in clear sunglasses. The image uses a bold teal and red color split for dramatic lighting. The background is a simple teal-green. The photo is sharp and well-composed, and is designed for viewing with anaglyph 3D glasses for optimal effect. It looks professionally done."
]
negative_prompt = ["low quality, ugly, unfinished, out of focus, deformed, disfigure, blurry, smudged, restricted palette, flat colors"]

import time
for _ in range(3):
    t_start = time.time()
    image = pipe(
        prompt=prompt,
        negative_prompt=negative_prompt,
        generator=torch.Generator("cpu").manual_seed(433),
        num_inference_steps=40,
        guidance_scale=3.0,
        num_images_per_prompt=1,
    ).images[0]
    t_end = time.time()
    print(f"Took: {t_end - t_start} secs.")

image.save("chroma.png")

Uso en ComfyUI:

Requisitos:
- Instalación funcional de ComfyUI
- Checkpoint de Chroma
- Codificador de texto T5 XXL
- FLUX VAE
- JSON del workflow de Chroma

Configuración:
- Coloca T5_xxl en ComfyUI/models/clip
- Coloca FLUX VAE en ComfyUI/models/vae
- Coloca el checkpoint de Chroma en ComfyUI/models/diffusion_models
- Carga el workflow de Chroma en ComfyUI y ejecútalo

Funcionalidades

8.9B parámetros sobre la arquitectura FLUX.1-schnell, optimizados desde un diseño previo de 12B.
Pensado específicamente como checkpoint base para finetuning de estilos, conceptos o personajes.
Licencia Apache 2.0, con enfoque abierto y reutilizable para modificar, redistribuir y extender.
Entrenado con 5 millones de muestras seleccionadas de un pool de 20 millones, incluyendo estilos artísticos, fotográficos y nicho.
Incluye cambios arquitectónicos concretos: reducción de la capa de codificación temporal, enmascarado de padding en T5 y distribución personalizada de timesteps para mejorar estabilidad y fidelidad.
Soporta inferencia con Diffusers, opciones cuantizadas con gemlite y flujos avanzados en ComfyUI.

Casos de uso

Ajuste fino en estilos visuales específicos, conceptos o personajes.
Investigación sobre comportamiento, alineación y seguridad en modelos generativos de imagen.
Base fundacional dentro de sistemas de IA más amplios que requieran generación de imágenes.
Workflows avanzados de generación visual en Diffusers o ComfyUI con necesidad de personalización técnica.