Home
Login

Utiliser la technique d'adaptation de faible rang LoRA pour affiner les modèles LLaMA sur du matériel grand public, afin de créer rapidement un assistant IA de suivi d'instructions similaire à ChatGPT.

Apache-2.0Jupyter Notebook 18.9ktloen Last Updated: 2024-07-29

Présentation détaillée du projet Alpaca-LoRA

Aperçu du projet

Alpaca-LoRA est un projet open source, développé par tloen, visant à reproduire les performances du modèle Alpaca de l'université de Stanford sur du matériel grand public en utilisant la technique d'adaptation à faible rang (LoRA). Ce projet fournit un modèle de suivi d'instructions de qualité similaire à text-davinci-003, et peut même être exécuté sur un Raspberry Pi (à des fins de recherche). Le code peut être facilement étendu aux modèles 13B, 30B et 65B.

Technologies clés

LoRA (Adaptation à faible rang)

  • Définition : LoRA est une méthode de fine-tuning efficace en termes de paramètres, qui permet d'adapter un modèle pré-entraîné en ajoutant un petit nombre de paramètres entraînables.
  • Avantages : Réduit considérablement les ressources de calcul et l'espace de stockage nécessaires à l'entraînement.
  • Application : Permet aux utilisateurs ordinaires de fine-tuner de grands modèles de langage sur un seul GPU grand public.

Infrastructure

  • Modèle de base : LLaMA (Large Language Model Meta AI) de Meta.
  • Données de fine-tuning : Basées sur l'ensemble de données d'instructions 52K de Stanford Alpaca.
  • Pile technologique :
    • Hugging Face PEFT (Parameter-Efficient Fine-Tuning)
    • Bibliothèque bitsandbytes de Tim Dettmers
    • Framework d'apprentissage profond PyTorch

Principales caractéristiques

1. Compatibilité matérielle

  • Configuration minimale : Un seul GPU RTX 4090
  • Temps d'entraînement : Entraînement terminé en quelques heures
  • Support de l'inférence : Supporte l'inférence de quantification 8 bits, réduisant davantage les exigences matérielles.

2. Support de plusieurs tailles de modèles

  • Modèle 7B : Adapté à la recherche et à l'apprentissage personnels
  • Modèle 13B : Meilleures performances
  • Modèles 30B et 65B : Applications de niveau professionnel

3. Facilité d'utilisation

  • Installation simple : Installation des dépendances via pip
  • Démarrage rapide : Fournit des scripts d'entraînement et d'inférence complets
  • Support Docker : Déploiement conteneurisé, réduisant la difficulté de configuration de l'environnement

Installation et utilisation

Préparation de l'environnement

# Cloner le projet
git clone https://github.com/tloen/alpaca-lora.git
cd alpaca-lora

# Installer les dépendances
pip install -r requirements.txt

Entraînement du modèle

# Commande d'entraînement de base
python finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path 'yahma/alpaca-cleaned' \
    --output_dir './lora-alpaca'

# Entraînement avec des hyperparamètres personnalisés
python finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path 'yahma/alpaca-cleaned' \
    --output_dir './lora-alpaca' \
    --batch_size 128 \
    --micro_batch_size 4 \
    --num_epochs 3 \
    --learning_rate 1e-4 \
    --cutoff_len 512 \
    --val_set_size 2000 \
    --lora_r 8 \
    --lora_alpha 16 \
    --lora_dropout 0.05 \
    --lora_target_modules '[q_proj,v_proj]' \
    --train_on_inputs \
    --group_by_length

Inférence du modèle

# Lancer le service d'inférence
python generate.py \
    --load_8bit \
    --base_model 'decapoda-research/llama-7b-hf' \
    --lora_weights 'tloen/alpaca-lora-7b'

Déploiement Docker

# Construire l'image
docker build -t alpaca-lora .

# Exécuter le conteneur
docker run --gpus=all --shm-size 64g -p 7860:7860 \
    -v ${HOME}/.cache:/root/.cache --rm alpaca-lora generate.py \
    --load_8bit \
    --base_model 'decapoda-research/llama-7b-hf' \
    --lora_weights 'tloen/alpaca-lora-7b'

Performances

Comparaison avec les modèles de référence

Le projet fournit une comparaison détaillée avec Stanford Alpaca et text-davinci-003 :

Exemple d'instruction : Dites-moi quelque chose sur les alpagas

  • Alpaca-LoRA : Fournit des informations précises et détaillées sur les alpagas, y compris les caractéristiques biologiques et les utilisations.
  • Stanford Alpaca : Réponse de haute qualité similaire
  • text-davinci-003 : Réponse du modèle OpenAI servant de référence

Tests de tâches techniques :

  • Tâches de programmation (comme la suite de Fibonacci, FizzBuzz)
  • Traduction linguistique
  • Questions-réponses factuelles
  • Raisonnement logique

