facebook/tart-full-flan-t5-xl
facebook/tart-full-flan-t5-xl es un modelo multi-tarea de cruce entrenado mediante ajuste de instrucciones en aproximadamente 40 tareas de recuperación, que se inicia con google/flan-t5-xl. TART-full es un modelo de cruce de 1.5 mil millones y puede reordenar documentos principales dada una consulta y una instrucción en lenguaje natural (por ejemplo, encontrar un párrafo de Wikipedia que responda a esta pregunta). Los resultados experimentales en BEIR, LOTTE y nuestra nueva evaluación, X^2-Retrieval muestran que TART-full supera a los métodos anteriores de última generación aprovechando las instrucciones en lenguaje natural. Más detalles sobre el modelado y el entrenamiento están en nuestro artículo: Recuperación Consciente de Tareas con Instrucciones.
Como usar
El modelo TART-full se puede cargar a través de nuestro modelo personalizado EncT5.
from src.modeling_enc_t5 import EncT5ForSequenceClassification
from src.tokenization_enc_t5 import EncT5Tokenizer
import torch
import torch.nn.functional as F
import numpy as np
# cargar TART full y tokenizador
model = EncT5ForSequenceClassification.from_pretrained("facebook/tart-full-flan-t5-xl")
tokenizer = EncT5Tokenizer.from_pretrained("facebook/tart-full-flan-t5-xl")
model.eval()
q = "¿Cuál es la población de Tokio?"
in_answer = "recuperar un pasaje que responda a esta pregunta de Wikipedia"
p_1 = "La población de la capital de Japón, Tokio, disminuyó en unas 48,600 personas a poco menos de 14 millones a comienzos de 2022, el primer descenso desde 1996, informó el lunes el gobierno metropolitano."
p_2 = "Tokio, oficialmente la Metrópolis de Tokio (東京都, Tōkyō-to), es la capital y la ciudad más grande de Japón."
# 1. TART-full puede identificar el párrafo más relevante.
features = tokenizer(['{0} [SEP] {1}'.format(in_answer, q), '{0} [SEP] {1}'.format(in_answer, q)], [p_1, p_2], padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
scores = model(**features).logits
normalized_scores = [float(score[1]) for score in F.softmax(scores, dim=1)]
print([p_1, p_2][np.argmax(normalized_scores)]) # "La población de la capital de Japón, Tokio, disminuyó en unas 48,600 personas..."
# 2. TART-full puede identificar el documento más relevante Y que sigue las instrucciones.
in_sim = "Necesitas encontrar preguntas duplicadas en el foro Wiki. ¿Podrías encontrar una pregunta similar a esta pregunta?"
q_1 = "¿Cuántas personas viven en Tokio?"
features = tokenizer(['{0} [SEP] {1}'.format(in_sim, q), '{0} [SEP] {1}'.format(in_sim, q)], [p_1, q_1], padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
scores = model(**features).logits
normalized_scores = [float(score[1]) for score in F.softmax(scores, dim=1)]
print([p_1, q_1][np.argmax(normalized_scores)]) # "¿Cuántas personas viven en Tokio?"
Funcionalidades
- Modelo multi-tarea de cruce
- Entrenado mediante ajuste de instrucciones
- Capaz de reordenar documentos principales
- Utiliza instrucciones en lenguaje natural
- Supera los métodos anteriores de última generación
- AutoTrain Compatible
- Compatible con puntos de inferencia
Casos de uso
- Reordenar documentos principales dada una consulta
- Recuperar párrafos relevantes en Wikipedia
- Identificar documentos que sigan instrucciones específicas
- Encontrar preguntas duplicadas en foros