7.0. LoRA Improvements in fine-tuning
Last updated
Last updated
El uso de LoRA reduce mucho la computación necesaria para ajustar finamente modelos ya entrenados.
LoRA hace posible ajustar finamente modelos grandes de manera eficiente al cambiar solo una pequeña parte del modelo. Reduce el número de parámetros que necesitas entrenar, ahorrando memoria y recursos computacionales. Esto se debe a que:
Reduce el Número de Parámetros Entrenables: En lugar de actualizar toda la matriz de pesos en el modelo, LoRA divide la matriz de pesos en dos matrices más pequeñas (llamadas A y B). Esto hace que el entrenamiento sea más rápido y requiera menos memoria porque se necesitan actualizar menos parámetros.
Esto se debe a que, en lugar de calcular la actualización completa de pesos de una capa (matriz), se aproxima a un producto de 2 matrices más pequeñas, reduciendo la actualización a calcular:\
2. **Mantiene los Pesos del Modelo Original Sin Cambios**: LoRA te permite mantener los pesos del modelo original iguales y solo actualizar las **nuevas matrices pequeñas** (A y B). Esto es útil porque significa que el conocimiento original del modelo se preserva y solo ajustas lo que es necesario. 3. **Ajuste Fino Específico de Tareas Eficiente**: Cuando deseas adaptar el modelo a una **nueva tarea**, puedes entrenar solo las **pequeñas matrices LoRA** (A y B) mientras dejas el resto del modelo tal como está. Esto es **mucho más eficiente** que volver a entrenar todo el modelo. 4. **Eficiencia de Almacenamiento**: Después del ajuste fino, en lugar de guardar un **modelo completamente nuevo** para cada tarea, solo necesitas almacenar las **matrices LoRA**, que son muy pequeñas en comparación con el modelo completo. Esto facilita la adaptación del modelo a muchas tareas sin usar demasiado almacenamiento.
Para implementar LoraLayers en lugar de las lineales durante un ajuste fino, se propone este código aquí https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-E/01_main-chapter-code/appendix-E.ipynb: