madlag/bert-large-uncased-wwm-squadv2-x2.63-f82.6-d16-hybrid-v1

madlag
Pregunta y respuesta

El modelo bert-large-uncased-whole-word-masking afinado en SQuAD v2. Este modelo fue creado utilizando la biblioteca python nn_pruning: las capas lineales contienen el 16.0% de los pesos originales. En su conjunto, el modelo contiene el 24.0% de los pesos originales. Con un simple redimensionamiento de las matrices lineales corrió 2.63 veces más rápido que el bert-large-uncased-whole-word-masking en la evaluación. En términos de precisión, su F1 es 82.57, en comparación con 85.85 para bert-large-uncased-whole-word-masking, una caída de F1 de 3.28.

Como usar

Instalar nn_pruning: contiene el script de optimización, que solo empaqueta las capas lineales en otras más pequeñas eliminando filas/columnas vacías.

pip install nn_pruning

Luego puedes usar la biblioteca transformers casi como de costumbre: solo tienes que llamar a optimize_model cuando el pipeline se haya cargado.

from transformers import pipeline
from nn_pruning.inference_model_patcher import optimize_model

qa_pipeline = pipeline(
"question-answering",
model="madlag/bert-large-uncased-wwm-squadv2-x2.63-f82.6-d16-hybrid-v1",
tokenizer="madlag/bert-large-uncased-wwm-squadv2-x2.63-f82.6-d16-hybrid-v1")

print("Parámetros de bert-large-uncased-whole-word-masking: 445.0M")
print(f"Conteo de parámetros (incluye solo pruning de cabezales, no pruning de feed forward)={int(qa_pipeline.model.num_parameters() / 1E6)}M")
qa_pipeline.model = optimize_model(qa_pipeline.model, "dense")

print(f"Conteo de parámetros después de la optimización completa={int(qa_pipeline.model.num_parameters() / 1E6)}M")
predictions = qa_pipeline({
'context': "Frédéric François Chopin, nacido Fryderyk Franciszek Chopin (1 de marzo de 1810 – 17 de octubre de 1849), fue un compositor polaco y pianista virtuoso de la era Romántica que escribió principalmente para piano solo.",
'question': "¿Quién es Frederic Chopin?",
})
print("Predictions", predictions)

Funcionalidades

Entrenado en SQuAD v2
Utiliza nn_pruning para reducir el tamaño del modelo
Corre 2.63 veces más rápido con matrices estructuradas
F1: 82.57 en comparación con 85.85 del modelo original
Insensible a mayúsculas y minúsculas
Eliminación de 190 cabezas de atención de un total de 384

Casos de uso

Responder preguntas de manera precisa
Optimización de modelos grandes reduciendo su tamaño sin perder mucha precisión
Aplicaciones que requieren procesamiento de lenguaje natural acelerado