1 points par GN⁺ 2024-01-23 | 1 commentaires | Partager sur WhatsApp

Fine-tuner efficacement des LLM avec la technique LoRA

  • LoRA (Low-Rank Adaptation) est une technique permettant de fine-tuner plus efficacement les LLM (Large Language Models).
  • Au lieu d’ajuster l’ensemble des paramètres du réseau de neurones, LoRA ne met à jour qu’un petit nombre de matrices de bas rang.

Suivre les exemples de code

  • Tout le code présenté dans l’article est disponible dans le Studio associé.
  • Cliquez sur « Run » pour obtenir une copie complète de l’environnement de code et être prêt à exécuter les fichiers.

Comprendre LoRA

  • Les LLM préentraînés sont appelés modèles de base en raison de leur polyvalence sur une grande variété de tâches.
  • L’adaptation d’un LLM préentraîné à un jeu de données ou à une tâche spécifique se fait par le fine-tuning.
  • LoRA offre une alternative plus efficace en approximant les modifications des poids des couches pendant l’entraînement sous une forme de bas rang.

Coder LoRA à partir de zéro

  • Une couche LoRA peut être implémentée ainsi dans PyTorch.
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 s’applique principalement aux couches linéaires (feedforward) des réseaux de neurones.

Fine-tuning avec LoRA -- exemple pratique

  • LoRA peut s’appliquer à divers types de réseaux de neurones, et pas seulement à GPT ou aux modèles de génération d’images.
  • Un exemple pratique montre l’application à un petit modèle BERT pour une tâche de classification de texte.

Comparaison avec le fine-tuning traditionnel

  • La configuration de base de LoRA atteint une précision de test de 89,44 %.
  • Par rapport au fine-tuning traditionnel, LoRA offre de meilleures performances avec moins de paramètres.

Optimiser les réglages de LoRA

  • Il est possible d’améliorer les performances en ajustant les hyperparamètres de LoRA.
  • On peut trouver la configuration optimale en testant différentes combinaisons d’hyperparamètres.

Conclusion

  • En codant LoRA à partir de zéro puis en fine-tunant un modèle DistilBERT sur une tâche de classification, on constate que LoRA offre de meilleures performances que le fine-tuning de la seule dernière couche du modèle.

L’avis de GN⁺

  • LoRA est une technologie importante pour fine-tuner efficacement les grands modèles de langage, avec un fort potentiel de réduction des coûts de calcul à mesure que la taille des modèles augmente.
  • Des exemples concrets permettent de comprendre comment appliquer LoRA et de développer la capacité à l’utiliser sur des problèmes réels.
  • Le processus d’ajustement des hyperparamètres de LoRA pour optimiser les performances illustre une approche classique du réglage des modèles de machine learning.

1 commentaires

 
GN⁺ 2024-01-23
Avis Hacker News
  • Je suis la technique via LLMs 101 de Maxime Labonne. Je trouve toujours étrange qu’en informatique on dise encore : « on ne sait pas exactement comment les hyperparamètres influencent le résultat, alors essayez différentes valeurs et trouvez la meilleure ».
  • LoRA et LoRa sont différents, et il y a une frustration face à la confusion créée par l’utilisation du même acronyme.
  • Il n’est toujours pas clair de savoir quand il faut faire du fine-tuning. Avant, je pensais que c’était destiné à modifier le comportement du modèle, mais récemment, on dirait que certaines entreprises l’utilisent pour ajouter des connaissances.
  • Il y a une question sur les principaux cas d’usage du fine-tuning.
  • C’est un bon article sur LoRA. Je ne suis pas spécialiste du domaine, mais je crois comprendre que dans l’article original, LoRA n’était appliqué qu’à la dernière couche dense. Il vaut la peine de noter que cette méthode est utilisée dans QLoRA et semble produire des effets intéressants.
  • Je ne comprends pas vraiment pourquoi LoRA fonctionne. Je comprends l’idée de l’appliquer à la dernière couche, mais je ne saisis pas la logique de l’appliquer de manière répétée à chaque couche linéaire. Quelqu’un peut-il expliquer l’intuition ?
  • J’aimerais que le protocole radio LoRa sans fil soit open source.
  • Je m’attendais à quelque chose sur la radio logicielle, mais c’est quand même intéressant.
  • J’ai ajouté un exercice pour implémenter la passe avant de LoRA à partir de zéro. L’idée de LoRA est élégante et l’implémentation est assez simple.
  • Il y a une question sur les bibliothèques les plus populaires pour le fine-tuning.
  • Je préfère l’approche basée sur la configuration d’Axolotl plutôt que de partir de zéro. Axolotl prend en charge mistral, llama-2, ainsi que beaucoup de techniques récentes.
  • Je me concentre sur le fine-tuning orienté données et sur la collecte et la curation des données de fine-tuning, plutôt que d’apprendre LoRA depuis zéro.