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.