3 puntos por GN⁺ 2024-10-15 | 1 comentarios | Compartir por WhatsApp
  • En Replicate, la velocidad de ejecución de FLUX mejoró mucho, y hasta se publicó el código de optimización, lo que permite revisar la implementación y hacer extensiones personalizadas
  • Según mediciones de extremo a extremo, FLUX.1 [schnell] bajó hasta 0.29 segundos en 512x512·4 steps y 0.72 segundos en 1024x1024·4 steps
  • La mejora de velocidad es el resultado de combinar optimizaciones basadas en flux-fp8-api, torch.compile, los rápidos kernels de atención de CuDNN de Torch nightly y una nueva API HTTP síncrona
  • La cuantización de flux-fp8-api cambia ligeramente la salida, pero el impacto en la calidad fue pequeño, y si hace falta se puede desactivar con go_fast=false
  • Replicate está publicando las mejoras de FLUX y colaborando con el AI Compiler Study Group e investigadores para crear un FLUX rápido y de código abierto

Velocidad de ejecución de FLUX y demo pública

  • En Replicate, la ejecución de los modelos FLUX ahora es más rápida, y la implementación de las optimizaciones se publicó como código abierto
  • Las velocidades de extremo a extremo medidas desde el oeste de Estados Unidos usando el cliente de Python son las siguientes
  • La demo de FLUX.1 [schnell] se ofrece con entrada en tiempo real, y también se puede revisar la app completa y su código fuente

Método de optimización y control de calidad

  • Muchos modelos en Replicate reciben contribuciones de la comunidad, pero los modelos FLUX se mantienen en colaboración con Black Forest Labs
  • Para mejorar la velocidad se aplicaron dos trabajos
    • Se tomó como punto de partida flux-fp8-api de Alex Redden, usando torch.compile y los rápidos kernels de atención de CuDNN de las builds nightly de Torch
    • Se añadió la nueva API HTTP síncrona de Replicate para hacer que todos los modelos de imagen funcionen más rápido
  • La cuantización de flux-fp8-api cambia ligeramente la salida del modelo, pero el impacto en la calidad fue pequeño
    • Hay una herramienta para comparar salidas de miles de prompts en FLUX.1 [schnell] y FLUX.1 [dev], y se pueden ver directamente los resultados de la comparación
    • Si se configura la entrada go_fast en false, esa optimización se puede desactivar
  • Como muchas veces no está claro si los proveedores de modelos aplican optimizaciones que afectan la calidad, Replicate publica su método de optimización y permite que el usuario lo desactive

Código abierto y formas de uso

