Framework léger pour l'entraînement de GPT, permettant d'entraîner complètement un petit modèle de langage de 26M de paramètres à partir de zéro en 2 heures.
MiniMind - Framework d'entraînement GPT ultra-léger
Aperçu du projet
MiniMind est un framework d'entraînement de grands modèles de langage extrêmement léger, dont la version minimale représente seulement 1/7000 de la taille de GPT-3, et qui peut être entraîné rapidement sur un GPU personnel ordinaire. Ce projet permet d'entraîner complètement un petit modèle GPT de 26M de paramètres à partir de zéro en 2 heures.
Caractéristiques principales
🚀 Conception ultra-légère
- Quantité de paramètres extrêmement faible: Le modèle minimal ne nécessite que 26M (0.02B) de paramètres pour obtenir des capacités de conversation fluides.
- Entraînement efficace: Prend en charge l'entraînement complet en 2 heures sur une seule carte graphique 3090.
- Respectueux des ressources: Peut être exécuté sur un GPU personnel ordinaire, ce qui réduit considérablement la barrière à l'entrée de l'entraînement.
🧠 Écosystème d'entraînement complet
Le projet met à disposition en open source une structure simplifiée de grands modèles, comprenant les fonctionnalités essentielles suivantes :
- Pré-entraînement (Pretraining) - Entraîner un modèle de langage de base à partir de zéro.
- Finetuning supervisé (SFT) - Finetuning supervisé par instructions.
- Finetuning LoRA - Technique de finetuning par adaptation de rang faible.
- Algorithme DPO - Algorithme d'optimisation directe des préférences.
- Distillation de modèle - Algorithme de distillation des connaissances.
- Extension MoE - Prise en charge des modèles d'experts mixtes.
🎯 Architecture technique
Support du framework
- PyTorch natif: Construit sur le framework PyTorch natif, prend en charge l'accélération multi-GPU.
- Forte compatibilité: Compatible avec les frameworks courants tels que transformers, accelerate, trl, peft.
- Déploiement flexible: Prend en charge les configurations d'entraînement sur un seul GPU et sur plusieurs GPU (DDP, DeepSpeed).
Caractéristiques de l'entraînement
- Reprise de l'entraînement: Le processus d'entraînement peut être arrêté et repris à tout moment.
- Entraînement multi-cartes: Prend en charge l'entraînement distribué DDP, extensible à un cluster multi-machines et multi-cartes.
- Intégration de la surveillance: Prend en charge l'enregistrement et la visualisation du processus d'entraînement wandb.
🌟 Extension multimodale
Version multimodale visuelle MiniMind-V
- Compréhension visuelle: Extension au VLM multimodal visuel : MiniMind-V.
- Architecture unifiée: Basé sur le modèle de langage MiniMind comme base, ajout de capacités d'encodage visuel.
📊 Capacités du modèle
MiniMind est capable d'effectuer diverses tâches, notamment la génération de texte, l'interaction conversationnelle et la recherche de connaissances. Il peut générer du texte, interagir dans des conversations et rechercher des connaissances sur divers sujets en fonction d'invites ou de contextes donnés.
Fonctions principales
- Génération de texte: Générer un contenu textuel cohérent basé sur des invites.
- Interaction conversationnelle: Prend en charge les conversations et les questions-réponses à plusieurs tours.
- Recherche de connaissances: Possède une certaine capacité de question-réponse sur les connaissances.
- Compréhension du code: Prend en charge la génération et la compréhension de code de base.
🎓 Valeur éducative
L'objectif de ce projet est de réduire la barrière à l'apprentissage des LLM, afin que chacun puisse entraîner un très petit modèle de langage en commençant par comprendre chaque ligne de code. Le projet adopte le concept de "construire un avion avec des blocs", permettant aux utilisateurs de comprendre en profondeur l'implémentation sous-jacente des LLM, au lieu d'être isolés par un encapsulage de haut niveau.
💻 Méthode d'utilisation
Exigences environnementales
- PyTorch 2.1.2+
- CUDA 12.2+
- Flash Attention 2
- RTX 3090 ou GPU plus performant (recommandé)
Démarrage rapide
# Cloner le projet
git clone https://github.com/jingyaogong/minimind.git
cd minimind
# Installer les dépendances
pip install -r requirements.txt
# Entraînement sur un seul GPU
python train.py
# Entraînement multi-GPU (N>1)
torchrun --nproc_per_node N train.py
Configuration de l'entraînement
# Activer la surveillance wandb
wandb login
python train.py --use_wandb
# Spécifier le nom du projet
python train.py --wandb_project "my_minimind" --wandb_run_name "experiment_1"
🔄 Processus d'entraînement
- Préparation des données: Nettoyage et prétraitement des ensembles de données.
- Pré-entraînement: Entraînement non supervisé sur des données textuelles à grande échelle.
- Finetuning par instructions: Finetuning supervisé à l'aide de données d'instructions.
- Optimisation des préférences: Optimisation des préférences de sortie du modèle via l'algorithme DPO.
- Évaluation du modèle: Test des performances sur des ensembles de données de référence tels que Ceval.
📈 Performances
- Vitesse d'entraînement: Testé sur un GPU RTX 3090, en utilisant Torch 2.1.2, CUDA 12.2 et Flash Attention 2.
- Qualité de la conversation: Une conversation fluide peut être obtenue avec seulement 26M de paramètres.
- Consommation de ressources: Faible occupation de la mémoire vidéo, adapté aux développeurs individuels.
🌍 Écosystème communautaire
- Open source et gratuit: Entièrement open source, tout le code de l'algorithme de base est public.
- Documentation complète: Fournit une documentation détaillée en anglais et en chinois.
- Mise à jour continue: Communauté de développement active, itération continue des fonctionnalités.
- Adapté à l'éducation: Adapté à l'apprentissage et à l'enseignement.
🔗 Projets connexes
- Projet principal: minimind
- Version multimodale: minimind-v
- Version MoE: minimind-v1-moe
Conclusion
MiniMind est un framework d'entraînement LLM léger révolutionnaire qui prouve qu'il est possible d'entraîner des modèles de langage dotés de capacités de conversation pratiques avec des ressources de calcul limitées. Ce projet fournit non seulement une chaîne d'outils d'entraînement complète, mais surtout, il offre aux apprenants et aux chercheurs en IA une excellente plateforme pour comprendre les mécanismes internes des LLM. Grâce au concept de "partir de zéro et comprendre chaque ligne de code", MiniMind démocratise la technologie de l'intelligence artificielle, permettant à davantage de personnes de participer au développement et à la recherche de grands modèles.