dmlls / jizt-tfg

Servicio de Resumen de Textos con AI en la Nube (versión TFG).
https://dmlls.github.io/jizt-tfg-website/
GNU General Public License v3.0
13 stars 3 forks source link

[Hugging Face] Guardado y carga de los modelos #60

Closed dmlls closed 3 years ago

dmlls commented 3 years ago

Investigar cómo llevar a cabo el guardado y la carga de los modelos preentrenados de Hugging Face.

dmlls commented 3 years ago

La descarga y guardado de los modelos es muy sencilla, gracias a los métodos from_pretrained de la clase PreTrainedModel, de la cual heredan todos los modelos preentrenados de Hugging Face. Esa misma clase también ofrece el método save_pretrained con el objetivo de guardar el modelo descargado.

El código para la descarga y guardado de un modelo, por ejemplo el modelo t5-small sería el siguiente:

from transformers import T5Tokenizer, T5PreTrainedModel
from pathlib import Path

MODEL = 't5-base'
SAVED_TOKENIZER_PATH = Path(./tokenizer)  # this directory must exist
SAVED_MODEL_PATH = Path(./model)          # this directory must exist

t5_tokenizer = T5Tokenizer.from_pretrained(MODEL)
t5_model = T5ForConditionalGeneration.from_pretrained(MODEL)

t5_tokenizer.save_pretrained(SAVED_TOKENIZER_PATH)
t5_model.save_pretrained(SAVED_MODEL_PATH)

Cabe recordar que el tokenizer se emplea para la codificación del texto, con la cual se "alimenta" al model quien se encarga propiamente de la generación del resúmen.

Los ficheros generados en el paso anterior se almacenarían en nuestro volúmen de Kubernetes. Para cargarlos desde un pod simplemente tendríamos que usar el método from_pretrained de nuevo, solo que ahora específicando el directorio dónde está guardado el modelo, en vez de su nombre. La diferencia reside en que si específicamos el nombre, Hugging Face se encarga de descargar el modelo automáticamente, y lo guarda en la caché local de nuestro dispositivo.

Para más información, se puede consultar la documentación oficial para los métodos from_pretrained y save_pretrained.