- Krea 2 es un modelo fundacional de generación de imágenes que prioriza la exploración creativa por encima de un único default pulido, y publica los pesos del modelo y la inferencia bajo una licencia permisiva
- El proceso de entrenamiento sigue la secuencia pretraining → midtraining → SFT → preference optimization → RL, y la curaduría de datos, los captions, la expansión de prompts y las referencias de estilo refinan gradualmente la distribución de salida
- La arquitectura, basada en una familia DiT simple, combina GQA, gated sigmoid attention, SwiGLU, Qwen 3 VL, Qwen Image VAE, FLUX 2 VAE y otros componentes para equilibrar estabilidad y eficiencia
- Krea 2 entró en el top 10 del Artificial Analysis leaderboard en la categoría text-to-image y quedó en 2.º lugar entre los modelos de laboratorios independientes
- Para el entrenamiento a gran escala, construyeron un sistema basado en PyTorch, FSDP2, paralelización de tensores, Kubernetes, Virtual Kubelet, Weka y PostgreSQL; como próximos pasos evalúan MoE, sparse attention, native 2K–4K, NVFP4 y Muon scaling
Un modelo fundacional de imágenes orientado a la exploración creativa
- Krea 2 es una serie de modelos fundacionales de generación de imágenes cuyo objetivo es una amplia diversidad estética y el control creativo por parte del usuario
- Los materiales publicados están disponibles en Release page, Hugging Face weights/license, GitHub code/license y Krea Image tool
- Los pesos del modelo y la inferencia se publican bajo una licencia permisiva
- Krea considera que los modelos de imágenes basados en diffusion y flow-matching han avanzado en imágenes de alta resolución, fotorrealismo, estructura estable, renderizado de texto denso, amplio conocimiento del mundo y cumplimiento detallado de prompts, pero que muchos sistemas convergen hacia una estética predeterminada estrecha
- Krea 2 apunta a ser un medio generativo que permita explorar múltiples estilos, atmósferas, composiciones y direcciones visuales, en lugar de optimizar un único default pulido
- Entró en el top 10 del Artificial Analysis leaderboard en la categoría text-to-image y quedó en 2.º lugar entre los modelos de laboratorios independientes
Curaduría de datos y estrategia de captions
- El equipo de Krea construyó desde cero una infraestructura de datos a gran escala y un framework de entrenamiento distribuido para crear un dataset de pretraining con amplio conocimiento del mundo y cobertura de estilos
- Considera que un “buen data mix” necesita no solo imágenes de alta calidad, sino también diversidad y una amplia cobertura de dominios
- El filtrado basado en aesthetic-score e image-quality-assessment puede generar sesgos implícitos
- El motion blur o la softness pueden ser una elección artística intencional, pero podrían evaluarse con una puntuación baja como blurry image
- Si el caption describe la imagen con precisión, incluso una imagen no deseable puede ayudar al aprendizaje downstream
- En el dataset de pretraining filtraron duplicated samples, conceptos sobrerrepresentados, muestras en las que el VLM no captaba elementos importantes, muestras que causaban undesired biases y artifacts, muestras de alta visual complexity difíciles de modelar de forma estable en low resolution, y AI-generated samples
- En el mix de pretraining de Krea 2 no se usan AI-generated images
- Synthetic data y distillation pueden convertirse en un shortcut para adquirir capacidades
- Consideran que incluso una pequeña cantidad de AI-generated images introduce sesgos en la distribución de salida del modelo y, en la práctica, fija el upper bound de la calidad del modelo
- Para filtrarlas diseñaron classifiers internos
- Los captions se construyen con un enfoque multi-stage
- Ejecutan un OCR model sobre la target image para extraer el visible text
- Proporcionan el resultado de OCR y los metadata a un captioning model para generar un enriched caption que incluye el extracted text y world knowledge
- Reestructuran el context-rich long-form caption con un LLM más barato en distintas longitudes y formatos, exponiendo el modelo a múltiples prompt styles
- Los long prompts proporcionaron dense supervision, lo que produjo una convergencia más rápida y menor training loss, y también mantuvieron exposición a short/medium prompts para el uso downstream
Datos de entrenamiento por resolución y midtraining
- Los datos de pretraining pasan por etapas de resolución de 256px, 512px y 1024px
- Se asigna la mayoría de los FLOPs a la etapa de baja resolución para aprender de forma eficiente las capacidades centrales
- Luego se aumenta la resolución para dotar al modelo de capacidad de generación de alta fidelidad
- El pretraining de baja resolución aprende la alineación básica texto-imagen y la estructura
- El dataset de baja resolución tiene una escala de billions of images, por lo que depende mucho de filtros de bajo costo basados en CPU
- Se eliminan imágenes no aptas con filtros de archivos dañados, resolución y relación de aspecto
- Se eliminan imágenes con texturas extremas y patrones de ruido mediante filtros Laplacianos
- Se reducen fondos de color plano y artefactos de borde con entropía RGB, proporciones de píxeles blancos/negros, heurísticas personalizadas y clasificadores internos
- El clasificador interno se construye creando un system prompt para la tarea de filtrado con un large VLM y generando un dataset pseudoetiquetado, para luego entrenar un clasificador pequeño basado en DINOv3 o SigLIP-2
- En la etapa de baja resolución, los modelos de filtrado que requieren cómputo en GPU se mantienen por debajo de 1B parameters por eficiencia
- La deduplicación de baja resolución usa principalmente métodos basados en hashes que combinan md5, phash y colorhash
- El phash básico de 8x8 no consideraba el color, por lo que tenía una tasa alta de falsos positivos
- Para una deduplicación más robusta, se combinan phash de 12x12 y colorhash
- A medida que aumenta la resolución de entrenamiento, se introducen filtros de calidad de imagen y estéticos
- El quality score se usa solo para eliminar imágenes de muy mala calidad, y no para oversampling basado en score
- Con un image-complexity score basado en OCR y text density, se excluyen imágenes en las que es difícil representar de forma significativa texto y contenido a baja resolución
- Se entrenó un sparse autoencoder sobre embeddings de SigLIP-2 para crear un sistema de etiquetado basado en SAE, y se utiliza para filtrar artefactos visuales claros sin un clasificador explícito
- A diferencia del pretraining, el midtraining selecciona explícitamente fuentes de imágenes que ofrecen buena cobertura estilística e imágenes de alta calidad en dominios visuales específicos
- El pretraining es un proceso bottom-up que parte de un pool general
- El midtraining es una curación top-down que primero elige dominios y fuentes
- Es una etapa que conecta suavemente la distribución general de pretraining con la distribución SFT de alta calidad
- Se refuerza la cobertura de conocimiento del mundo con semantic clustering y estrategias basadas en retrieval
- Se realiza hierarchical k-means clustering con FAISS
- Un VLM inspecciona imágenes cercanas al centroide del cluster, le asigna un nombre al cluster y, si es necesario, lo marca con una flag
- Los clusters marcados pasan por revisión humana para eliminar clusters de baja calidad o problemáticos
- Dentro de los leaf clusters restantes, se realiza semantic deduplication con similitud SigLIP
- Para la cobertura de entidades nombradas, se ejecuta PageRank en English Wikipedia con Danker y se conserva el top 90% de artículos según el rank
- Se eliminan temas no representables usando metadata de Wikidata
- Para los cerca de 5 millones de conceptos restantes, se realiza full-text search en los captions de todo el dataset
- Al muestrear, se priorizan imágenes cuyos captions mencionan conceptos raros
Elecciones de arquitectura y ablación
- Krea 2 desarrolló una arquitectura diffusion transformer (DiT) simple pero de buen rendimiento mediante ablaciones.
- La ablación de arquitectura se evaluó en cuatro categorías: stability, performance, efficiency y simplicity.
- Stability considera la reducción de picos de loss/gradient y la estabilidad del entrenamiento.
- Performance considera la velocidad de convergencia y si se mantiene en alta resolución y horizontes largos.
- Efficiency considera si es posible reducir parameter count, FLOPs, memoria y comunicación sin afectar la calidad.
- Simplicity verifica si se puede simplificar el model sin perjudicar las demás categorías.
- Muchas decisiones de arquitectura estuvieron influenciadas por tendencias de adopción en el espacio de los LLM, y se consideró que los kernels y optimizaciones del ecosistema LLM también podían aprovecharse en modelos de difusión.
- Las principales elecciones de la arquitectura final son las siguientes:
- Attention usa GQA with gated sigmoid attention.
- El MLP cambió de GeLU MLP a layers SwiGLU con un expansion factor de 4x.
- Residual mantiene el residual estándar.
- El text encoder usa Qwen 3 VL.
- Modulation cambió de per-block MLP modulation a light modulation with bias.
- El autoencoder usa Qwen Image VAE y FLUX 2 VAE.
- El block design usa un single stream transformer block.
- Norm usa zero-center RMSNorm y QKNorm.
- Positional encoding mantiene 3D Axial RoPE.
- GQA mejora la eficiencia computacional y solo causa una degradación mínima.
- MLA mostró una ligera ganancia sobre GQA, pero no se adoptó por el overhead computacional adicional.
- Gated sigmoid attention no produjo una gran ganancia de performance, pero mostró dinámicas más estables en las curvas de loss y gradient-norm.
- No hubo grandes diferencias de performance entre los diseños single-stream, dual-stream e hybrid-stream; hybrid-stream fue ligeramente mejor, pero se usaron bloques single-stream por simplicidad.
- La per-block MLP modulation de MMDiT puede representar el 20–30% del total parameter count, por lo que Krea 2 la reemplaza por un término de bias ajustable por bloque.
- En los experimentos de timestep conditioning, a 256px, 4–16 timestep tokens fueron suficientes para reemplazar AdaLN, pero a 512px y 1024px rindieron peor que el baseline con AdaLN.
- El positional encoding final es 3D axial RoPE, que asigna head dimensions a frame, height y width.
- Los RoPE indices de los text tokens se establecen en cero.
- Partial RoPE produjo buenos resultados de inferencia zero-shot al escalar de 256px a 512px, pero después del entrenamiento en alta resolución su rendimiento final quedó por debajo del baseline.
- El autoencoder partió con el autoencoder de FLUX.1-dev como baseline y se comparó con Qwen Image VAE, DC-AE, FLUX 2 VAE y un autoencoder interno.
- Se considera que DC-AE impone un límite superior duro a la capacidad de resolver detalles finos debido al error de reconstrucción.
- Qwen Image VAE y FLUX 2 VAE mantienen una excelente calidad de reconstrucción y, al mismo tiempo, ofrecen una convergencia mucho más rápida en el espacio latente.
- En los modelos iniciales se usó Qwen Image autoencoder, y en los modelos más grandes se adoptó FLUX 2 VAE.
- Para el text encoder se compararon T5-XXL, T5Gemma, umT5, Qwen 2.5 VL y Qwen 3 VL, y se usó Qwen 3 VL como text encoder final.
- Los VLM ofrecen un espacio de entrada más rico, que incluye texto e imagen, y una generalización multilingüe más fuerte.
- En lugar de usar solo la última layer de las features del VLM, se introdujo una shallow attention layer que agrega hidden features de todas las layers.
- Se agregaron lightweight bidirectional transformer layers sobre el eje de tokens para reducir el sesgo autoregresivo.
Pipeline de entrenamiento, optimización de preferencias, RL
- El training pipeline tiene una estructura multi-stage inspirada en los modern LLM training pipelines.
- El pretraining establece capacidades básicas como text-image alignment, text rendering, cobertura estilística y consistencia estructural.
- El modelo final se entrena con standard rectified-flow loss y v-parameterization.
- En la first epoch de la stage de 256px, se usa iREPA para acelerar significativamente la convergencia en la early stage y luego se retira.
- En las stages de 256px y 512px, con 8-bit training se observó una mejora de 15–20% en la velocidad de entrenamiento frente al baseline bf16.
- Desde 1024px hasta la final RL stage se usa standard bf16 training.
- En el high-resolution pretraining, es importante adaptar el resolution-dependent timeshift schedule.
- Tanto en training como en inference se usa un shifted logit-normal sampling schedule.
- A medida que aumenta la resolution, el shift se incrementa gradualmente.
- El sweep se aplica solo al training shift, mientras que el inference shift schedule se mantiene constant.
- Durante el pretraining se usa un warmup-stable-decay learning-rate schedule y se aplica PMA.
- PMA logra performance comparable a EMA, evitando al mismo tiempo el significant memory overhead de EMA.
- El optimizer usa AdamW como primary optimizer a lo largo de todo el pipeline.
- Muon convergió más rápido que AdamW en los initial steps, pero en longer horizons mostró menor performance y stability issues.
- Al excluir las first and last linear layers de MMDiT de los Muon parameters y agregar Nesterov momentum, superó de forma consistente al AdamW baseline tanto en low como en high resolution.
- En la pretraining run más reciente no se adoptó Muon por restricciones de tiempo, y se planea adoptarlo en el siguiente pretraining cycle.
- En la SFT stage se curó un small dedicated set de imágenes highly aesthetic.
- El objetivo es sesgar más al modelo hacia direcciones aesthetically desirable.
- Esto ayuda especialmente a resolver high-saturation y texture issues comunes en earlier checkpoints.
- Después de entrenar domain-specific SFT checkpoints, se crea un generalist SFT checkpoint mediante model merging.
- La preference optimization es la primera etapa del post-training stack y consiste en un two-stage pipeline.
- La etapa 1 realiza un initial refinement mediante un large-scale synthetic preference-pair generation pipeline.
- La mayoría de los preference pairs incluyen al menos una on-policy sample.
- La etapa 2 es una calibration stage que usa únicamente human annotations.
- Las human annotations son recopiladas por personal interno familiarizado con las strengths, weaknesses y quirks del modelo.
- En PO, la policy divergence aparece como un fenómeno común.
- Los métodos tipo DPO incentivan aumentar el margen entre la preferred sample likelihood y la dispreferred sample likelihood.
- En varias preference-dataset mixtures, se observó que el modelo logra el objective reduciendo la generation likelihood de ambas samples, pero a tasas distintas.
- La divergence aleja al modelo de la general pretraining distribution y aparece como high-frequency artifacts en la parte final del training.
- Para mitigar esto, se diseñó una variante de DPO llamada STPO.
- RL es la final stage del training pipeline.
- Se usa un método multi-reward estilo GRPO.
- Los reward models consisten en un general aesthetic model, prompt-following reward, text-rendering reward, artifact and structure reward.
- El general aesthetic model se obtiene fine-tuneando un open-source VLM con preference data recopilados en la PO stage.
- El prompt-specific rubric reward descompone el prompt en verifiable requirements y evalúa si la generated image los cumple.
- Esto hace que el prompt following no se reduzca a generic image quality, sino que satisfaga fine-grained prompt constraints.
- Para reducir structural artifacts, se entrena un dedicated artifact reward model.
- Errores como extra fingers, malformed limbs y distorted text son claros para los humanos, pero los general-purpose VLM judges suelen pasarlos por alto.
- Toda la RL stage se entrena sin CFG.
- Mejora rápidamente la conditional model distribution, haciendo que al inicio del training las no-CFG samples sean mucho más cercanas a las guided samples.
- En inference time, CFG puede seguir activándose como un control knob adicional.
- Después de la RL stage se incluye una optional timestep-distillation stage.
- Se evaluaron DMD, DMD2, Decoupled DMD, piFlow y APT, pero se adoptó Trajectory Distribution Matching (TDM).
- TDM aplica DMD a lo largo de los timesteps para realizar distribution matching a nivel de trajectory.
Expansión de prompts y referencia de estilo
- Durante el entrenamiento, el modelo usa captions enriquecidos que describen detalles visuales densos de la imagen, pero las entradas reales de los usuarios son cortas y ambiguas, y también varían mucho en sus hábitos de expresión
- El prompt expander transforma prompts de usuario simples o insuficientes hacia una dirección visual más rica sin sobrescribir la intención del usuario
- Se entrenó sobre un LLM open-source existente con un pipeline de SFT y RL en dos etapas
- Sus objetivos incluyen no solo mejorar la calidad de imagen, sino también la variación creativa y la exploración controlable
- Los datos de SFT se crean generando “user captions” sintéticos a partir de captions largos
- Los user captions sintéticos son prompts cortos, conversacionales y semiinstruccionales que omiten deliberadamente muchos detalles visuales del target caption
- Se crean datos pareados con la forma prompt de usuario subespecificado → caption expandido apto para el modelo
- Para preservar la capacidad de razonamiento, también se generan trazas de pensamiento sintéticas
- También se aplica una pequeña cantidad de targeted distribution shaping
- Se sobremuestrean imágenes visualmente ricas y artísticas
- A los prompts que deben expandirse como descripciones fotorrealistas se les agrega un ligero sesgo hacia el medio fotográfico
- El objetivo no es imponer un house style, sino incluir tanto imágenes expresivas con dirección artística como solicitudes fotorrealistas directas
- El RL del prompt expander apunta a generar expansiones que se aparten de la imitación del target caption, mejoren la calidad de imagen y preserven la intención del usuario
- Se entrena con GDPO y un objetivo multi-reward
- Las recompensas a nivel de imagen miden la calidad y la preferencia de las generaciones resultantes
- Las recompensas verificables a nivel de prompt comprueban si la expansión es fiel a la solicitud original
- Las comprobaciones de seguridad y de restricciones se usan como gates de la recompensa global
- Uno de los modos de falla del prompt expander es el colapso de diversidad
- Cuando las recompensas de imagen dominan, puede aprender un único house style seguro y de alta recompensa
- Se agrega una puntuación de diversidad de embeddings DINOv3 sobre grupos de prompts para recompensar la diversidad visual dentro del grupo junto con la calidad y el alineamiento
- Para preservar la variación, la recompensa de diversidad debe mantenerse activa durante todo el entrenamiento
- El sistema de style-reference se construye sobre el base model
- El usuario puede generar imágenes con texto y, al mismo tiempo, guiar el estilo de salida con una o más imágenes de referencia
- Los objetivos de diseño son la mezcla semántica fluida de múltiples estilos, el control continuo de la intensidad de cada referencia de estilo y una adherencia de estado del arte a estilos complejos
- Uno de los modos de falla comunes era que el contenido y el tema de la imagen de estilo se filtraran a la imagen final
- Se ideó una técnica self-supervised para entrenar el módulo de style-reference y luego se alinearon aún más las salidas con un paso de preference optimization
Infraestructura y operación de entrenamiento distribuido
- El framework de entrenamiento distribuido de Krea se construyó desde cero sobre PyTorch y usa principalmente funcionalidades nativas de
torchcompatibles con la abstracciónDTensory el proyectotorchtitan.- La mayoría de las ejecuciones de preentrenamiento y postentrenamiento usan FSDP2 junto con paralelización de tensores al estilo Megatron-LM.
- En configuraciones con un tamaño de TP mayor que 2, se activa async-TP con el flag
torch.compile, lo que logra una mejora de velocidad moderada frente al TP ingenuo. - Los parámetros del autoencoder se replican en todos los dispositivos, y solo se particionan el text encoder y el backbone MMDiT principal.
- Para las conexiones dentro del nodo se usa NVLinkSharp, y para las conexiones entre nodos, InfiniBand.
- Para mejorar la eficiencia del entrenamiento, se usa un modelo ligeramente más ancho, con una hidden dimension más grande.
- Al aumentar el hidden size, sube la intensidad computacional de cada capa, lo que facilita ocultar la latencia mediante FSDP2 prefetching.
- Reducir la cantidad de capas disminuye el número de operaciones all-gather y reduce-scatter.
- Este cambio redujo significativamente los errores relacionados con NCCL a lo largo de las ejecuciones de preentrenamiento.
- El mayor tamaño de las multiplicaciones de matrices ayuda a compensar el overhead de quantization/dequantization del entrenamiento de 8 bits.
- El centro de la estrategia de optimización es
torch.compile.- Para attention se usan por defecto los kernels más recientes de cuDNN y, según sea necesario, FlexAttention o FlashAttention 3.
- En baja resolución se usa selective activation checkpointing.
- En alta resolución, las activations empiezan a dominar la memoria, por lo que se usa full activation checkpointing.
- El formato base para la carga de datos es Parquet.
- Cada fila almacena una referencia a la imagen, el tamaño de crop/resize, el caption y otros metadata.
- En ejecuciones a gran escala, las filas se mezclan y empaquetan previamente para cargar batches de imágenes con el mismo aspect ratio.
- Gracias al packing, los latents pueden codificarse en una sola pasada del autoencoder.
- En entrenamiento distribuido a gran escala, una falla de una sola GPU o un straggler puede detener toda la ejecución.
- A la escala de Krea, bastó con optimizar el MTBF y el MTTR mediante checkpointing rápido y frecuente, y mejoras en el startup time.
- La investigación se ejecuta en un único clúster de Kubernetes que comparte GPUs con la inferencia de producción.
- Está diseñado para que, cuando la investigación lo necesite, pueda ocupar todo el pool de GPUs.
- Cuando todas las GPUs del clúster se asignan a una ejecución de entrenamiento, la workload de inferencia de Krea migra automáticamente a otro lugar.
- El sistema maneja el failover de tráfico, manteniendo la responsiveness de producción incluso si no quedan GPUs locales.
- Kueue fue un componente clave para el workload scheduling.
- Kueue ofrece un sistema de prioridades de 2 niveles que combina Workload priority y Kubernetes Pod priority.
- Permite el gang-scheduling necesario para el entrenamiento multinodo.
- Las primitivas de colas “borrowing”, “lending” y “reclamation” ayudan a maximizar la utilization.
- Para los componentes que escalan la inferencia en otro lugar cuando todas las GPUs están asignadas a investigación, se usa Virtual Kubelet.
- Cuando un pod se schedulea en un nodo virtual de Kubernetes, el código de Krea transforma la pod specification a una forma compatible con el target provider.
- Si ocurre una falla del lado del provider, reconcilia el estado de ambos lados.
- La recovery se delega a Kubernetes, y el sistema detecta las fallas y las propaga a Kubernetes.
- La observability fue el área de la que más se aprendió en el pretraining a gran escala.
- Sin métricas de subsistemas relacionados con GPU, PCIe, NVLink e InfiniBand, el training a esta escala habría sido imposible.
- Las métricas se recopilan con una combinación de DCGM y un DaemonSet custom.
- Cuando una GPU supera los 75–78 °C, empieza el throttling, baja el throughput total y aumenta la training instability.
DCGM_FI_PROF_PIPE_TENSOR_ACTIVEfue el indicador preferido para determinar si el training se estaba ejecutando como se esperaba.- Las métricas de InfiniBand fueron esenciales para diagnosticar fabric instability, link flapping, errores de paquetes, congestion, symbol errors y disparidades de throughput.
- Escalar el número de GPUs fue difícil.
- Las ejecuciones con menos de 128 GPUs fueron muy estables y a menudo corrían durante días sin problemas.
- Al aumentar el número de GPUs, las ejecuciones empezaron a crashear con mucha más frecuencia.
- A escalas muy grandes, no se logró completar ninguna ejecución que superara las 24 horas.
- Muchos crashes no tenían una causa clara y aparecían como timeouts de NCCL aunque todas las métricas parecieran healthy.
- Uno de los grandes errores iniciales fue adoptar Ceph; luego se migró a Weka.
- Los problemas relacionados con el filesystem y el downtime se redujeron drásticamente, y el performance mejoró en una magnitud similar.
- Weka fue un elemento clave que hizo posible el checkpointing agresivo en el entrenamiento de Krea 2.
- Los checkpoints se completaban en unos 30 segundos, por lo que se perdía poco tiempo en checkpointing.
Data warehouse y cola de trabajos
- Para la recopilación y curaduría de datos de K2, se construyó un sistema personalizado de warehousing y queueing centrado en un clúster de servidores PostgreSQL
- Cada tablet server de Krea se llama “krablet”
- Cada krablet está compuesto por una instancia de Postgres que contiene un data shard y un despliegue de servidores “funnel” que agrupa/encola mutations de forma asíncrona para reducir la lock contention
- Todas las lecturas se proxifican a través de un gran despliegue de servidores “RPC”
- El servidor RPC reemplaza a los connection poolers tradicionales como PgBouncer
- Cada servidor RPC mantiene un connection pool hacia todos los shards de la base de datos
- El sistema krablet escaló hasta 208 TB solo de metadata y puede procesar decenas de miles de transacciones
UPSERTcon contention por segundo- Proporciona una única fuente de verdad para todos los datos de research
- Permite que la capa de stream-processing sea igual a la capa de datos
- Un workflow típico de procesamiento de jobs usa una tabla de Postgres como si fuera una cola
- El worker de OCR busca y procesa filas donde
contains_text IS NULL - El worker de embeddings procesa filas donde
embedding_path IS NULLycontains_text = FALSE - Reclama filas con
FOR UPDATE SKIP LOCKEDy actualiza columnas de la familialast_tried_at
- El worker de OCR busca y procesa filas donde
- El modelo de cola tiene un comportamiento de retry distinto al de Kafka o Ray
- Ante una falla, no descarta la fila ni la envía a una dead-letter queue
- Incluso las filas que fallaron al procesarse se reintentan al final de la cola gracias a la actualización atómica de
last_tried_at - También evita el head-of-line blocking
- La cantidad de workers puede ajustarse dinámicamente
- Los jobs de procesamiento se despliegan con Kubernetes y pueden escalarse hacia arriba o hacia abajo arbitrariamente sin resharding de datos
- Un job puede ejecutarse con 1 worker o con 1000 workers
- Con métricas de escalado de Prometheus, cada parte del pipeline puede hacer autoscaling según el trabajo disponible
- Para comodidad de los investigadores, se ofrece un sistema llamado “pluck”
- Proporciona una API de global map adecuada para usar en notebooks
t.mapdevuelve un handle al que el usuario puede adjuntarse para ver el progreso en vivo- Las UDF se serializan con
cloudpickley se ejecutan en workers remotos
- Para la próxima generación de investigación, están construyendo un sistema sucesor que mantiene krablet y la semántica de colas
FOR UPDATE SKIP LOCKED, pero almacena los datos en un LSM tree sobre object storage- Comparten un enlace de contratación para el equipo de supercomputing / distributed systems que trabajará en esto: https://jobs.ashbyhq.com/krea/ebe94024-eef6-4306-a019-10072ad0f4c9
Próximas direcciones
- En Krea 2 se eligieron una arquitectura y un optimizador relativamente conservadores, priorizando la estabilidad y la velocidad de iteración
- En el próximo ciclo de pretraining, se busca aplicar diseños modernos de transformers de LLM a diffusion transformers
- Las líneas en evaluación incluyen MoE, escalado a resolución nativa 2K–4K mediante sparse attention, pretraining con NVFP4 y escalado con Muon
- Consideran que el modelo actual está undertrained y que un entrenamiento más largo ayudaría
- Actualmente, el pipeline de entrenamiento de Krea 2 termina con una etapa de RL multi-reward
- Krea ya verificó, usando expertos internos, que OPD y MOPD son métodos de distillation eficaces para modelos de difusión
- Esperan compartir más resultados pronto
- Un modelo de difusión en producción requiere una configuración compleja compuesta por varios modelos interdependientes
- El serving de modelos de difusión latente normalmente requiere un autoencoder, un diffusion transformer, un text encoder y un modelo de prompt expansion
- Según el stack, pueden agregarse módulos adicionales como un modelo de style-reference o un upscaler
- Mantener múltiples componentes que deben entrenarse de forma independiente pero que tienen interdependencias dificulta la coordinación del equipo de investigación
- Krea planea simplificar la arquitectura en el próximo ciclo de pretraining e integrar varios componentes bajo un único modelo
- Krea 2 se enfocó principalmente en la generación de imágenes para la exploración creativa, y a futuro busca ampliar sus capacidades hacia edición robusta, referencias de imagen y generación nativa en 2K/4K
- Consideran que el prompting tradicional en lenguaje natural ya no es suficiente para cubrir todo el rango de requests de los usuarios
- En los prompts de usuarios se observan diversos estilos de prompting, como lenguaje natural, tags, JSON detallado, bounding boxes, instrucciones, guías visuales y Markdown
- El prompt expansion puede resolver parte de esto, pero también consideran que la capacidad de que el modelo entienda estos prompts de forma nativa debe ser una capability central
1 comentarios
Opiniones de Hacker News
Publicaron los pesos de un modelo de texto a imagen reciente, junto con un artículo que cubre con bastante profundidad el proceso de entrenamiento.
También incluye muchos detalles que normalmente no se explican tanto, como el entrenamiento real y la infraestructura de datos, así que parece haber contenido interesante para quienes sigan estos temas.
Como alguien que viene siguiendo este campo, es realmente interesante leer sobre los experimentos y el esfuerzo detrás del producto final; si además publicaran algunas de las herramientas de fine-tuning para que la comunidad pueda experimentar, creo que se podría llevar aún más lejos el potencial del modelo.
Me ha frustrado la tendencia de los modelos principales a excluir con mucha fuerza este tipo de contenido por motivos de seguridad, incluso cuando es legal.
El Flux.1 Krea original ya estaba en mi sitio de benchmarks GenAI Showdown desde julio del año pasado, y en este campo eso se siente como hace muchísimo tiempo. También tengo ganas de probar bien el modelo nuevo.
Soy Diego Rodriguez, cofundador y CTO de Krea. Esta vez publicamos los pesos y un informe técnico bastante sustancioso para los estándares actuales de la industria.
El informe cubre en detalle la curación/captioning de datos, la arquitectura del modelo, el post-entrenamiento, el pipeline de aprendizaje por refuerzo, la expansión de prompts, las referencias de estilo y la infraestructura.
Los pesos se dividen en dos variantes: Krea 2 Turbo es un modelo destilado en guía y timesteps para acelerar la inferencia, y Krea 2 RAW es un modelo pensado para hackear y hacer fine-tuning.
Creo que la comunidad de LLM abiertos hace bien en publicar modelos en varios tamaños y en distintas etapas del pipeline de entrenamiento; esta vez publicamos checkpoints tanto de etapas intermedias de entrenamiento como de post-entrenamiento. Es algo raro en imagen y multimedia, así que estamos orgullosos de ello.
Según el benchmark de texto a imagen de Artificial Analysis, la calidad de imagen está en un nivel similar a Nano Banana: https://artificialanalysis.ai/image/leaderboard/text-to-imag...
También lo acompañamos con una licencia permisiva para personas y pequeñas empresas.
Presentación del lanzamiento OSS: https://www.krea.ai/krea-2-open-source / Modelo en Huggingface: https://www.krea.ai/krea-2/huggingface / Repositorio de GitHub: https://www.krea.ai/krea-2/github / AMA en Reddit: https://www.reddit.com/r/StableDiffusion/comments/1udnm0a/we... / Informe técnico: https://www.krea.ai/blog/krea-2-technical-report
Ya salieron los resultados y, en especial, el modelo Turbo es realmente impresionante considerando lo rápido que es a 8 pasos.
Entre los modelos que se pueden hostear localmente, el único que lo superó fue Ideogram 4, pero ese es muchísimo más lento: es la diferencia entre minutos y segundos.
Se cayó en mis “model killers” habituales, como una estrella de nueve puntas, Count Rugen o una Tierra plana con demasiada gente, pero en general rindió por encima de su categoría: obtuvo la mejor puntuación entre los modelos hosteables localmente y, en el total, quedó justo debajo de Ideogram 4, pasando 6 de 15 pruebas.
Enlace de GenAI comparando solo modelos hosteables localmente: https://genai-showdown.specr.net/?models=fd,hd,kd,qi,f2d,zt,...
Me parece divertido que, como método de prueba, se haya llegado a ítems tan extrañamente específicos.
Me alegra que haya más modelos de pesos abiertos, y también me gusta mucho que el artículo sea profundo.
También me gusta el enfoque de mantener amplio el manifold para poder generar varios estilos. Me parece mejor que ajustar el modelo solo para que encaje con unos pocos presets de estilo.
Dicho eso, modelos avanzados de imagen a imagen o de composición tipo agente, como Nano Banana 2 o Images 2.0, ya vienen muy fuertes, así que a estas alturas también se siente un poco como “pelear la guerra anterior”.
Tengo bastantes dudas de que la estrategia de insertar Qwen 3 VL de forma cruzada pueda acercarse a ese nivel de imagen a imagen; y una imagen a imagen robusta es muy importante para edición, ajuste, consistencia de personajes y la generalización de lo que ahora se usa para transferencia de estilo. La parte de transferencia de estilo también parece poco explicada.
Llegar a ese nivel no será fácil, pero creo que el próximo frente de los modelos de imagen está claramente ahí. Ideogram parece estar construyendo en esa dirección, pero todavía no he visto mucho de eso en el mundo de pesos abiertos.
Los flujos de trabajo tipo agente son compatibles con Krea 2, así que no entiendo bien esa parte. Si te refieres a un modelo de edición, eso también está en preparación.
En benchmarks de texto a imagen está a un nivel parecido; puedes ver el enlace de Artificial Analysis que dejé en el comentario de arriba.
No puedes volver a entrenar Nano Banana o ChatGPT para que entiendan la marca de un cliente, y esa es precisamente la queja que nuestros clientes plantean una y otra vez. Además, al ser open source, no es fácil hacer una comparación 1:1.
También me parece ambiguo decir que no se explicó la transferencia de estilo. En la página aparece “reference” 11 veces y, al leerla, vi que la trata bastante.
Se agradece que Krea permita descargar los pesos del modelo, pero con cláusulas como estas en la licencia, no es open source: https://huggingface.co/krea/Krea-2-Raw/blob/main/LICENSE.pdf
El uso comercial solo está permitido si los ingresos anuales brutos de toda la empresa en los últimos 12 meses son inferiores a 1 millón de dólares; por encima de eso, se requiere una licencia enterprise aparte
Además, no se pueden usar los modelos de Krea, sus derivados ni sus outputs en violación de las leyes, contratos o políticas de uso aceptable aplicables, y al distribuirlos se deben implementar filtros de contenido razonables para detectar, prevenir y mitigar la generación de contenido prohibido, dañino o ilegal
También hay que cumplir con la política de uso aceptable, y la página de la política https://www.krea.ai/krea-2-use-policy incluye cláusulas que prohíben eludir las salvaguardas, restricciones de uso, filtros de contenido, atribución de procedencia y marcas de agua implementados por Krea o por los distribuidores
Parece que Turbo ya tiene una conversión GGUF: https://huggingface.co/Abiray/Krea-2-Turbo-GGUF
Hay un punto interesante en la página de empleos
A quienes sepan cómo era Mellanox a la antigua quizá les resulte de su gusto: https://jobs.ashbyhq.com/krea/ebe94024-eef6-4306-a019-10072a...
Es un buen modelo, pero da un poco de pena que use Qwen VAE
Después de probar ambos, diría que Flux VAE tiene una ligera ventaja al aprender texturas realistas, aunque la diferencia no es tan grande como uno pensaría. Qwen VAE también fue muy bueno en general en experimentos de ablación y fuerte para aprender a generar diversos estilos
Todavía no he tenido tiempo de probarlo personalmente
Tengo ganas de probar Krea 2. Uso Z-Image Turbo todos los días y reemplazó mi suscripción a fotos de stock para imágenes realistas e ilustraciones
Me pregunto cuánto habrá costado el entrenamiento
El costo de entrenamiento es difícil de estimar bien porque se usó un clúster compartido de Kubernetes donde también corren cargas de inferencia e investigación
Me da curiosidad qué usan para self-hostear modelos como este
Probé ollama y open-webui, pero no soportaban generación de imágenes en absoluto
Si te trabas, puedes empezar simplemente copiando y pegando primero un workflow
https://github.com/LostRuins/koboldcpp