Inferencia con Modelos PyTorch y Torch Compile en Colab
Clase 20 de 24 • Curso de Redes Neuronales con PyTorch
Resumen
¿Cómo hacer inferencia con modelos entrenados en PyTorch?
La inferencia en modelos de machine learning es fundamental para evaluar la eficacia y utilidad de los modelos ya entrenados. En este contexto, el uso de herramientas como PyTorch 2.0 ofrece una serie de posibilidades avanzadas. Este artículo te guiará a través del proceso de cómo realizar inferencia utilizando las etiquetas reales del modelo y cómo Torch Compile puede acelerar este proceso.
¿Qué es un diccionario de etiquetas y cómo se utiliza?
Al realizar inferencia, es crucial mapear las predicciones del modelo con etiquetas comprensibles. Esto se logra mediante un diccionario que traduce los números que produce el modelo en palabras claras. Para nuestro caso:
- Se utiliza un diccionario llamado
DBpedia Label
que hace el mapeo de números a palabras como "company", "artist", "athlete", entre otros. - Estas etiquetas se pueden obtener tanto de la página oficial del dataset como de otros recursos similares que trabajen con estos datasets.
¿Cómo se realiza la predicción con un modelo?
Realizar una predicción incluye el uso de una función definida como predict
en la que se introducen:
- El texto que queremos analizar.
- El
texto pipeline
, que es la forma en que el texto se transforma a un vocabulario manejable por el modelo.
Esta función convierte el texto en un formato de tensor, que es lo que el modelo puede procesar, asegurando que el gradiente no se calcule, ya que solo estamos infiriendo.
¿Qué es y cómo usamos Torch Compile?
Torch Compile es una función introducida en PyTorch 2.0 para optimizar modelos y hacer la inferencia más eficiente.
Beneficios de Torch Compile
- Reduce Overhead Mode: Ideal para modelos pequeños, optimizando la velocidad de inferencia sin aumentar excesivamente el uso de memoria.
- Max Autotune: Aunque tarda más en compilar, ofrece una ejecución muy veloz y es recomendable para modelos más grandes.
Uso práctico
Para optimizar nuestro modelo:
optMode = torch.compile(model, mode='reduce-overhead')
Este comando en PyTorch prepara nuestro modelo para una inferencia más rápida reduciendo los costos computacionales y aprovechando las capacidades del CPU.
¿Cómo interpretar la salida del modelo?
La función predict
también se encarga de retornar la etiqueta con mayor probabilidad, utilizando ArcMax
sobre las filas del tensor para encontrar el valor más alto. Se realiza el ajuste necesario (sumar 1) para alinear la numeración de las etiquetas con la que comprendemos.
Ejemplo práctico de inferencia
Puedes realizar inferencia utilizando el modelo con un ejemplo de texto. Tras pasar el modelo a CPU para ahorrar recursos, el texto pasará por la función predict
y se mapeará al diccionario DBpedia Label
para obtener la predicción en palabras claras.
model.cpu()
predicted_label = DBpediaLabel[predict(model, example_text, text_pipeline)]
print(predicted_label)
Esto nos mostrará la categoría esperada del texto ingresado.
Recomendaciones y próximos pasos
La inferencia proporciona un excelente parámetro de cómo se comporta el modelo entrenado con datos reales. Puedes mejorar el entrenamiento del modelo aumentando las épocas, incrementando los ejemplos de entrenamiento o modificando la arquitectura del modelo para lograr una precisión más alta. La práctica constante y el ajuste de hiperparámetros son esenciales para el dominio de esta compleja pero fascinante área. Mantente motivado, prueba distintos enfoques y observa cómo evoluciona tu modelo. ¡Es un viaje lleno de aprendizaje y descubrimiento!