es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mejore el tiempo de predicción del modelo en modelos de transformadores Huggingface sin GPU.

Estoy utilizando los modelos de huggingface transformers para varias tareas y funciona bien, pero el único problema es el tiempo de respuesta. Tarda alrededor de 6-7 segundos en generar el resultado, mientras que a veces incluso tarda alrededor de 15-20 segundos. Lo intenté en Google Colab usando GPU, el rendimiento en GPU es demasiado rápido, procesa el resultado en solo unos segundos. Dado que hay una limitación de GPU en mi servidor actual, ¿hay alguna manera de aumentar el tiempo de respuesta de los modelos utilizando solo la CPU?

Actualmente estoy utilizando la Sumarización de Texto utilizando el Modelo GooglePegasus:
https://huggingface.co/google/pegasus-xsum

Y Parrot Paraphrasing: que internamente usa el modelo bert de transformers
https://huggingface.co/prithivida/parrotparaphraseron_T5

Aquí está el código para el Modelo Pegasus:

from transformers import PegasusTokenizer, TFPegasusForConditionalGeneration

model = TFPegasusForConditionalGeneration.from_pretrained(‘google/pegasus-xsum’)
tokenizer = PegasusTokenizer.from_pretrained(‘google/pegasus-xsum’)

ARTICLE_TO_SUMMARIZE = (
“Este es el texto a resumir”
)
inputs = tokenizer([ARTICLE_TO_SUMMARIZE], max_length=1024, return_tensors=’tf’)

Genera Resumen

summary_ids = model.generate(inputs[‘input_ids’])
print([tokenizer.decode(g, skip_special_tokens=True, clean_up_tokenization_spaces=False) para g in summary_ids])

¡Cualquier mejora pequeña también ayudará!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay algunas cosas que se pueden hacer para mejorar el tiempo de respuesta de los modelos al ejecutarlos en CPU:

    1. Procesamiento por lotes: al ejecutar la inferencia en CPU, puede ser beneficioso procesar las entradas en lotes en lugar de una por una. Esto puede ayudar a reducir la sobrecarga de carga del modelo y sus parámetros, y mejorar el rendimiento general. Para lograr esto, los datos de entrada se pueden dividir en trozos más pequeños y procesar en paralelo, utilizando herramientas como multiprocessing o joblib.

    2. Reducir la longitud de entrada: dependiendo de la tarea y la arquitectura específica del modelo, puede ser posible reducir la longitud de los datos de entrada sin comprometer el rendimiento. Por ejemplo, para la resumen de texto, fragmentos de texto más cortos pueden ser más fáciles de procesar y ofrecer resultados más precisos que cadenas más largas. Además, algunos modelos pueden tener una longitud máxima de entrada que es menor cuando se usa CPU en comparación con GPU, por lo que vale la pena verificar cualquier limitación de este tipo.

    3. Optimización del modelo: dependiendo de la arquitectura y la implementación específicas del modelo, puede haber formas de optimizar los parámetros y cálculos utilizados para acelerar la inferencia en CPU. Esto podría implicar técnicas como la poda, cuantificación o convertir el modelo a un formato de gráfico estático.

    4. Usar una CPU más rápida: si el servidor actual tiene limitaciones de CPU que están impidiendo un rendimiento óptimo del modelo, una actualización a una CPU de mayor velocidad puede ayudar a acelerar los tiempos de inferencia.

Comments are closed.