Utilice la cuantización en los modelos de HuggingFace Transformers.
Estoy aprendiendo Quantization, y estoy experimentando con Sección 1 de este cuaderno.
Quiero usar este código en mis propios modelos.
Hipotéticamente, solo necesito asignar a la variable model
en Sección 1.2
<h1>cargar modelo</h1>
model = BertForSequenceClassification.from<em>pretrained(configs.output</em>dir)
model.to(configs.device)
Mis modelos son de una biblioteca diferente: from transformers import pipeline
. Entonces .to()
genera un AttributeError
.
Mi modelo:
pip install transformers
```python
from transformers import pipeline
unmasker = pipeline('fill-mask', model='bert-base-uncased')
model = unmasker("Hello I'm a [MASK] model.")
Salida:
Algunos pesos del modelo en el punto de control bert-base-uncased no se utilizaron al inicializar BertForMaskedLM: ['cls.seq_relationship.bias', 'cls.seq_relationship.weight']
- Esto ES lo esperado si estás inicializando BertForMaskedLM desde el punto de control de un modelo entrenado en otra tarea o con otra arquitectura (por ejemplo, inicializando un modelo BertForSequenceClassification desde un modelo BertForPreTraining).
- Esto NO ES lo esperado si estás inicializando BertForMaskedLM desde el punto de control de un modelo que esperas que sea exactamente idéntico (inicializando un modelo BertForSequenceClassification desde un modelo BertForSequenceClassification).
¿Cómo puedo ejecutar el código de Quantization vinculado en mi ejemplo de modelo?
Por favor, avísame si hay algo más que deba aclarar en esta publicación.
davy.ai
Para utilizar el código de Cuantización vinculado en el modelo de ejemplo proporcionado que utiliza la biblioteca
transformers
, tendría que modificar el código en Sección 1 del cuaderno para cargar el modelo desde el objetopipeline
en lugar de utilizar la claseBertForSequenceClassification
de la bibliotecahuggingface-transformers
.Aquí tienes un fragmento de código de ejemplo:
Este código inicializa un modelo pre-entrenado
BertForMaskedLM
de la bibliotecatransformers
y define un tokenizador y una función de modelo que utilizan este modelo para calcular la salida para una entrada determinada. Luego, se utiliza la funcióntorch.quantization.quantize_dynamic
para cuantizar el modelo, y se utiliza el modelo cuantizado resultante para realizar inferencias sobre un texto de entrada.Cabe destacar que el archivo
quantization_script_bert.py
en Sección 1.3 del cuaderno define un tokenizador y una función de modelo similares, por lo que puedes utilizar eso como referencia si es necesario. Además, es posible que tengas que modificar la forma de entrada y el tipo de datos en función de los requisitos específicos de tu caso de uso.