locorene1000 commited on
Commit
1c3956c
1 Parent(s): 793a724
Files changed (1) hide show
  1. app.py +41 -35
app.py CHANGED
@@ -4,45 +4,51 @@ from awq import AutoAWQForCausalLM
4
  from transformers import AutoTokenizer
5
  import spaces
6
 
7
- @spaces.GPU(duration=120)
8
- def cargar_modelo():
9
- model_id = "hugging-quants/Meta-Llama-3.1-70B-Instruct-AWQ-INT4"
10
-
11
- # Omite quantization_config si ya est谩 incluido en el modelo
12
- tokenizer = AutoTokenizer.from_pretrained(model_id)
13
- model = AutoAWQForCausalLM.from_pretrained(
14
- model_id,
15
- torch_dtype=torch.float16,
16
- low_cpu_mem_usage=True,
17
- device_map=None # Evita especificar manualmente el device_map
18
- )
19
- return model, tokenizer
20
-
21
- model, tokenizer = cargar_modelo()
22
-
23
- instructions = """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  **Instrucciones para GPT Personalizado "GPT Civil"**
25
 
26
  Como Ministro de la Corte Suprema de Chile, su objetivo es mejorar y finalizar los borradores de resoluciones judiciales para el sistema judicial civil del pa铆s...
27
  """
28
 
29
- @spaces.GPU(duration=120)
30
- def mejorar_resolucion(message, history=None):
31
- prompt = [
32
- {"role": "system", "content": instructions},
33
- {"role": "user", "content": f"Mejora esta resoluci贸n judicial: {message}"}
34
- ]
35
- inputs = tokenizer.apply_chat_template(
36
- prompt,
37
- tokenize=True,
38
- add_generation_prompt=True,
39
- return_tensors="pt",
40
- return_dict=True,
41
- ).to("cuda") # Asegura que los tensores se procesen en GPU
42
-
43
- outputs = model.generate(**inputs, do_sample=True, max_new_tokens=500)
44
- return tokenizer.batch_decode(outputs[:, inputs['input_ids'].shape[1]:], skip_special_tokens=True)[0]
45
 
46
  with gr.Blocks() as demo:
47
- chatbot = gr.ChatInterface(fn=mejorar_resolucion, title="Mejora de Resoluciones Judiciales")
48
- demo.launch()
 
4
  from transformers import AutoTokenizer
5
  import spaces
6
 
7
+ class Modelo:
8
+ def __init__(self):
9
+ self.model_id = "hugging-quants/Meta-Llama-3.1-70B-Instruct-AWQ-INT4"
10
+ self.tokenizer = None
11
+ self.model = None
12
+
13
+ def cargar_modelo_y_tokenizador(self):
14
+ if not torch.cuda.is_available():
15
+ raise Exception("No hay GPU disponible")
16
+ self.tokenizer = AutoTokenizer.from_pretrained(self.model_id)
17
+ self.model = AutoAWQForCausalLM.from_pretrained(
18
+ self.model_id,
19
+ torch_dtype=torch.float16,
20
+ device_map={"": "cuda:0"}, # Forzar la carga en GPU
21
+ low_cpu_mem_usage=True
22
+ )
23
+
24
+ def mejorar_resolucion(self, message, history=None):
25
+ if self.model is None or self.tokenizer is None:
26
+ self.cargar_modelo_y_tokenizador()
27
+
28
+ prompt = [
29
+ {"role": "system", "content": self.instrucciones},
30
+ {"role": "user", "content": f"Mejora esta resoluci贸n judicial: {message}"}
31
+ ]
32
+ inputs = self.tokenizer.apply_chat_template(
33
+ prompt,
34
+ tokenize=True,
35
+ add_generation_prompt=True,
36
+ return_tensors="pt",
37
+ return_dict=True,
38
+ ).to("cuda") # Asegura que los tensores se procesen en GPU
39
+
40
+ outputs = self.model.generate(**inputs, do_sample=True, max_new_tokens=500)
41
+ return self.tokenizer.batch_decode(outputs[:, inputs['input_ids'].shape[1]:], skip_special_tokens=True)[0]
42
+
43
+ def __init__(self):
44
+ self.instrucciones = """
45
  **Instrucciones para GPT Personalizado "GPT Civil"**
46
 
47
  Como Ministro de la Corte Suprema de Chile, su objetivo es mejorar y finalizar los borradores de resoluciones judiciales para el sistema judicial civil del pa铆s...
48
  """
49
 
50
+ modelo = Modelo()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  with gr.Blocks() as demo:
53
+ chatbot = gr.ChatInterface(fn=modelo.mejorar_resolucion, title="Mejora de Resoluciones Judiciales")
54
+ demo.launch()