1 points par GN⁺ 2026-01-19 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Implémentation en pur C permettant de générer des images à partir de texte ou d’images avec le modèle FLUX.2-klein-4B
  • Fonctionne sans dépendances externes, avec en option une accélération BLAS ou Metal pouvant offrir jusqu’à 30× plus de vitesse
  • Encodeur de texte Qwen3-4B intégré, sans besoin de calcul d’embeddings séparé
  • Prend en charge à la fois le text-to-image et la transformation image-to-image, avec une interface en ligne de commande et une API de bibliothèque C
  • Peut s’exécuter sans runtime Python ni PyTorch, ce qui est significatif pour les environnements d’inférence légers et l’élargissement de l’accessibilité de l’IA open source

Aperçu du projet

  • FLUX.2-klein-4B est un modèle de génération d’images de Black Forest Labs, capable de créer de nouvelles images à partir de prompts textuels ou d’images existantes
  • L’ensemble du code est écrit uniquement avec la bibliothèque standard C, avec prise en charge optionnelle de l’accélération MPS (Apple Metal) et BLAS (OpenBLAS)
  • Le modèle peut être téléchargé depuis HuggingFace pour environ 16GB et se compose de VAE (300MB), Transformer (4GB), encodeur Qwen3-4B (8GB) et Tokenizer

Principales fonctionnalités

  • Zero dependencies : exécution autonome sans bibliothèques externes
    • Avec BLAS, environ 30× d’accélération, avec Apple Accelerate sur macOS et OpenBLAS sur Linux
  • Metal GPU acceleration : activée automatiquement sur Apple Silicon
  • Text-to-image : génération d’images à partir de prompts textuels
  • Image-to-image : transformation d’images existantes selon un prompt
  • Integrated text encoder : encodeur Qwen3-4B intégré, sans embeddings externes
  • Memory efficient : libération automatique de la mémoire de l’encodeur après l’encodage, soit environ 8GB économisés

Exemples d’utilisation

  • Génération d’image à partir de texte
    ./flux -d flux-klein-model -p "A fluffy orange cat sitting on a windowsill" -o cat.png
    
  • Transformation d’image
    ./flux -d flux-klein-model -i photo.png -o painting.png -p "oil painting style" -t 0.7
    
    • La valeur -t contrôle l’intensité de la transformation : 0.0 conserve l’original, 1.0 régénère entièrement l’image

Architecture du modèle et performances

  • Transformer : 5 double blocks et 20 single blocks, dimension cachée de 3072, 24 têtes d’attention
  • VAE : AutoencoderKL, 128 canaux latents, compression spatiale ×8
  • Text Encoder : Qwen3-4B, 36 couches, dimension cachée de 2560
  • Étapes d’inférence : échantillonnage en 4 étapes pour produire des résultats de haute qualité
  • Exigences mémoire
    • Encodage du texte : environ 8GB
    • Diffusion : environ 8GB
    • Pic maximal : 16GB (avant libération de l’encodeur)
  • Benchmarks de performance (Apple M3 Max, 128GB RAM)
    • 512×512 : MPS 49.6s, BLAS 51.9s, PyTorch MPS 5.4s
    • 256×256 : MPS 32.4s, BLAS 29.7s, PyTorch MPS 3.0s
    • 64×64 : MPS 25.0s, BLAS 23.5s, PyTorch MPS 2.2s
    • Le backend en pur C est très lent et convient uniquement aux tests

Compilation et exécution

  • Choix du backend
    • make mps : macOS Apple Silicon (le plus rapide)
    • make blas : Intel Mac ou Linux (OpenBLAS requis)
    • make generic : pur C, sans dépendances (lent)
  • Téléchargement du modèle
    pip install huggingface_hub
    python download_model.py
    
  • La résolution de sortie va jusqu’à 1024×1024, avec un minimum de 64×64 et des multiples de 16 recommandés

API de bibliothèque C

  • Chargement et libération du modèle
    • flux_load_dir(path) / flux_free(ctx)
  • Génération et transformation d’image
    • flux_generate(ctx, prompt, params)
    • flux_img2img(ctx, prompt, input, params)
  • Entrée/sortie d’image
    • flux_image_load(path) / flux_image_save(img, path)
  • Utilitaires
    • flux_set_seed(seed) pour assurer la reproductibilité
    • flux_get_error() pour consulter les messages d’erreur
    • flux_release_text_encoder(ctx) pour libérer manuellement la mémoire

Licence et autres informations

  • Publié sous licence MIT
  • Répartition des langages du dépôt : C 93.9%, Objective-C 3.5%, Makefile 1.7%, Python 0.9%
  • 446 étoiles et 20 forks, signe d’un fort intérêt de la communauté

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.