File size: 2,762 Bytes
67e2930
cd504e0
 
d57725b
 
 
 
67e2930
 
b48d6e9
 
9630b59
b48d6e9
 
 
 
 
310573a
b48d6e9
67e2930
d57725b
b8ff297
67e2930
d57725b
 
 
67e2930
d57725b
 
5413914
67e2930
 
d57725b
 
 
67e2930
d57725b
67e2930
d57725b
67e2930
b48d6e9
67e2930
d57725b
 
b48d6e9
5413914
d57725b
 
67e2930
 
5413914
 
67e2930
d57725b
 
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
---
language:
- it
license: apache-2.0
datasets:
- DeepMount00/gquad_it
pipeline_tag: question-answering
---

## SQuAD-it Evaluation

The Stanford Question Answering Dataset (SQuAD) in Italian (SQuAD-it) is used to evaluate the model's reading comprehension and question-answering capabilities. The following table presents the F1 score and Exact Match (EM) metrics:

| Model                                        | F1 Score | Exact Match (EM) | 
|----------------------------------------------|----------|------------------|
| **DeepMount00/Gemma_QA_ITA_v3**              | **77.24%**   | **64.60%**       | 
| **DeepMount00/Gemma_QA_ITA_v2**              | **77.17%**   | **63.82%**       |
| **DeepMount00/mamba_790_hf_qa**              | **75.89%**   | **66.71%**       | 
| **DeepMount00/Gemma_QA_ITA**                 | **59.59%**   | **40.68%**       | 

## How to Use
How to use mamba q&a

```python
from transformers import MambaConfig, MambaForCausalLM, AutoTokenizer
import torch

model_name = "DeepMount00/mamba_790_hf_qa"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = MambaForCausalLM.from_pretrained(model_name, device_map={"": 0}).eval()


def predict(contesto, domanda):
    device = "cuda:0"
    prefix_text = 'Di seguito ti verrà fornito un contesto e poi una domanda. il tuo compito è quello di rispondere alla domanda basandoti esclusivamente sul contesto\n\n'

    prompt = f"""{prefix_text}##CONTESTO: {contesto}\n##DOMANDA: {domanda}\n"""

    input_ids = tokenizer([prompt], return_tensors="pt").to(device)

    generate_ids = model.generate(**input_ids, max_new_tokens=150, eos_token_id=8112)

    answer = tokenizer.batch_decode(generate_ids)
    try:
        final_answer = answer[0].split("##RISPOSTA: ")[1].split("##END")[0].strip("\n")
    except IndexError:
        final_answer = ""
    return final_answer


contesto = """La torre degli Asinelli è una delle cosiddette due torri di Bologna, simbolo della città, situate in piazza di porta Ravegnana, all'incrocio tra le antiche strade San Donato (ora via Zamboni), San Vitale, Maggiore e Castiglione. Eretta, secondo la tradizione, fra il 1109 e il 1119 dal nobile Gherardo Asinelli, la torre è alta 97,20 metri, pende verso ovest per 2,23 metri e presenta all'interno una scalinata composta da 498 gradini. Ancora non si può dire con certezza quando e da chi fu costruita la torre degli Asinelli. Si presume che la torre debba il proprio nome a Gherardo Asinelli, il nobile cavaliere di fazione ghibellina al quale se ne attribuisce la costruzione, iniziata secondo una consolidata tradizione l'11 ottobre 1109 e terminata dieci anni dopo, nel 1119."""
domanda = "Dove si trova precisamente la torre degli Asinelli?"

print(predict(contesto, domanda))
```