Commit
•
6d50028
1
Parent(s):
6aad430
Update README.md (#1)
Browse files- Update README.md (3aced3450c52e36efc6d79ded47aace60f1c21f9)
Co-authored-by: Eduardo Muñoz Sala <edumunozsala@users.noreply.huggingface.co>
README.md
CHANGED
@@ -83,4 +83,54 @@ The following hyperparameters were used during training:
|
|
83 |
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
|
84 |
- lr_scheduler_type: constant
|
85 |
- lr_scheduler_warmup_ratio: 0.03
|
86 |
-
- num_epochs: 3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
|
84 |
- lr_scheduler_type: constant
|
85 |
- lr_scheduler_warmup_ratio: 0.03
|
86 |
+
- num_epochs: 3
|
87 |
+
|
88 |
+
## Inference Example
|
89 |
+
|
90 |
+
```python
|
91 |
+
import torch
|
92 |
+
|
93 |
+
from transformers import (
|
94 |
+
AutoModelForCausalLM,
|
95 |
+
AutoTokenizer,
|
96 |
+
BitsAndBytesConfig,
|
97 |
+
pipeline
|
98 |
+
)
|
99 |
+
|
100 |
+
model_id = "somosnlp/gemma-7b-it-legal-refugee-v0.1.1"
|
101 |
+
tokenizer_id = "somosnlp/gemma-7b-it-legal-refugee-v0.1.1"
|
102 |
+
|
103 |
+
tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
|
104 |
+
# Cargamos el modelo en 4 bits para agilizar la inferencia
|
105 |
+
quantization_config = BitsAndBytesConfig(
|
106 |
+
load_in_4bit=True,
|
107 |
+
bnb_4bit_compute_dtype=torch.float16,
|
108 |
+
bnb_4bit_use_double_quant=True,
|
109 |
+
)
|
110 |
+
|
111 |
+
model = AutoModelForCausalLM.from_pretrained(
|
112 |
+
model_id,
|
113 |
+
torch_dtype=torch.float16,
|
114 |
+
device_map="auto",
|
115 |
+
quantization_config=quantization_config,
|
116 |
+
)
|
117 |
+
|
118 |
+
# Generamos el pipeline de generación de texto
|
119 |
+
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
|
120 |
+
# Definimos el eos token para el modelo
|
121 |
+
eos_token = tokenizer("<|im_end|>",add_special_tokens=False)["input_ids"][0]
|
122 |
+
|
123 |
+
def generate_inference(instruction, input, temperature):
|
124 |
+
prompt = pipe.tokenizer.apply_chat_template([{"role": "user",
|
125 |
+
"content": f"{instruction}/n{input}"}], tokenize=False, add_generation_prompt=True)
|
126 |
+
outputs = pipe(prompt, max_new_tokens=256, do_sample=True, num_beams=1, temperature=float(temperature), top_k=50, top_p=0.95,
|
127 |
+
max_time= 300, eos_token_id=eos_token)
|
128 |
+
return outputs[0]['generated_text'][len(prompt):].strip()
|
129 |
+
|
130 |
+
|
131 |
+
instruction = "¿Podrías explicarme brevemente los hechos que originan el procedimiento y las posibles calificaciones, así como las sanciones correspondientes, según lo expuesto en el contexto?"
|
132 |
+
input = "b) Hechos que motivan la incoación del procedimiento sucintamente expuestos, su posible calificación y las sanciones que pudieran corresponder, sin perjuicio de lo que resulte de la instrucción. c) Instructor y, en su caso, secretario del procedimiento, con expresa indicación del régimen de recusación de éstos. d) Órgano competente para la resolución del expediente y norma que le atribuye tal competencia. e) Indicación de la posibilidad de que el presunto responsable pueda reconocer voluntariamente su responsabilidad. f) Medidas de carácter provisional que se hayan acordado por el órgano competente para iniciar el procedimiento sancionador, sin perjuicio de las que se puedan adoptar durante éste de conformidad con los artículos 55 y 61 de la Ley Orgánica 4/2000, de 11 de enero. g) Indicación del derecho a formular alegaciones y a la audiencia en el procedimiento y de los plazos para su ejercicio. 2. El acuerdo de iniciación se comunicará al instructor con traslado de cuantas actuaciones existan al respecto y se notificará a los interesados, entendiéndose en todo caso por tal al expedientado. En la notificación se advertirá a los interesados que, de no efectuar alegaciones sobre el contenido de la iniciación del procedimiento en el plazo previsto en el artículo siguiente, no realizarse propuesta de prueba o no ser admitidas, por improcedentes o innecesarias, las pruebas propuestas, la iniciación podrá ser considerada propuesta de resolución cuando contenga un pronunciamiento preciso acerca de la responsabilidad imputada, con los efectos previstos en los artículos 229 y 230."
|
133 |
+
|
134 |
+
response = test_inference(instruction, input, 0.3)
|
135 |
+
print(f"Response:\n{response}")
|
136 |
+
```
|