Table des matières
Écrivez LoRA à partir de zéro
Comment commencer à utiliser LoRA pour un réglage précis
Maison Périphériques technologiques IA Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Mar 20, 2024 pm 03:06 PM
ai 训练

LoRA (Low-Rank Adaptation) est une technique populaire conçue pour affiner les grands modèles de langage (LLM). Cette technologie a été initialement proposée par des chercheurs de Microsoft et incluse dans l'article « LORA : LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS ». LoRA diffère des autres techniques en ce sens qu'au lieu d'ajuster tous les paramètres du réseau neuronal, elle se concentre sur la mise à jour d'un petit nombre de matrices de bas rang, réduisant ainsi considérablement la quantité de calcul requise pour entraîner le modèle.

Étant donné que la qualité du réglage fin de LoRA est comparable à celle du réglage fin du modèle complet, de nombreuses personnes appellent cette méthode un artefact de réglage fin. Depuis sa sortie, de nombreuses personnes sont curieuses de connaître cette technologie et souhaitent écrire du code pour mieux comprendre la recherche. Dans le passé, le manque de documentation appropriée était un problème, mais nous disposons désormais de didacticiels pour vous aider.

L'auteur de ce tutoriel est Sebastian Raschka, un chercheur bien connu en apprentissage automatique et en IA. Il a déclaré que parmi les diverses méthodes efficaces de réglage fin du LLM, LoRA reste son premier choix. À cette fin, Sebastian a écrit un blog "Code LoRA From Scratch" pour construire LoRA à partir de zéro. Selon lui, c'est une bonne méthode d'apprentissage.

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Cet article présente l'adaptation de bas rang (LoRA) en écrivant du code à partir de zéro. Sebastian a affiné le modèle DistilBERT dans l'expérience et l'a appliqué à la tâche de classification.

Les résultats de comparaison entre la méthode LoRA et la méthode de réglage fin traditionnelle montrent que la méthode LoRA atteint 92,39 % en précision de test, ce qui est supérieur au réglage fin uniquement des dernières couches du modèle (précision de test de 86,22 % ) performance. Cela montre que la méthode LoRA présente des avantages évidents dans l'optimisation des performances du modèle et peut mieux améliorer la capacité de généralisation et la précision de prévision du modèle. Ce résultat souligne l'importance d'adopter des techniques et des méthodes avancées lors de la formation et du réglage du modèle pour obtenir de meilleures performances et de meilleurs résultats. En comparant comment

Sebastian y parvient, jetons un coup d'œil ci-dessous.

Écrivez LoRA à partir de zéro

Expliquer une couche LoRA dans le code est comme ceci :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

où in_dim est la dimension d'entrée de la couche que vous souhaitez modifier à l'aide de LoRA, correspondant à ce out_dim est la dimension de sortie de la couche. Un hyperparamètre, le facteur d'échelle alpha, est également ajouté au code. Des valeurs alpha plus élevées signifient des ajustements plus importants du comportement du modèle, et des valeurs plus faibles signifient le contraire. De plus, cet article initialise la matrice A avec des valeurs plus petites provenant d'une distribution aléatoire et initialise la matrice B avec des zéros.

Il convient de mentionner que là où LoRA entre en jeu, c'est généralement la couche linéaire (feedforward) d'un réseau neuronal. Par exemple, pour un simple modèle ou module PyTorch avec deux couches linéaires (par exemple, il peut s'agir d'un module feedforward du bloc Transformer), la méthode forward peut être exprimée comme suit :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Lors de l'utilisation de LoRA, elle Il est courant d'ajouter des mises à jour LoRA à la sortie de ces couches linéaires, et le code résultant est le suivant :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Si vous souhaitez implémenter LoRA en modifiant un modèle PyTorch existant, un moyen simple consiste à chaque couche linéaire est remplacé par une couche LinearWithLoRA :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Les concepts ci-dessus sont résumés dans la figure ci-dessous :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Afin d'appliquer LoRA, cet article remplace les couches linéaires existantes dans le réseau neuronal par une combiné La couche linéaire d'origine et la couche LinearWithLoRA de LoRALayer.

Comment commencer à utiliser LoRA pour un réglage précis

LoRA peut être utilisé pour des modèles tels que GPT ou la génération d'images. Pour une explication simple, cet article utilise un petit modèle BERT (DistilBERT) pour la classification de texte.

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Étant donné que cet article entraîne uniquement de nouveaux poids LoRA, vous devez définir require_grad de tous les paramètres entraînables sur False pour geler tous les paramètres du modèle :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Ensuite, utilisez print (model) pour vérifier le modèle. structure de :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

On peut voir sur la sortie que le modèle se compose de 6 couches de transformateur, dont des couches linéaires :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

