1 puntos por GN⁺ 2024-01-23 | 1 comentarios | Compartir por WhatsApp

Hacer fine-tuning eficiente de LLM con la técnica LoRA

  • LoRA (Low-Rank Adaptation) es una técnica para hacer fine-tuning de LLM (Large Language Models) de forma más eficiente.
  • En lugar de ajustar todos los parámetros de la red neuronal, LoRA solo actualiza unas pocas matrices de bajo rango.

Seguir los ejemplos de código

  • Todo el código que aparece en el artículo puede encontrarse en el Studio adjunto.
  • Haz clic en "Run" para obtener una copia completa del entorno de código y dejar listos los archivos para ejecutarlos.

Entender LoRA

  • Un LLM preentrenado se conoce como modelo base por su versatilidad en distintas tareas.
  • Ajustar un LLM preentrenado para un conjunto de datos o tarea específica se logra mediante fine-tuning.
  • LoRA ofrece una alternativa más eficiente al aproximar los cambios en los pesos de las capas durante el entrenamiento en un formato de bajo rango.

Programar LoRA desde cero

  • La capa LoRA puede implementarse en PyTorch de la siguiente manera.
class LoRALayer(torch.nn.Module):
  def __init__(self, in_dim, out_dim, rank, alpha):
    super().__init__()
    self.A = torch.nn.Parameter(...)
    self.B = torch.nn.Parameter(...)
    self.alpha = alpha

  def forward(self, x):
    return self.alpha * (x @ self.A @ self.B)
  • LoRA se aplica principalmente a las capas lineales (feedforward) de una red neuronal.

Hacer fine-tuning con LoRA -- ejemplo práctico

  • LoRA puede aplicarse a varios tipos de redes neuronales, no solo a GPT o modelos de generación de imágenes.
  • Se ofrece un ejemplo práctico aplicando un modelo BERT pequeño a una tarea de clasificación de texto.

Comparación con el fine-tuning tradicional

  • Con la configuración base de LoRA se alcanzó una precisión de prueba de 89.44%.
  • En comparación con el fine-tuning tradicional, LoRA muestra mejor rendimiento con menos parámetros.

Optimización de la configuración de LoRA

  • Es posible mejorar el rendimiento ajustando la configuración de los hiperparámetros de LoRA.
  • Se puede encontrar la mejor configuración experimentando con distintas combinaciones de hiperparámetros.

Conclusión

  • Se aprendió a programar LoRA desde cero y, al hacer fine-tuning del modelo DistilBERT para una tarea de clasificación, se confirmó que LoRA ofrece mejor rendimiento que ajustar solo la última capa del modelo.

Opinión de GN⁺

  • LoRA es una técnica importante para hacer fine-tuning eficiente de modelos de lenguaje de gran escala, con potencial para reducir costos computacionales a medida que aumenta el tamaño del modelo.
  • A través de ejemplos reales se puede entender cómo aplicar LoRA y desarrollar la capacidad de llevarlo a problemas concretos.
  • El proceso de ajustar los hiperparámetros de LoRA para optimizar el rendimiento muestra un enfoque general para afinar modelos de machine learning.

1 comentarios

 
GN⁺ 2024-01-23
Opiniones en Hacker News
  • Estoy siguiendo la tecnología a través de LLMs 101 de Maxime Labonne. Todavía se me hace extraño que en informática se siga diciendo: "como no sabemos exactamente cómo afectan los hiperparámetros al resultado, prueba varios valores y quédate con el mejor".
  • LoRA y LoRa son cosas distintas, y hay molestia por la confusión que genera que usen la misma sigla.
  • Todavía no está claro cuándo hay que hacer fine-tuning. Antes lo veía como algo para cambiar el comportamiento del modelo, pero últimamente parece que algunas empresas lo usan para agregar conocimiento.
  • Hay una pregunta sobre cuáles son los principales casos de uso del fine-tuning.
  • Es un buen artículo sobre LoRA. No soy experto en el tema, pero entiendo que en el paper original LoRA se aplicaba solo a la última capa densa. Vale la pena notar que en QLoRA se usa este método y parece que produce efectos interesantes.
  • No termino de entender por qué LoRA funciona. Entiendo aplicarlo en la última capa, pero no la lógica de aplicarlo repetidamente en cada capa lineal. Pregunta si alguien puede explicar la intuición.
  • Expresa el deseo de que el protocolo inalámbrico LoRa fuera open source.
  • Esperaba que fuera sobre radio definida por software, pero aun así le pareció interesante.
  • Añadió un ejercicio para implementar el forward pass de LoRA desde cero. La idea de LoRA es elegante y la implementación es bastante simple.
  • Hay una pregunta sobre cuál es la biblioteca más popular para fine-tuning.
  • Prefiere el enfoque basado en configuración de Axolotl antes que empezar desde cero. Axolotl soporta mistral y llama-2, además de muchas técnicas recientes.
  • Se enfoca en el fine-tuning centrado en datos, y en lugar de aprender LoRA desde cero, se concentra en recopilar y curar datos para fine-tuning.