lea97338 commited on
Commit
2d8cef8
·
verified ·
1 Parent(s): 2b16904

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -33
app.py CHANGED
@@ -3,53 +3,50 @@ import gradio as gr
3
  from diffusers import Flux2Pipeline
4
 
5
  # -----------------------------
6
- # ENCODEUR FLUX MINIMAL
7
  # -----------------------------
8
- def encode_prompt(prompt: str):
9
- # On charge uniquement le tokenizer + text_encoder
10
- pipe = Flux2Pipeline.from_pretrained(
11
- "black-forest-labs/FLUX.2-klein-4B",
12
- torch_dtype=torch.float32,
13
- low_cpu_mem_usage=True,
14
-
15
- # 🔥 On désactive tout ce qui n'est PAS utilisé par encode_prompt()
16
- transformer=None, # pas besoin du modèle de diffusion
17
- vae=None, # pas besoin pour encoder du texte
18
- scheduler=None, # inutile
19
- safety_checker=None, # inutile
20
- feature_extractor=None, # inutile
21
- ).to("cpu")
22
-
23
- with torch.inference_mode():
24
- prompt_embeds = pipe.encode_prompt(prompt)
25
-
26
- return prompt_embeds
27
-
28
 
29
  # -----------------------------
30
- # FONCTION GRADIO
31
  # -----------------------------
32
- def run_encoder(prompt):
33
- embeds = encode_prompt(prompt)
 
34
 
35
- # On renvoie la forme pour vérifier
36
- shape = tuple(embeds.shape)
37
 
38
- # On sauvegarde pour un autre Space si besoin
39
- torch.save(embeds.cpu(), "embeds.pt")
 
40
 
41
- return f"Embeddings générés : shape = {shape}"
42
 
43
 
44
  # -----------------------------
45
  # INTERFACE GRADIO
46
  # -----------------------------
47
  demo = gr.Interface(
48
- fn=run_encoder,
49
  inputs=gr.Textbox(label="Prompt", placeholder="Écris ton texte ici..."),
50
- outputs=gr.Textbox(label="Résultat"),
51
- title="Encodeur Texte FLUX.2 — Version Minimaliste",
52
- description="Génère les embeddings texte officiels de FLUX.2 sans charger le VAE ou le modèle de diffusion.",
 
 
 
53
  )
54
 
55
  demo.launch()
 
3
  from diffusers import Flux2Pipeline
4
 
5
  # -----------------------------
6
+ # CHARGEMENT MINIMAL DU TEXT ENCODER FLUX
7
  # -----------------------------
8
+ pipe = Flux2Pipeline.from_pretrained(
9
+ "black-forest-labs/FLUX.2-klein-4B",
10
+ torch_dtype=torch.float32,
11
+ low_cpu_mem_usage=True,
12
+
13
+ # On désactive tout ce qui n'est pas utile pour encode_prompt()
14
+ transformer=None,
15
+ vae=None,
16
+ scheduler=None,
17
+ safety_checker=None,
18
+ feature_extractor=None,
19
+ )
 
 
 
 
 
 
 
 
20
 
21
  # -----------------------------
22
+ # ENCODEUR
23
  # -----------------------------
24
+ def encode_text(prompt: str):
25
+ if not prompt.strip():
26
+ return "Prompt vide", None
27
 
28
+ with torch.inference_mode():
29
+ embeds = pipe.encode_prompt(prompt)
30
 
31
+ # Sauvegarde dans un fichier temporaire
32
+ file_path = "embeds.pt"
33
+ torch.save(embeds.cpu(), file_path)
34
 
35
+ return f"Embeddings générés : {tuple(embeds.shape)}", file_path
36
 
37
 
38
  # -----------------------------
39
  # INTERFACE GRADIO
40
  # -----------------------------
41
  demo = gr.Interface(
42
+ fn=encode,
43
  inputs=gr.Textbox(label="Prompt", placeholder="Écris ton texte ici..."),
44
+ outputs=[
45
+ gr.Textbox(label="Infos"),
46
+ gr.File(label="Fichier .pt des embeddings")
47
+ ],
48
+ title="Encodeur Texte FLUX.2 — Minimal",
49
+ description="Encodeur officiel FLUX.2 (Mistral-3-Small). Génère des embeddings compatibles avec Flux2Pipeline.",
50
  )
51
 
52
  demo.launch()