He realizado el fine-tuning de un modelo de 270M en mi portátil
Estoy probando tres formas de realizar el fine-tuning de modelos. Utilizo la misma tarea para las tres. Escalo desde el modelo más pequeño hasta el más grande.
La serie sigue este camino:
- Full Fine-Tuning (270M parámetros)
- LoRA (1.5B parámetros)
- QLoRA (7B parámetros)
Quiero entender la mecánica. No quiero seguir un tutorial a ciegas.
En este primer paso, utilicé el full fine-tuning. Este método actualiza cada peso del modelo. Es la forma más costosa de entrenar.
Utilicé el conjunto de datos Banking77. Contiene 13.000 mensajes de atención al cliente. El objetivo es identificar 77 intenciones diferentes, como tarjetas perdidas o tipos de cambio.
Elegí Gemma 3 (270M). Este modelo es lo suficientemente pequeño como para entrenarlo en un portátil utilizando Apple Silicon. El full fine-tuning requiere cuatro veces el tamaño del modelo en memoria para almacenar los gradientes y los estados del optimizador.
En lugar de añadir una cabecera de clasificación, hice que el modelo generara la intención como texto. Esto hace que el proceso sea idéntico al instruction tuning. Prepara el proyecto para los siguientes pasos.
Un paso crítico es el enmascaramiento de la pérdida. Debes indicarle al modelo que ignore el prompt y que solo se evalúe a sí mismo basándose en la etiqueta. Si te saltas esto, el modelo desperdiciará esfuerzo aprendiendo a repetir tu prompt.
Utilicé una tasa de aprendizaje baja de 5e-5. Las tasas de aprendizaje altas destruyen el conocimiento preentrenado durante el full fine-tuning. Una tasa de 2e-4 hizo que el modelo fallara.
Los resultados:
- 96% de precisión en intenciones comunes.
- El modelo funciona bien en un portátil.
- Todavía confunde la llegada de la tarjeta con las estimaciones de entrega.
En la Parte 2, utilizaré un modelo cinco veces más grande. Entrenaré menos del 1% de sus pesos utilizando LoRA. Veré si puedo obtener la misma precisión.
Fuente: https://dev.to/sumanpro/i-fine-tuned-a-270m-model-on-my-laptop-full-fine-tuning-from-scratch-3p4l
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi