3 points par GN⁺ 2024-10-15 | 1 commentaires | Partager sur WhatsApp
  • La vitesse d’exécution de FLUX sur Replicate a fortement augmenté, et le code d’optimisation a aussi été publié, ce qui permet d’en vérifier l’implémentation et de l’étendre de manière personnalisée
  • Selon des mesures de bout en bout, FLUX.1 [schnell] descend à 0,29 s pour 512x512 avec 4 steps, et à 0,72 s pour 1024x1024 avec 4 steps
  • Le gain de vitesse résulte de la combinaison d’optimisations basées sur flux-fp8-api, de torch.compile, du kernel CuDNN attention plus rapide de la version nightly de Torch, et d’une nouvelle API HTTP synchrone
  • La quantification de flux-fp8-api modifie légèrement la sortie, mais son impact sur la qualité est faible ; si nécessaire, elle peut être désactivée avec go_fast=false
  • Replicate publie les améliorations de FLUX et collabore avec l’AI Compiler Study Group ainsi qu’avec des chercheurs pour créer une version rapide et open source de FLUX

Vitesse d’exécution de FLUX et démo publique

  • L’exécution des modèles FLUX sur Replicate est devenue plus rapide, et l’implémentation des optimisations est publiée en open source
  • Les vitesses de bout en bout mesurées depuis l’ouest des États-Unis avec le client Python sont les suivantes
  • La démo de FLUX.1 [schnell] est proposée avec une saisie en temps réel, et il est aussi possible de consulter l’application complète et son code source

Méthodes d’optimisation et contrôle de la qualité

  • Beaucoup de modèles sur Replicate sont maintenus grâce aux contributions de la communauté, mais les modèles FLUX sont maintenus en collaboration avec Black Forest Labs
  • Deux travaux ont été appliqués pour améliorer la vitesse
    • Prendre comme point de départ flux-fp8-api d’Alex Redden, et utiliser torch.compile ainsi que le kernel CuDNN attention rapide des builds nightly de Torch
    • Ajouter la nouvelle API HTTP synchrone de Replicate afin d’accélérer tous les modèles d’images
  • La quantification de flux-fp8-api modifie légèrement les sorties du modèle, mais son impact sur la qualité était faible
    • Un outil permet de comparer les sorties de milliers de prompts sur FLUX.1 [schnell] et FLUX.1 [dev], et vous pouvez consulter directement les résultats de comparaison
    • En définissant l’entrée go_fast sur false, cette optimisation peut être désactivée
  • Comme il est souvent difficile de savoir si un fournisseur de modèles applique des optimisations qui affectent la qualité, Replicate rend ses méthodes d’optimisation publiques et permet aux utilisateurs de les désactiver

Code open source et pistes d’utilisation

1 commentaires

 
GN⁺ 2024-10-15
Avis sur Hacker News
  • Les modèles texte-image me semblent inefficaces. Je me demande s’il serait possible, et préférable, de découper le processus en étapes du type texte → graphe de scène → image segmentée sémantiquement → image finale.
    Chaque étape pourrait être entraînée séparément et modularisée, et il serait sans doute plus facile de modifier l’image plutôt que de tout remplacer en bloc avec la sortie d’un nouveau prompt. Cela rendrait beaucoup plus simple la génération de choses comme « l’objet x est à côté de l’objet y, avec le mot foo écrit au-dessus », tandis que le style artistique ou le niveau de réalisme pourraient être confiés à un modèle de rendu final distinct du respect du prompt.
    Cela me fait penser aux modèles video2video ou img2img image par image qui améliorent le rendu de jeux vidéo.
    https://www.theverge.com/2021/5/12/22432945/intel-gta-v-real...
    https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...

    • En général, on a montré à plusieurs reprises que ce type d’approche échoue avec les modèles à base de réseaux neuronaux.
      Si l’on peut entraîner un réseau neuronal qui va de a vers b, puis un autre de b vers c, on peut généralement remplacer cette combinaison par un réseau neuronal plus simple allant directement de a vers c. C’est logique, car il peut y avoir une perte d’information lors de la transformation de a en b. Un réseau neuronal unique garantit que les informations pertinentes de a nécessaires pour produire c sont transmises aux couches supérieures.
    • J’ai l’impression que c’est fondamentalement la même approche que celle qui a longtemps échoué dans des domaines comme la reconnaissance d’images, avant qu’on finisse par résoudre le problème en poussant simplement avec des matrices plus grandes et plus profondes.
      Extraire des caractéristiques et raisonner comme un humain semble plausible, mais au final il semble qu’il ait été plus facile d’étendre le pattern matching que l’ordinateur fait de manière pure.
    • J’aimerais que l’art par IA adopte une approche modulaire : générer séparément les personnages, l’arrière-plan, le style et les mouvements de caméra, chacun dans une étape distincte.
      Décrire tout d’un seul coup et espérer que le résultat plaise n’a pas de sens.
    • Les modèles de diffusion font essentiellement cela. Simplement, il n’y a pas de frontière nette entre le « graphe de scène » et « l’image complète ».
      Ils partent du bruit et ajoutent progressivement de plus en plus de détails.
    • Il y a ici l’hypothèse erronée qu’une image serait un ensemble d’objets. Ce n’est pas forcément le cas.
      Moi, je veux une photo de duvet de pêche turquoise gelé.
  • Une licence non commerciale n’est pas de l’open source. Si le titulaire original des droits d’auteur arrête la maintenance, personne d’autre ne peut prendre le relais, ou alors il faut travailler comme un esclave gratuit.
    Le cœur de l’open source, c’est ce qui devient possible quand l’auteur original cesse de travailler dessus. L’open source donne à tout le monde une licence pour poursuivre le développement, ce qui inclut évidemment la possibilité de se faire payer. Si cet aspect manque, il ne faut pas appeler cela open source.
    Seul FLUX.1 [schnell] est open source (Apache2) ; FLUX.1 [dev] est sous licence non commerciale.

    • Il existe OpenFLUX.1, un modèle issu d’un fine-tuning de FLUX.1-schnell dont la distillation a été retirée. OpenFLUX.1 est sous licence Apache 2.0.
      https://huggingface.co/ostris/OpenFLUX.1/
    • Open source, ça ne veut pas dire que le code source est visible et inspectable ? Je ne connais pas d’applis closed source qui donnent accès à leur source.
  • Si vous voulez essayer facilement FLUX.schnell, il suffit de mettre votre prompt dans une URL 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 vitesse est vraiment impressionnante. Avec seulement trois GPU L40S, nous générons 8 000 images toutes les 30 minutes pour les utilisateurs. Pour référence, je travaille chez Pollinations.

    • Ici, le mot « seulement » paraîtra assez cher à la plupart des gens
  • Ce que je préfère faire avec Flux, c’est créer des images sur fond blanc pour Substack. Le texte qui suit est excellent, et l’illustration permet aussi de transmettre quelque chose visuellement
    [1]https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...

    • Je pense que cet exemple montre bien pourquoi les artistes se mettent en colère. Le LLM imite manifestement le style propre d’un artiste en particulier, et résultat, cet artiste passe à côté de missions rémunérées
      Je ne sais pas si j’ai une position tranchée là-dessus. La technologie continue d’avancer, quoi qu’il arrive. Mais ça reste intéressant
    • Tu peux partager le prompt ?
  • Flux est l’un des meilleurs candidats parmi les systèmes de génération hébergés en local en matière de respect du prompt, mais la faible profondeur de champ qui apparaît partout est agaçante tant elle est difficile à supprimer

    • On dirait qu’il est optimisé pour les images artistiques ?
  • Je viens d’annuler mon abonnement Midjourney. Pour ce que je veux faire, j’ai l’impression qu’il est vraiment à la traîne
    J’ai aussi longuement hésité à utiliser Replicate et Ideogram

    • Dernièrement, je me demande moi aussi si ça a encore une valeur au-delà de l’effet de nouveauté. Je me demande si tu es passé à d’autres outils, ou si tu ne trouves tout simplement plus de valeur dans ce genre d’outils
    • Midjourney a un style très reconnaissable et il est faible sur les mains, les pieds et les lettres, donc je ne l’ai jamais utilisé
      Cela fait moins d’un an qu’Emad s’est effondré, et c’est dingue qu’un modèle local, open source et meilleur soit déjà sorti. Ça montre à quel point les douves de ces entreprises sont peu profondes, et au final, c’est nous qui en profitons grâce aux énormes sommes qu’elles brûlent
  • Quelqu’un sait avec quoi FLUX 1.1 a été entraîné ? Avec le modèle pro, j’ai généré près de 100 images à partir de prompts de deux mots, du type « nom de fichier d’appareil photo + mot simple », et elles ressemblaient toutes à des photos prises avec le téléphone de quelqu’un
    Sans texte, je n’aurais même pas pensé qu’il pouvait s’agir d’images IA. Parfois, ça ressemble à des photos recadrées ; il y a beaucoup de photos de nourriture, de tables en désordre et d’appartements
    Est-ce qu’ils ont scrapé des publications Facebook publiques, Snapchat, Vkontakte ? Acheté des images privées provenant de OneDrive ou Dropbox ? Quand je mets un prénom féminin comme deuxième mot, le filtre NSFW se déclenche presque toujours. J’en déduis donc que le jeu d’entraînement contient des images assez privées
    Regardez par vous-même. Attention à la musique en lecture automatique
    people: https://vm.tiktok.com/ZGdeXEhMg/
    food and stuff: https://vm.tiktok.com/ZGdeXEBDK/
    signs: https://vm.tiktok.com/ZGdeXoAgy/
    [edit] En regardant ce genre d’images, j’ai la sensation gênante de regarder les photos privées de quelqu’un. Un prompt comme « IMG00012.JPG forbid » ne contient pas assez d’informations de guidage pour expliquer ces images ; elles ne peuvent donc que venir des données d’entraînement
    Je ne crois pas que FLUX 1.1 pro ait utilisé un jeu d’entraînement fondamentalement différent des précédents modèles publics. Mais il est peut-être plus vulnérable à ce type de génération
    La sensation est vraiment bizarre. Donc je repose la question : existe-t-il des informations sur les données d’entraînement utilisées pour ces modèles ?

    • Ce n’est pas propre à flux ; on peut faire la même chose avec d’autres modèles, y compris Stable Diffusion
      Les deux posts Reddit ci-dessous abordent un peu cette convention de noms de fichiers
      DSC_0001-9999.JPG - valeur par défaut Nikon
      DSCF0001-9999.JPG - valeur par défaut Fujifilm
      IMG_0001-9999.JPG - image générique
      P0001-9999.JPG - valeur par défaut Panasonic
      CIMG0001-9999.JPG - valeur par défaut Casio
      PICT0001-9999.JPG - valeur par défaut Sony
      Photo_0001-9999.JPG - photo Android
      VID_0001-9999.mp4 - vidéo générique
      J’ai aussi fait une version avec des noms de fichiers de logiciels 3D. J’ai tout testé, et seule une partie fonctionnait
      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_...
    • Je pense qu’il est très peu probable que ce soit dû au dataset d’entraînement brut. J’ai rencontré le problème inverse. Le token « background » introduisait un flou marqué sur l’ensemble de l’image, presque indépendamment de la façon dont il était utilisé dans le prompt, mais ce qui était intéressant, c’est que l’interprétation du prompt devenait bien meilleure
      Avec un fort recalibrage sur le texte, il est très probable qu’ils aient fait beaucoup de tuning pour pousser le modèle à préférer des images typiques de flux
      Quel que soit le procédé suivi, ils ont rendu le modèle hypersensible au point que la simple présence de certains termes agit plus fortement qu’une LoRA
      Les photos montrées ne sont pas particulièrement remarquables dans le contexte global. Il ne faut pas beaucoup d’efforts pour sortir du format d’image par défaut et obtenir des résultats hyperréalistes. Personnellement, je pense moins qu’ils essaient de cacher l’hyperréalisme, et davantage qu’ils cherchent à régler les valeurs par défaut sur les images que les gens veulent
    • J’ai vécu la même chose, et c’était vraiment bizarre. Au début, les résultats étaient bons, puis ensuite ça s’est dégradé
      Je ne comprends pas pourquoi tous les commentaires critiques sur Flux se font downvoter ou signaler, et c’est assez étrange
  • Ils prétendent que la qualité est similaire et renvoient vers une page de comparaison, mais pour commencer, il est très clair qu’il y a beaucoup moins de détails. Le pire, c’est l’exemple « vue avant 3/4 d’une Corvette 2017 jaune prenant un virage sur une route de montagne, avec une vallée verte en contrebas, par temps nuageux »
    Le modèle original montre l’avant, alors que la version rapide montre l’arrière de la Corvette. C’est une image complètement différente. Ce n’est pas similaire, c’est nettement différent
    https://flux-quality-comparison.vercel.app/

  • À chaque fois qu’un fil sur un modèle Meta apparaît, il y a une avalanche de corrections disant que ce n’est pas vraiment open source
    Dans ce cas, il faut aussi être clair pour FLUX. Parmi les modèles publiés, le seul open source est FLUX schnell, et comme il est distillé à partir d’un modèle propriétaire, il est beaucoup plus difficile à manipuler
    Ironiquement, les modèles Llama de Meta ont, d’un point de vue pratique, une licence bien plus permissive, et il est aussi très facile de les fine-tuner avec les frameworks open source de Meta ou de nombreux outils tiers. Ce n’est pas le cas de FLUX schnell
    Je pense que la communauté open source devrait concentrer ses efforts autour d’OpenFLUX, ou de projets similaires visant à corriger les contraintes artificielles de Schnell : https://huggingface.co/ostris/OpenFLUX.1

  • Ils disent avoir « ajouté une nouvelle API HTTP synchrone qui rend tous les modèles d’images de Replicate beaucoup plus rapides », mais pourquoi le fait qu’elle soit synchrone la rendrait-elle plus rapide ? Je clique pour aller voir
    https://replicate.com/changelog/2024-10-09-synchronous-api
    « Désormais, les bibliothèques clientes et l’API accélèrent nettement l’exécution des modèles, surtout lorsque des fichiers sont renvoyés »
    …merci, certes ?
    Je partage juste ma frustration de développeur. Si vous voulez qu’on s’en souvienne et qu’on devienne vos soutiens, expliquez un peu mieux

    • La raison est littéralement expliquée dans le deuxième paragraphe. Au lieu de renvoyer une URL qui oblige à faire une deuxième requête pour récupérer les données du fichier, la réponse renvoie directement les données du fichier
    • Exact. Ce point n’était pas clair. Nous avons ajouté un paragraphe supplémentaire expliquant ce qu’il fallait faire auparavant