--- library_name: transformers language: - it --- # Model Card for Model ID ## 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:** [google/gemma-2b](https://huggingface.co/google/gemma-2b) ## 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/gemma-palm', torch_dtype=torch.bfloat16).to('cuda') tokenizer = AutoTokenizer.from_pretrained('yuri-no/gemma-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()) # [[60.5, 16.375, 17.5], # [26.0, 58.25, 15.0625]] ``` ---