madlag/bert-base-uncased-squadv1-x1.96-f88.3-d27-hybrid-filled-opt-v1

madlag
Pregunta y respuesta

Este modelo fue creado utilizando la biblioteca Python nn_pruning: las capas lineales contienen el 27.0% de los pesos originales. Este modelo NO se puede usar sin la función optimize_model de nn_pruning, ya que utiliza NoNorms en lugar de LayerNorms y esto no es actualmente compatible con la biblioteca Transformers. Utiliza ReLUs en lugar de GeLUs como en la red BERT inicial, para acelerar la inferencia. Esto no necesita manejo especial, ya que es compatible con la biblioteca Transformers y está marcado en la configuración del modelo con la entrada "hidden_act": "relu". El modelo contiene el 43.0% de los pesos originales en total (las incrustaciones representa una parte significativa del modelo y no se podan con este método). Con un simple redimensionamiento de las matrices lineales, corrió 1.96 veces más rápido que bert-base-uncased en la evaluación. Esto es posible porque el método de poda llevó a matrices estructuradas. En términos de precisión, su F1 es 88.33, en comparación con 88.5 para bert-base-uncased, una caída de F1 de 0.17.

Como usar

Instalar nn_pruning: contiene el script de optimización, que simplemente empaqueta las capas lineales en 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-base-uncased-squadv1-x1.96-f88.3-d27-hybrid-filled-opt-v1",
  tokenizer="madlag/bert-base-uncased-squadv1-x1.96-f88.3-d27-hybrid-filled-opt-v1")

print("bert-base-uncased parameters: 191.0M")
print(f"Parameters count (includes only head pruning, not feed forward pruning)={int(qa_pipeline.model.num_parameters() / 1E6)}M")
qa_pipeline.model = optimize_model(qa_pipeline.model, "dense")

print(f"Parameters count after complete optimization={int(qa_pipeline.model.num_parameters() / 1E6)}M")
predictions = qa_pipeline({
  'context': "Frédéric François Chopin, born Fryderyk Franciszek Chopin (1 March 1810 – 17 October 1849), was a Polish composer and virtuoso pianist of the Romantic era who wrote primarily for solo piano.",
  'question': "¿Quién es Frédéric Chopin?",
})
print("Predictions", predictions)

Funcionalidades

Modelo BERT-base uncased afinado en SQuAD v1
Las capas lineales contienen el 27.0% de los pesos originales
Utiliza NoNorms en lugar de LayerNorms
Utiliza ReLUs en lugar de GeLUs para acelerar inferencia
El modelo contiene el 43.0% de los pesos originales en total
Corre 1.96 veces más rápido que bert-base-uncased en la evaluación
Método de poda resultó en matrices estructuradas

Casos de uso

Respuestas a preguntas en contexto
Aplicaciones de procesamiento de lenguaje natural
Mejora de eficiencia en modelos BERT
Aceleración de inferencias con modelado eficiente