De plus, le modèle a deux couches de sortie linéaires :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

LoRA peut éventuellement être activé pour ces couches linéaires en définissant la fonction d'affectation et la boucle suivantes :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Vérifiez à nouveau le modèle en utilisant print (model) pour vérifier sa structure mise à jour :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Comme vous pouvez le voir ci-dessus, le calque Linear a été remplacé avec succès par le calque LinearWithLoRA. 92,15 %

Précision du test : 89,44 %

  • Dans la section suivante, cet article compare ces résultats de réglage fin LoRA avec les résultats de réglage fin traditionnels.
  • Comparaison avec les méthodes de réglage fin traditionnelles
  • Dans la section précédente, LoRA a atteint une précision de test de 89,44 % avec les paramètres par défaut. Comment cela se compare-t-il aux méthodes de réglage fin traditionnelles ?
À titre de comparaison, cet article a mené une autre expérience, en prenant comme exemple l'entraînement du modèle DistilBERT, mais n'a mis à jour que les 2 dernières couches pendant l'entraînement. Les chercheurs y sont parvenus en gelant tous les poids du modèle, puis en dégelant les deux couches de sortie linéaires :

La performance de classification obtenue en entraînant uniquement les deux dernières couches est la suivante :

Précision de l'entraînement : 86,68 %

Précision de la validation : 87,26 %

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Précision du test : 86,22 %

  • Les résultats montrent que LoRA fonctionne mieux que la méthode traditionnelle de réglage fin des deux dernières couches, mais elle utilise 4 fois moins de paramètres . Le réglage fin de toutes les couches a nécessité la mise à jour de 450 fois plus de paramètres que la configuration LoRA, mais n'a amélioré la précision des tests que de 2 %.
  • Optimiser la configuration LoRA
  • Les résultats mentionnés ci-dessus sont tous effectués par LoRA avec les paramètres par défaut. Les hyperparamètres sont les suivants :

Si l'utilisateur souhaite essayer différentes configurations d'hyperparamètres, vous pouvez. utilisez la commande suivante :

Cependant, la configuration optimale des hyperparamètres est la suivante :

Comment écrire du code LoRA à partir de zéro, voici un tutoriel

Sous cette configuration, le résultat est :

  • Précision de validation : 92,96 %
  • Précision du test : 92,39 %

Il convient de noter que même s'il n'y a qu'un petit ensemble de paramètres entraînables dans le réglage LoRA (500k VS 66M), la précision est encore légèrement supérieure à la précision obtenue avec un réglage fin complet.

Lien original : https://lightning.ai/lightning-ai/studios/code-lora-from-scratch?cnotallow=f5fc72b1f6eeeaf74b648b2aa8aaf8b6

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment optimiser les performances de Debian Readdir Comment optimiser les performances de Debian Readdir Apr 13, 2025 am 08:48 AM

Dans Debian Systems, les appels du système ReadDir sont utilisés pour lire le contenu des répertoires. Si ses performances ne sont pas bonnes, essayez la stratégie d'optimisation suivante: simplifiez le nombre de fichiers d'annuaire: divisez les grands répertoires en plusieurs petits répertoires autant que possible, en réduisant le nombre d'éléments traités par appel ReadDir. Activer la mise en cache de contenu du répertoire: construire un mécanisme de cache, mettre à jour le cache régulièrement ou lorsque le contenu du répertoire change et réduire les appels fréquents à Readdir. Les caches de mémoire (telles que Memcached ou Redis) ou les caches locales (telles que les fichiers ou les bases de données) peuvent être prises en compte. Adoptez une structure de données efficace: si vous implémentez vous-même la traversée du répertoire, sélectionnez des structures de données plus efficaces (telles que les tables de hachage au lieu de la recherche linéaire) pour stocker et accéder aux informations du répertoire

Comment implémenter le tri des fichiers par Debian Readdir Comment implémenter le tri des fichiers par Debian Readdir Apr 13, 2025 am 09:06 AM

Dans Debian Systems, la fonction ReadDir est utilisée pour lire le contenu du répertoire, mais l'ordre dans lequel il revient n'est pas prédéfini. Pour trier les fichiers dans un répertoire, vous devez d'abord lire tous les fichiers, puis les trier à l'aide de la fonction QSORT. Le code suivant montre comment trier les fichiers de répertoire à l'aide de ReadDir et QSort dans Debian System: # include # include # include # include # include // Fonction de comparaison personnalisée, utilisée pour qsortintCompare (constvoid * a, constvoid * b) {returnstrcmp (* (

Comment définir le niveau de journal Debian Apache Comment définir le niveau de journal Debian Apache Apr 13, 2025 am 08:33 AM

Cet article décrit comment ajuster le niveau de journalisation du serveur Apacheweb dans le système Debian. En modifiant le fichier de configuration, vous pouvez contrôler le niveau verbeux des informations de journal enregistrées par Apache. Méthode 1: Modifiez le fichier de configuration principal pour localiser le fichier de configuration: le fichier de configuration d'Apache2.x est généralement situé dans le répertoire / etc / apache2 /. Le nom de fichier peut être apache2.conf ou httpd.conf, selon votre méthode d'installation. Modifier le fichier de configuration: Ouvrez le fichier de configuration avec les autorisations racine à l'aide d'un éditeur de texte (comme Nano): Sutonano / etc / apache2 / apache2.conf

Comment Debian OpenSSL empêche les attaques de l'homme au milieu Comment Debian OpenSSL empêche les attaques de l'homme au milieu Apr 13, 2025 am 10:30 AM

Dans Debian Systems, OpenSSL est une bibliothèque importante pour le chiffrement, le décryptage et la gestion des certificats. Pour empêcher une attaque d'homme dans le milieu (MITM), les mesures suivantes peuvent être prises: utilisez HTTPS: assurez-vous que toutes les demandes de réseau utilisent le protocole HTTPS au lieu de HTTP. HTTPS utilise TLS (Protocole de sécurité de la couche de transport) pour chiffrer les données de communication pour garantir que les données ne sont pas volées ou falsifiées pendant la transmission. Vérifiez le certificat de serveur: vérifiez manuellement le certificat de serveur sur le client pour vous assurer qu'il est digne de confiance. Le serveur peut être vérifié manuellement via la méthode du délégué d'URLSession

Méthode d'installation du certificat de Debian Mail Server SSL Méthode d'installation du certificat de Debian Mail Server SSL Apr 13, 2025 am 11:39 AM

Les étapes pour installer un certificat SSL sur le serveur de messagerie Debian sont les suivantes: 1. Installez d'abord la boîte à outils OpenSSL, assurez-vous que la boîte à outils OpenSSL est déjà installée sur votre système. Si ce n'est pas installé, vous pouvez utiliser la commande suivante pour installer: Sudoapt-getUpDaSuDoapt-getInstallOpenSSL2. Générer la clé privée et la demande de certificat Suivant, utilisez OpenSSL pour générer une clé privée RSA 2048 bits et une demande de certificat (RSE): OpenSS

Comment Debian Readdir s'intègre à d'autres outils Comment Debian Readdir s'intègre à d'autres outils Apr 13, 2025 am 09:42 AM

La fonction ReadDir dans le système Debian est un appel système utilisé pour lire le contenu des répertoires et est souvent utilisé dans la programmation C. Cet article expliquera comment intégrer ReadDir avec d'autres outils pour améliorer sa fonctionnalité. Méthode 1: combinant d'abord le programme de langue C et le pipeline, écrivez un programme C pour appeler la fonction readdir et sortir le résultat: # include # include # include # includeIntmain (intargc, char * argv []) {dir * dir; structDirent * entrée; if (argc! = 2) {

Conseils de configuration du pare-feu Debian Mail Server Conseils de configuration du pare-feu Debian Mail Server Apr 13, 2025 am 11:42 AM

La configuration du pare-feu d'un serveur de courrier Debian est une étape importante pour assurer la sécurité du serveur. Voici plusieurs méthodes de configuration de pare-feu couramment utilisées, y compris l'utilisation d'iptables et de pare-feu. Utilisez les iptables pour configurer le pare-feu pour installer iptables (sinon déjà installé): Sudoapt-getUpDaSuDoapt-getinstalliptableView Règles actuelles iptables: Sudoiptable-L Configuration

Comment apprendre Debian Syslog Comment apprendre Debian Syslog Apr 13, 2025 am 11:51 AM

Ce guide vous guidera pour apprendre à utiliser Syslog dans Debian Systems. Syslog est un service clé dans les systèmes Linux pour les messages du système de journalisation et du journal d'application. Il aide les administrateurs à surveiller et à analyser l'activité du système pour identifier et résoudre rapidement les problèmes. 1. Connaissance de base de Syslog Les fonctions principales de Syslog comprennent: la collecte et la gestion des messages journaux de manière centralisée; Prise en charge de plusieurs formats de sortie de journal et des emplacements cibles (tels que les fichiers ou les réseaux); Fournir des fonctions de visualisation et de filtrage des journaux en temps réel. 2. Installer et configurer syslog (en utilisant RSYSLOG) Le système Debian utilise RSYSLOG par défaut. Vous pouvez l'installer avec la commande suivante: SudoaptupDatesud

See all articles