valhalla/longformer-base-4096-finetuned-squadv1
Este es el modelo longformer-base-4096 afinado en el conjunto de datos SQuAD v1 para la tarea de respuesta a preguntas. El modelo Longformer fue creado por Iz Beltagy, Matthew E. Peters, Arman Coha de AllenAI. Como explica el artículo, Longformer es un modelo similar a BERT para documentos largos. El modelo preentrenado puede manejar secuencias de hasta 4096 tokens. Este modelo se entrenó en una GPU v100 de Google Colab. Algunas cosas a tener en cuenta al entrenar longformer para la tarea de QA, por defecto longformer usa atención local de ventana deslizante en todos los tokens. Pero para la QA, todos los tokens de la pregunta deben tener atención global. Para más detalles sobre esto, consulte el artículo. El modelo LongformerForQuestionAnswering lo hace automáticamente. Para permitir que lo haga, la secuencia de entrada debe tener tres tokens de separación, es decir, la secuencia debería estar codificada así: pregunta contexto. Si codifica la pregunta y la respuesta como un par de entrada, entonces el tokenizador se encarga de eso, no debería preocuparse por eso. Los input_ids siempre deben ser un lote de ejemplos.
Como usar
import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
tokenizer = AutoTokenizer.from_pretrained("valhalla/longformer-base-4096-finetuned-squadv1")
model = AutoModelForQuestionAnswering.from_pretrained("valhalla/longformer-base-4096-finetuned-squadv1")
text = "Huggingface ha democratizado el PLN. Muchas gracias a Huggingface por esto."
question = "¿Qué ha hecho Huggingface?"
encoding = tokenizer(question, text, return_tensors="pt")
input_ids = encoding["input_ids"]
# por defecto, la atención es local en todas partes
# el método forward establecerá automáticamente la atención global en los tokens de la pregunta
attention_mask = encoding["attention_mask"]
start_scores, end_scores = model(input_ids, attention_mask=attention_mask)
todos_los_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())
answer_tokens = todos_los_tokens[torch.argmax(start_scores) :torch.argmax(end_scores)+1]
respuesta = tokenizer.decode(tokenizer.convert_tokens_to_ids(answer_tokens))
# salida => PLN democratizado
Funcionalidades
- Modelo similar a BERT para documentos largos
- Maneja secuencias de hasta 4096 tokens
- Atención local de ventana deslizante por defecto
- Atención global para tokens de preguntas en la tarea de QA
Casos de uso
- Respuesta a preguntas en documentos largos y complejos
- Sistemas de preguntas y respuestas automatizados
- Asistentes virtuales y chatbots avanzados
- Análisis de documentos extensos