edusc182 commited on
Commit
34340f6
·
verified ·
1 Parent(s): fe4d7cf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -7
app.py CHANGED
@@ -19,17 +19,30 @@ def predecir(pregunta):
19
  device_map="cpu"
20
  )
21
 
22
- # 1. Aplicar el Chat Template (crucial para que Gemma no repita texto)
23
- chat = [
24
- {"role": "user", "content": pregunta},
25
- ]
 
 
26
  prompt = generador.tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- # 2. Inferencia limpia
29
  resultados = generador(
30
  prompt,
31
- max_new_tokens=512,
32
- temperature=1.0,
33
  do_sample=True,
34
  pad_token_id=generador.tokenizer.eos_token_id,
35
  eos_token_id=generador.tokenizer.eos_token_id,
 
19
  device_map="cpu"
20
  )
21
 
22
+ # 1. Definir los límites de la arquitectura
23
+ CONTEXT_WINDOW = 8192
24
+ RESERVED_FOR_RESPONSE = 2048 # Espacio garantizado para la respuesta
25
+
26
+ # 2. Calcular tokens del prompt actual
27
+ chat = [{"role": "user", "content": pregunta}]
28
  prompt = generador.tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
29
+ tokens_prompt = len(generador.tokenizer.encode(prompt))
30
+
31
+ # 3. Calcular tokens disponibles dinámicamente
32
+ # Si el prompt es enorme, reducimos el límite de respuesta,
33
+ # pero nunca dejamos menos de 512 tokens para responder.
34
+ max_tokens_permitidos = max(512, CONTEXT_WINDOW - tokens_prompt)
35
+
36
+ # Nos aseguramos de no superar nuestro límite máximo de seguridad
37
+ final_max_new_tokens = min(max_tokens_permitidos, RESERVED_FOR_RESPONSE)
38
+
39
+ print(f"Tokens prompt: {tokens_prompt} | Límite respuesta: {final_max_new_tokens}")
40
 
41
+ # 4. Inferencia con límite dinámico
42
  resultados = generador(
43
  prompt,
44
+ max_new_tokens=final_max_new_tokens,
45
+ temperature=0.7,
46
  do_sample=True,
47
  pad_token_id=generador.tokenizer.eos_token_id,
48
  eos_token_id=generador.tokenizer.eos_token_id,