LLM2Vec-Meta-Llama-3-8B-Instruct-mntp-supervised

McGill-NLP
Similitud de oraciones

LLM2Vec es una receta simple para convertir LLMs que solo decodifican en codificadores de texto. Consiste en 3 pasos simples: 1) habilitar la atención bidireccional, 2) predicción de la siguiente ficha enmascarada y 3) aprendizaje contrastivo no supervisado. El modelo puede ser afinado aún más para lograr un rendimiento de última generación. Repositorio: https://github.com/McGill-NLP/llm2vec Artículo: https://arxiv.org/abs/2404.05961

Como usar

from llm2vec import LLM2Vec
import torch
from transformers import AutoTokenizer, AutoModel, AutoConfig
from peft import PeftModel

tokenizer = AutoTokenizer.from_pretrained(
"McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp")
config = AutoConfig.from_pretrained(
"McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp", trust_remote_code=True
)
model = AutoModel.from_pretrained(
"McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp",
trust_remote_code=True,
config=config,
torch_dtype=torch.bfloat16,
device_map="cuda" if torch.cuda.is_available() else "cpu",
)
model = PeftModel.from_pretrained(
model,
"McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp",
)
model = model.merge_and_unload()

model = PeftModel.from_pretrained(
model, "McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp-supervised")

l2v = LLM2Vec(model, tokenizer, pooling_mode="mean", max_length=512)

instruction = (
"Dada una consulta de búsqueda web, recupere los pasajes relevantes que respondan a la consulta:")
queries = [
[instruction, "cuánta proteína debe consumir una mujer"],
[instruction, "definir cumbre"],
]
q_reps = l2v.encode(queries)

documents = [
"Como pauta general, el requisito promedio de proteína del CDC para mujeres de 19 a 70 años es de 46 gramos por día. Pero, como puede ver en este gráfico, necesitará aumentar eso si está esperando o entrenando para un maratón. Consulte el gráfico a continuación para ver cuánta proteína debe consumir cada día.",
"Definición de cumbre para aprendices de inglés: 1 el punto más alto de una montaña: la cima de una montaña. 2 el nivel más alto. 3 una reunión o una serie de reuniones entre los líderes de dos o más gobiernos.",
]
d_reps = l2v.encode(documents)

q_reps_norm = torch.nn.functional.normalize(q_reps, p=2, dim=1)
d_reps_norm = torch.nn.functional.normalize(d_reps, p=2, dim=1)
cos_sim = torch.mm(q_reps_norm, d_reps_norm.transpose(0, 1))

print(cos_sim)

Funcionalidades

Similitud de frases
PEFT
Safetensors
Incrustaciones de texto
Recuperación de información
Clasificación de texto
Modelo de lenguaje
Agrupación de texto
Similitud semántica de texto
Evaluación de texto
Reordenamiento de texto
Extracción de características

Casos de uso

Recuperación de pasajes relevantes para consultas de búsqueda web
Predicción de la siguiente ficha enmascarada
Aprendizaje contrastivo no supervisado
Reordenamiento de textos