File size: 6,241 Bytes
2ecd729
6aad430
 
 
7d5326d
 
 
 
 
 
2ecd729
 
 
 
 
 
 
 
 
 
7d5326d
2ecd729
 
 
7d5326d
2ecd729
 
 
7d5326d
2ecd729
7d5326d
 
2ecd729
 
 
 
7d5326d
2ecd729
 
 
 
7d5326d
2ecd729
 
 
 
7d5326d
2ecd729
 
 
 
 
 
8336ca5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2ecd729
 
7d5326d
 
 
 
 
 
 
 
 
 
 
 
 
 
3aced34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
---
language:
- es
license: apache-2.0
library_name: transformers, pe
tags:
- trl
- sft
- generated_from_trainer
base_model: google/gemma-7b
---

# Model Card for Model ID

<!-- Provide a quick summary of what the model is/does. -->



## Model Details


### Model Description

<!-- Provide a longer summary of what this model is. -->
This model is a fine-tuned version of [google/gemma-7b](https://huggingface.co/google/gemma-7b) on the generator dataset.

This is the model card of a 馃 transformers model that has been pushed on the Hub. This model card has been automatically generated.

- **Developed by:** [Hacendado](https://huggingface.co/hacendado) and QA-legal-refugees team

- **Language(s) (NLP):** [Spanish]
- **Finetuned from model [optional]:** [google/gemma-7b](https://huggingface.co/google/gemma-7b)

## Uses

### Direct Use
The primary objective of this model is to facilitate question answering (QA) tasks pertaining to Spanish refugee legislation. With its refined understanding of the nuances and intricacies of this legal domain


### Out-of-Scope Use

Misuse includes any application that promotes unethical practices, misinterprets refugee law, or uses the model for malicious purposes. The model is not designed to replace professional legal advice.


## Bias, Risks, and Limitations

The model, while powerful, has limitations inherent to AI, including biases present in the training data. It may not cover all nuances of refugee regulations or adapt to changes in law without updates.


## Training Details

### Training Data

The dataset used was [instruct-legal-refugiados-es](https://huggingface.co/datasets/somosnlp/instruct-legal-refugiados-es)
We wanted to make a conversation model so we investigated the base model prompt in order to make conversational base on [chatml format](https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/ai-services/openai/includes/chat-markup-language.md#working-with-chat-markup-language-chatml)

we identified the special tokens so the model could understand the different roles in the conversation

Example 
```
<bos><|im_start|>system
You are Gemma.<|im_end|>
<|im_start|>user
Hello, how are you?<|im_end|>
<|im_start|>assistant
I'm doing great. How can I help you today?<|im_end|>\n<eos>
```

so we used [Phil Schmid's gemma chatml tokenizer](https://huggingface.co/philschmid/gemma-tokenizer-chatml) to adapt our dataset for training

### Training Procedure
The training was done using RTX 4090 from Vast.ai with PeRF and Lora

#### Training hyperparameters

The following hyperparameters were used during training:
- learning_rate: 5e-05
- train_batch_size: 2
- eval_batch_size: 8
- seed: 66
- gradient_accumulation_steps: 2
- total_train_batch_size: 4
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: constant
- lr_scheduler_warmup_ratio: 0.03
- num_epochs: 3

## Inference Example

```python
import torch

from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
    pipeline
)

model_id = "somosnlp/gemma-7b-it-legal-refugee-v0.1.1"
tokenizer_id = "somosnlp/gemma-7b-it-legal-refugee-v0.1.1"

tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
# Cargamos el modelo en 4 bits para agilizar la inferencia
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.float16,
    bnb_4bit_use_double_quant=True,
)

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16,
    device_map="auto",
    quantization_config=quantization_config,
)

# Generamos el pipeline de generaci贸n de texto
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
# Definimos el eos token para el modelo
eos_token = tokenizer("<|im_end|>",add_special_tokens=False)["input_ids"][0]

def generate_inference(instruction, input, temperature):
    prompt = pipe.tokenizer.apply_chat_template([{"role": "user", 
                                                  "content": f"{instruction}/n{input}"}], tokenize=False, add_generation_prompt=True)
    outputs = pipe(prompt, max_new_tokens=256, do_sample=True, num_beams=1, temperature=float(temperature), top_k=50, top_p=0.95, 
                   max_time= 300, eos_token_id=eos_token)
    return outputs[0]['generated_text'][len(prompt):].strip()


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?"
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."

response = test_inference(instruction, input, 0.3)
print(f"Response:\n{response}")
```