Analyse des avantages

  1. Rentabilité : Réduction des coûts de plus de 99 % par rapport à l'entraînement d'un modèle complet
  2. Efficacité temporelle : Entraînement terminé en quelques heures, au lieu de plusieurs semaines
  3. Assurance qualité : Qualité de sortie proche des grands modèles commerciaux
  4. Extensibilité : Supporte l'adaptation à plusieurs langues et domaines professionnels

Écosystème et extensions

Support officiel

  • Hugging Face Hub : Hébergement des poids pré-entraînés
  • Expérience en ligne : Essai en ligne via Hugging Face Spaces
  • Support communautaire : Communauté Discord active

Extensions tierces

  1. Support multilingue :
  • Version chinoise (Chinese-Alpaca-LoRA)
  • Version japonaise (Japanese-Alpaca-LoRA)
  • Allemand, français, espagnol et bien d'autres langues
  1. Adaptation à des domaines professionnels :
  • Version entraînée sur l'ensemble de données GPT-4
  • Versions pour les domaines professionnels tels que la médecine et le droit
  • Extension multimodale (texte + image)
  1. Outils de déploiement :
  • alpaca.cpp : Version optimisée pour l'inférence CPU
  • Alpaca-LoRA-Serve : Interface Web de style ChatGPT
  • Version adaptée aux appareils mobiles

Chaîne d'outils compatible

  • llama.cpp : Moteur d'inférence CPU efficace
  • alpaca.cpp : Moteur d'inférence Alpaca spécialement optimisé
  • Format ONNX : Support du déploiement multiplateforme

Ensemble de données et entraînement

Données d'entraînement

  • Ensemble de données Stanford Alpaca : 52K paires instruction-réponse
  • Qualité des données : Données d'instructions de haute qualité générées par GPT-3.5
  • Format des données : Format standardisé de fine-tuning des instructions
  • Licence : ODC Attribution License

Projets d'amélioration des données

  1. AlpacaDataCleaned : Projet d'amélioration de la qualité des données
  2. GPT-4 Alpaca Data : Données de meilleure qualité générées par GPT-4
  3. Dolly 15k : Ensemble de données d'instructions générées manuellement

Architecture technique détaillée

Composants clés

  1. finetune.py : Script de fine-tuning principal, contenant l'implémentation de LoRA et la construction des prompts
  2. generate.py : Script d'inférence, supportant l'interface Web Gradio
  3. export_*.py : Scripts d'exportation de modèles, supportant plusieurs formats

Paramètres clés

  • lora_r : Rang de LoRA, contrôlant la taille de l'adaptateur
  • lora_alpha : Paramètre de mise à l'échelle, influençant l'impact de l'adaptateur
  • lora_dropout : Taux de dropout pour éviter le surapprentissage
  • lora_target_modules : Modules auxquels ajouter les couches LoRA

Cas d'utilisation

Utilisation à des fins de recherche

  • Recherche académique : Traitement du langage naturel, recherche en apprentissage automatique
  • Enseignement : Pratique des cours d'IA, démonstration de l'entraînement de modèles
  • Développement de prototypes : Validation rapide des idées d'applications d'IA

Applications commerciales

  • Chatbots de service client : Fine-tuning basé sur des données spécifiques au domaine
  • Génération de contenu : Génération de textes marketing, de documentation technique
  • Assistant de code : Développement d'outils d'aide à la programmation

Projets personnels

  • Assistant personnel : Assistant IA personnalisé en fonction des préférences personnelles
  • Outil d'apprentissage : Apprentissage des langues, système de questions-réponses
  • Écriture créative : Création d'histoires, génération de poèmes

Limites et précautions

Limites techniques

  1. Dépendance au modèle de base : La limite de performance est limitée par le modèle de base LLaMA
  2. Dépendance à la qualité des données : La qualité de la sortie dépend fortement de la qualité des données d'entraînement
  3. Ressources de calcul : Nécessite toujours des ressources GPU considérables pour l'entraînement

Précautions d'utilisation

  1. Problèmes de droits d'auteur : Il faut faire attention à la licence d'utilisation du modèle LLaMA
  2. Sécurité des données : Les données d'entraînement peuvent contenir des informations sensibles
  3. Biais du modèle : Peut hériter des biais du modèle de base et des données d'entraînement

Orientations futures

Améliorations techniques

  1. Méthodes d'adaptation plus efficaces : Explorer des techniques de fine-tuning plus efficaces que LoRA
  2. Support multimodal : Extension aux données multimodales telles que les images et l'audio
  3. Apprentissage en ligne : Support de l'apprentissage continu et de l'adaptation en temps réel

Construction de l'écosystème

  1. Normalisation : Établir des normes unifiées de fine-tuning et de déploiement
  2. Amélioration de la chaîne d'outils : Fournir des outils de développement et de déploiement plus complets
  3. Contribution de la communauté : Encourager davantage de développeurs à contribuer du code et des données

Conclusion

Le projet Alpaca-LoRA représente une étape importante vers la démocratisation de l'IA, rendant le fine-tuning de modèles de langage de grande qualité accessible. Grâce à la technologie LoRA, ce projet a réussi à apporter les capacités d'IA de niveau entreprise aux développeurs et chercheurs individuels.