File size: 5,984 Bytes
6ce70cd f6a6ddd 6ce70cd d7c2bbe 6ce70cd f6a6ddd 6ce70cd 15d98a1 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 6ce70cd f6a6ddd 15d98a1 |
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 |
---
library_name: transformers
language:
- it
---
# Model Card for Model ID
<!-- Provide a quick summary of what the model is/does. -->
## Model Details
This repository only contains the adapter of the fine-tuned model! You should have access to the base model in order to load it correctly.
### Model Description
- **Developed by:** Yuri Noviello
- **Language(s) (NLP):** Italian
- **Finetuned from model:** [Qwen/Qwen2-1.5B](https://huggingface.co/Qwen/Qwen2-1.5B)
## Evaluation
Benchmark Results on [MIRACL-ita-ArgosTranslate](https://huggingface.co/datasets/yuri-no/miracl-ita-argos) dev split
| **Model** | **MRR@10** | **Recall@100** | **nDCG@10** |
|:-------------:|:----------:|:--------------:|:-----------:|
| minerva-argos | 66.45 | 94.51 | 61.77 |
| minerva-palm | 65.32 | 94.38 | 60.74 |
| | | | |
| qwen-argos | 73.47 | 96.98 | 69.04 |
| qwen-palm | 73.16 | 97.21 | 69.12 |
| | | | |
| gemma-argos | 73.05 | 96.42 | 69.05 |
| gemma-palm | 72.56 | 96.33 | 68.87 |
Benchmark Results on [MIRACL-ita-PaLM](https://huggingface.co/datasets/yuri-no/miracl-ita-palm) dev split
| **Model** | **MRR@10** | **Recall@100** | **nDCG@10** |
|:-------------:|:----------:|:--------------:|:-----------:|
| minerva-argos | 67.93 | 96.39 | 64.04 |
| minerva-palm | 67.73 | 96.49 | 63.81 |
| | | | |
| qwen-argos | 74.95 | 97.96 | 71.29 |
| qwen-palm | 74.54 | 98.04 | 70.56 |
| | | | |
| gemma-argos | 75.80 | 98.43 | 71.95 |
| gemma-palm | 75.30 | 98.10 | 71.87 |
Benchmark Results on [Shitao/MLDR](https://huggingface.co/datasets/Shitao/MLDR) test split
| **Model** | **MRR@10** | **Recall@100** | **nDCG@10** |
|:-------------:|:----------:|:--------------:|:-----------:|
| minerva-argos | 36.04 | 67.50 | 38.75 |
| minerva-palm | 36.55 | 68.00 | 38.91 |
| | | | |
| qwen-argos | 40.19 | 70.50 | 42.68 |
| qwen-palm | 40.87 | 69.00 | 43.94 |
| | | | |
| gemma-argos | 37.19 | 75.00 | 39.78 |
| gemma-palm | 40.75 | 74.50 | 43.46 |
---
## How to Use
```python
import torch
import torch.nn.functional as F
from torch import Tensor
from transformers import AutoTokenizer, AutoModel
def last_token_pool(last_hidden_states: Tensor,
attention_mask: Tensor) -> Tensor:
left_padding = (attention_mask[:, -1].sum() == attention_mask.shape[0])
if left_padding:
return last_hidden_states[:, -1]
else:
sequence_lengths = attention_mask.sum(dim=1) - 1
batch_size = last_hidden_states.shape[0]
return last_hidden_states[torch.arange(batch_size, device=last_hidden_states.device), sequence_lengths]
def get_detailed_instruct(task_description: str, query: str) -> str:
return f'{task_description}\nQuery: {query}'
model = AutoModel.from_pretrained('yuri-no/qwen-palm', torch_dtype=torch.bfloat16).to('cuda')
tokenizer = AutoTokenizer.from_pretrained('yuri-no/qwen-palm')
# Each query must come with a one-sentence instruction that describes the task
task = 'Given a search query, retrieve relevant passages that answer the query'
queries = [
get_detailed_instruct(task, 'In che anno il Napoli ha vinto il suo terzo scudetto?'),
get_detailed_instruct(task, 'Quali sono le migliori Università italiane?'),
]
# No need to add instruction for retrieval documents
documents = [
"Dopo un'attesa durata 33 anni, il Napoli è Campione d'Italia per la terza volta. Per la certezza aritmetica serviva che non perdesse fuori casa con l'Udinese ed è bastato un pareggio per 1-1, avvenuto con il brivido del gol bianconero firmato da Lovric e poi con il pareggio di Osimhen al 52'. La partita di giovedì 4 maggio 2023, trasmessa anche sui maxi-schermi dello Stadio Maradona, è diventata così così in una grande festa per tutto il popolo napoletano e una pagina indimenticabile nella storia del calcio italiano.",
"L’Università di Bologna si conferma ancora una volta tra le migliori d’Italia. Stando a un’analisi delle più autorevoli classifiche universitarie i cui risultati sono stati pubblicati dalla piattaforma di apprendimento Preply, la quale ha esaminato le classifiche accademiche di U.S. News in collaborazione con l'istituto di analisi Clarivate, sono stati analizzati i dieci corsi di laurea più popolari nelle principali città universitarie italiane.",
"Il Decreto Legislativo 7 marzo 2005 n. 82 Codice dell'Amministrazione digitale, definisce le pubblicazioni contenute su supporti informatici valide e rilevanti a tutti gli effetti di legge in quanto la riproduzione è effettuata in modo tale da garantire la conformità dei documenti agli atti originali. Cio' al fine di rendere possibile l'esonero della produzione ed esibizione del formato originale su supporto cartaceo quando richiesto ad ogni effetto di legge."
]
input_texts = queries + documents
max_length = 512
# Tokenize the input texts
batch_dict = tokenizer(input_texts, max_length=max_length, padding=True, truncation=True, return_tensors='pt').to('cuda')
outputs = model(**batch_dict)
embeddings = last_token_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
# normalize embeddings
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())
# [[55.5, 28.75, 18.0],
# [24.75, 62.0, 19.375]]
```
--- |