1 comentarios

 
GN⁺ 2024-10-15
Opiniones de Hacker News
  • Los modelos de texto a imagen se sienten ineficientes. Me pregunto si sería posible y mejor dividirlo en etapas, como texto→grafo de escena→imagen segmentada semánticamente→imagen final
    Cada etapa podría entrenarse por separado y modularizarse, y parece que sería más fácil editar la imagen en lugar de rehacerla por completo con la salida de un nuevo prompt. Así, generar algo como "el objeto x está junto al objeto y, y encima hay un texto que dice foo" sería mucho más fácil, y el estilo artístico o el nivel de realismo podrían quedar a cargo de un modelo de renderizado final separado del seguimiento del prompt
    Se siente parecido a video2video o a los modelos img2img cuadro por cuadro que mejoran la salida de videojuegos
    https://www.theverge.com/2021/5/12/22432945/intel-gta-v-real...
    https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...

    • En general, se ha demostrado varias veces que este tipo de enfoque fracasa una y otra vez con los modelos basados en redes neuronales
      Si puedes entrenar una red neuronal que vaya de a→b y otra que vaya de b→c, normalmente puedes reemplazar esa combinación por una red neuronal más simple que vaya directamente de a→c. Tiene sentido, porque al transformar a en b puede perderse información. Una sola red neuronal garantiza que la información relevante de a necesaria para producir c se transmita hacia las capas superiores
    • Me parece que esto es esencialmente el mismo enfoque que fracasó durante mucho tiempo en áreas como el reconocimiento de imágenes, hasta que al final se resolvió empujando con matrices más grandes y profundas
      Extraer características y razonar como humanos suena plausible, pero al final parece que fue más fácil escalar el reconocimiento de patrones hecho puramente por la computadora
    • Me gustaría que el arte con IA avanzara hacia un enfoque modular. Algo como generar personajes, fondos, estilos y movimientos de cámara en etapas separadas
      No tiene sentido describir todo de una vez y esperar que el resultado te guste
    • Los modelos de difusión hacen básicamente eso. Solo que no hay una frontera clara entre el "grafo de escena" y la "imagen completa"
      Empiezan con ruido y agregan gradualmente más detalles
    • Aquí hay una suposición errónea de que una imagen es una colección de objetos. Las imágenes no necesariamente son eso
      Quiero una foto de pelusa de durazno turquesa congelada
  • Una licencia no comercial no es open source. Si el titular original de los derechos de autor deja de mantenerlo, nadie más puede continuarlo, o tendría que trabajar como esclavo gratis
    El punto central del open source es qué se puede hacer cuando el autor original deja de trabajar en él. El open source le da a cualquiera una licencia para seguir desarrollándolo, y eso obviamente incluye la capacidad de cobrar dinero. Si falta ese aspecto, no debería llamarse open source
    Solo FLUX.1 [schnell] es open source (Apache2); FLUX.1 [dev] tiene una licencia no comercial

    • Existe OpenFLUX.1, que ajusta finamente el modelo FLUX.1-schnell y le quita la destilación. OpenFLUX.1 tiene licencia Apache 2.0
      https://huggingface.co/ostris/OpenFLUX.1/
    • ¿Open source no significa que el código fuente sea visible y se pueda inspeccionar? No conozco ninguna app de código cerrado que te permita ver el código fuente
  • Si quieres probar FLUX.schnell fácilmente, basta con poner el prompt en una URL de Pollinations
    https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
    https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
    https://pollinations.ai/p/Minimalist%20and%20conceptual%20ar...
    La velocidad es realmente sorprendente. Con solo tres GPU L40S generamos 8000 imágenes para usuarios cada 30 minutos. Para que conste, soy de Pollinations

    • Para la mayoría, la expresión "solo" aquí suena bastante cara
  • Lo que más me gusta hacer con Flux es crear imágenes con fondo blanco para Substack. El texto que las acompaña queda excelente y, a través del artwork, también se puede comunicar algo visualmente
    [1]https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...

    • Creo que ese ejemplo muestra muy bien por qué los artistas se enojan. El LLM está imitando claramente el estilo propio de un artista en particular, y como resultado ese artista pierde trabajos pagos
      No sé si tengo una postura clara al respecto. La tecnología sigue avanzando. Aun así, es interesante
    • ¿Podrías compartir el prompt?
  • Flux es uno de los principales candidatos entre los sistemas de generación alojados localmente en cuanto a seguimiento del prompt, pero la poca profundidad de campo que aparece por todas partes es irritantemente difícil de eliminar

    • ¿Parece estar optimizado para imágenes artísticas?
  • Acabo de cancelar mi suscripción a Midjourney. Para el tipo de trabajo que quiero hacer, se siente demasiado atrasado
    También estuve pensando bastante en usar Replicate e Ideogram

    • Últimamente yo también me pregunto si tiene valor más allá de lo novedoso. Me da curiosidad si te pasaste a otras herramientas o si ya no les encuentras valor a ese tipo de herramientas
    • Midjourney tiene una estética muy particular y es flojo con manos, pies y letras, así que nunca lo usé
      Es una locura que, cuando ni siquiera pasó un año desde la caída de Emad, ya haya aparecido un modelo local, open source y mejor. Muestra lo poco profundos que son los fosos defensivos de estas empresas, y gracias a que queman enormes cantidades de efectivo, nosotros salimos ganando
  • FLUX 1.1 ¿alguien sabe con qué se entrenó? En el modelo pro generé casi 100 imágenes con prompts de dos palabras tipo "nombre de archivo de cámara + una palabra simple", y todas parecían fotos del celular de alguien
    Si no hubiera texto, ni se me habría ocurrido pensar que eran imágenes de IA. A veces parecían fotos recortadas, y salían muchas fotos de comida, mesas desordenadas y departamentos
    ¿Scrapearon publicaciones públicas de Facebook, Snapchat, Vkontakte? ¿Compraron imágenes privadas de OneDrive o Dropbox? Si pongo un nombre femenino como segunda palabra, casi siempre se activa el filtro NSFW. Por eso supongo que el set de entrenamiento incluye imágenes bastante privadas
    Véalo por su cuenta. Cuidado con la música de reproducción automática
    people: https://vm.tiktok.com/ZGdeXEhMg/
    food and stuff: https://vm.tiktok.com/ZGdeXEBDK/
    signs: https://vm.tiktok.com/ZGdeXoAgy/
    [edit] Ver estas imágenes resulta incómodo, como si uno estuviera mirando fotos privadas de alguien. En un prompt como "IMG00012.JPG forbid" no hay suficiente información de guía como para describir estas imágenes, así que no pueden venir de otro lado que no sean los datos de entrenamiento
    No creo que FLUX 1.1 pro haya usado un set de entrenamiento fundamentalmente distinto al de modelos públicos anteriores. Pero sí puede ser más vulnerable a este tipo de generación
    La sensación es realmente extraña. Así que vuelvo a preguntar: ¿hay información sobre los datos de entrenamiento usados para estos modelos?

    • No pasa solo con flux; también se puede hacer lo mismo con otros modelos, incluido Stable Diffusion
      Estos dos posts de Reddit tratan un poco esta convención de nombres de archivo
      DSC_0001-9999.JPG - valor predeterminado de Nikon
      DSCF0001-9999.JPG - valor predeterminado de Fujifilm
      IMG_0001-9999.JPG - imagen genérica
      P0001-9999.JPG - valor predeterminado de Panasonic
      CIMG0001-9999.JPG - valor predeterminado de Casio
      PICT0001-9999.JPG - valor predeterminado de Sony
      Photo_0001-9999.JPG - foto de Android
      VID_0001-9999.mp4 - video genérico
      Además, también hice una versión con nombres de archivo de software 3D. Probé todos, y solo algunos funcionaron
      Autodesk Filmbox (FBX): my_model0001-9999.fbx
      Stereolithography (STL): Model0001-9999.stl
      3ds Max: 3ds_Scene0001-9999.max
      Cinema 4D: Project0001-9999.c4d
      Maya (ASCII): Animation0001-9999.ma
      SketchUp: SketchUp0001-9999.skp
      [1]: https://www.reddit.com/r/StableDiffusion/comments/1fxkt3p/co...
      [2]: https://www.reddit.com/r/StableDiffusion/comments/1fxdm1n/i_...
    • Me parece muy poco probable que se deba al dataset de entrenamiento en bruto. Yo tuve el problema contrario. El token "background" introducía un desenfoque fuerte en toda la imagen casi sin importar cómo se usara en el prompt, pero lo interesante es que la interpretación del prompt mejoró mucho
      Junto con una fuerte corrección sobre el texto, es muy probable que hayan hecho mucho tuning para que el modelo prefiera imágenes al estilo flux
      Sea cual sea el proceso que sigan, terminaron haciendo que el modelo sea tan hipersensible que ciertos términos, con solo aparecer, actúan con más fuerza que una LoRA
      Las fotos que mostraste no son particularmente notables en el contexto completo. No hace falta mucho esfuerzo para salirse del formato de imagen por defecto y obtener resultados ultrarrealistas. Personalmente, creo que no se trata tanto de que intenten ocultar el ultrarrealismo, sino de ajustar los valores predeterminados a las imágenes que la gente quiere
    • A mí me pasó lo mismo y fue realmente extraño. Al principio daba buenos resultados, pero después se echó a perder
      No sé por qué todos los comentarios críticos sobre Flux reciben downvotes o flags, y me parece bastante raro
  • Apuntan a una página comparativa afirmando que la calidad es similar, pero para empezar es clarísimo que tiene mucho menos detalle. Peor aún es el ejemplo de "vista frontal de 3/4 de un Corvette 2017 amarillo tomando una curva en una carretera de montaña con vista a un valle verde en un día nublado"
    El modelo original muestra el frente, mientras que la versión rápida muestra la parte trasera del Corvette. Es una imagen completamente distinta. No es similar; es notablemente diferente
    https://flux-quality-comparison.vercel.app/

  • Cada vez que aparece un hilo sobre un modelo de Meta, llueven correcciones diciendo que no es realmente open source
    Entonces con FLUX también hay que ser claros. De los modelos publicados, el único open source es FLUX schnell, y como fue destilado de un modelo propietario es mucho más difícil de manejar
    Irónicamente, desde un punto de vista práctico, los modelos Llama de Meta tienen licencias mucho más permisivas, y además es muy fácil hacerles fine-tuning con frameworks open source de la propia Meta o con varias herramientas de terceros. En cambio, FLUX schnell no
    Creo que la comunidad open source debería concentrar esfuerzos en OpenFLUX o proyectos similares que intenten corregir las restricciones artificiales de Schnell: https://huggingface.co/ostris/OpenFLUX.1

  • Dicen que “agregaron una nueva API HTTP síncrona que hace que todos los modelos de imagen de Replicate sean mucho más rápidos”, pero ¿por qué sería más rápido por ser síncrona? Entré a ver
    https://replicate.com/changelog/2024-10-09-synchronous-api
    “Ahora las bibliotecas cliente y la API hacen que ejecutar modelos sea mucho más rápido, especialmente cuando se devuelven archivos”
    …se agradece, pero ¿qué?
    Comparto la frustración como desarrollador. Si quieren que lo recordemos y nos volvamos defensores, ojalá lo expliquen un poco mejor

    • En el segundo párrafo se explica literalmente la razón. En lugar de devolver una URL que requiere hacer una segunda solicitud para obtener los datos del archivo, devuelven los datos del archivo reales dentro de la respuesta
    • Correcto. Esa parte no estaba clara. Agregaron un párrafo más explicando qué había que hacer antes