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.

Cómo reducir el tiempo de ejecución para la traducción utilizando mBART-50 y Hugging Face?

Estoy utilizando mBART-50 y Hugging Face para traducir entre hindi e inglés. Pero lleva mucho tiempo cargar la biblioteca. ¿Hay alguna manera de optimizarlo?
“`
from transformers import MBartForConditionalGeneration, MBart50TokenizerFast

modelo = MBartForConditionalGeneration.from_pretrained("facebook/mbart-large-50-many-to-many-mmt")

tokenizer = MBart50TokenizerFast.from_pretrained("facebook/mbart-large-50-many-to-many-mmt", src_lang="hi_IN")

texto = "मैं ठीक हूँ।"
inputs_modelo = tokenizer(texto, return_tensors="pt")
tokens_generados = modelo.generate(**inputs_modelo, forced_bos_token_id=tokenizer.lang_code_to_id["en_XX"])
traduccion = tokenizer.batch_decode(tokens_generados, skip_special_tokens=True)
print(traduccion)
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay algunas formas de optimizar el tiempo de carga del modelo MBart-50 y del tokenizador.

    1. Utiliza un modelo más pequeño o un modelo afinado específicamente para la traducción del hindi al inglés. El modelo MBart-50 es un modelo grande y de propósito general que admite la traducción multilingüe de muchos a muchos; por lo tanto, puede llevar más tiempo cargarlo que un modelo más pequeño adaptado específicamente para la traducción hindi-inglés.
    2. Precarga el modelo y el tokenizador en la memoria antes de utilizarlos. Esto se puede lograr agregando las siguientes líneas de código antes de ejecutar el código de traducción:

    from transformers import MBartForConditionalGeneration, MBart50TokenizerFast
    model= MBartForConditionalGeneration.from_pretrained("facebook/mbart-large-50-many-to-many-mmt")
    tokenizer=MBart50TokenizerFast.from_pretrained("facebook/mbart-large-50-many-to-many-mmt",src_lang="hi_IN")
    

    Esto cargará el modelo y el tokenizador en la memoria solo una vez, en lugar de cargarlos cada vez que se ejecuta el código.

    1. Implementa el procesamiento paralelo para traducir múltiples oraciones simultáneamente. Esto se puede lograr utilizando bibliotecas como multiprocessing, joblib o asyncio para distribuir la carga en múltiples núcleos de CPU e incluso en múltiples máquinas.

    Al implementar estas optimizaciones, podrás reducir significativamente el tiempo de carga del modelo MBart-50 y del tokenizador, lo que hará que el proceso de traducción sea más eficiente.

Comments are closed.