LitGPT - Boîte à outils de modèles de langage de grande taille haute performance
Aperçu du projet
LitGPT est une boîte à outils open source pour les grands modèles de langage développée par Lightning AI, offrant plus de 20 solutions de pré-entraînement, de fine-tuning et de déploiement à grande échelle de modèles de langage de grande taille haute performance. Ce projet est basé sur Lightning Fabric et étend Lit-LLaMA et nanoGPT, en se concentrant sur la fourniture de capacités de formation et de déploiement de LLM de niveau entreprise.
Caractéristiques principales
✅ Caractéristiques de niveau entreprise
- Licence Apache 2.0 - Prend en charge une utilisation illimitée au niveau de l'entreprise
- Convivial pour les développeurs - Implémentation en un seul fichier sans couche d'abstraction, facile à déboguer
- Optimisation des performances - Conçu pour des performances maximales, une réduction des coûts et une accélération de la formation
- Recettes validées - Recettes de formation/fine-tuning hautement optimisées testées à l'échelle de l'entreprise
✅ Caractéristiques techniques avancées
- Implémentation à partir de zéro - Tous les modèles sont écrits à partir de zéro, sans couche d'abstraction, contrôle total
- Flash Attention v2 - La dernière optimisation du mécanisme d'attention
- Prise en charge multi-GPU - Implémentation via le parallélisme de données entièrement fragmentées (FSDP)
- Optimisation de la mémoire - Déchargement CPU optionnel et prise en charge TPU/XLA
- Techniques de quantification - Prise en charge des nombres à virgule flottante 4 bits, des entiers 8 bits et de la double quantification
- Fine-tuning efficace en termes de paramètres - Prise en charge de LoRA, QLoRA, Adapter et Adapter v2
Modèles pris en charge
LitGPT prend en charge plus de 20 modèles de langage de grande taille courants, notamment :
Principales familles de modèles
- Série Llama - Llama 3, 3.1, 3.2, 3.3 (paramètres 1B-405B)
- CodeGemma - Modèle 7B spécialement conçu pour la génération de code
- Série Gemma - Modèles open source de Google
- Série Mistral - Incluant Mistral 7B et Mixtral, etc.
- Série Phi - Petits modèles efficaces de Microsoft
- Série Qwen - Modèles multilingues d'Alibaba
- DeepSeek R1 - Le dernier modèle d'inférence
Modèles spéciaux
- Série Falcon - Modèles haute performance développés par TII
- StableLM - Modèle de langage stable de Stability AI
- TinyLlama - Variante Llama légère
- SmolLM - Petit modèle de Hugging Face
Fonctionnalités principales
1. Démarrage rapide
from litgpt import LLM
llm = LLM.load("microsoft/phi-2")
text = llm.generate("Fix the spelling: Every fall, the family goes to the mountains.")
print(text)
2. Fine-tuning du modèle
Prise en charge de plusieurs méthodes de fine-tuning :
- Fine-tuning complet - Entraînement de tous les paramètres
- Fine-tuning LoRA - Fine-tuning d'adaptation de faible rang
- QLoRA - Fine-tuning LoRA quantifié
- Fine-tuning Adapter - Fine-tuning de la couche d'adaptateur
Exemple de commande :
litgpt finetune microsoft/phi-2 \
--data JSON \
--data.json_path my_custom_dataset.json \
--data.val_split_fraction 0.1 \
--out_dir out/custom-model
3. Pré-entraînement du modèle
Prise en charge de l'entraînement à partir de zéro et de la poursuite du pré-entraînement :
litgpt pretrain EleutherAI/pythia-160m \
--tokenizer_dir EleutherAI/pythia-160m \
--data TextFiles \
--data.train_data_path "custom_texts/" \
--train.max_tokens 10_000_000 \
--out_dir out/custom-model
4. Déploiement du modèle
Prise en charge du déploiement en un clic en tant que service Web :
# Déployer un modèle pré-entraîné
litgpt serve microsoft/phi-2
# Déployer un modèle personnalisé
litgpt serve out/custom-model/final
5. Évaluation du modèle
Prise en charge de plusieurs benchmarks d'évaluation :
litgpt evaluate microsoft/phi-2 --tasks 'truthfulqa_mc2,mmlu'
6. Chat interactif
litgpt chat microsoft/phi-2
Avantages techniques
Optimisation des performances
- Vitesse d'inférence optimisée - Spécialement optimisée pour une inférence rapide
- Prise en charge de la quantification - Réduit l'empreinte mémoire
- Fonctionnement GPU à faible mémoire - Prise en charge des environnements à ressources limitées
- Extension de niveau production - Prise en charge de 1 à 1000+ GPU/TPU
Optimisation de la mémoire et du calcul
- Entraînement en précision mixte - Prise en charge du mélange FP16, BF16, FP32
- Points de contrôle de gradient - Réduit l'utilisation de la mémoire
- Déchargement CPU - Traitement des modèles très volumineux
- Entraînement distribué - Prise en charge multi-nœuds multi-GPU
Entraînement configuré
LitGPT fournit des fichiers de configuration YAML validés, couvrant différents scénarios d'entraînement :
litgpt finetune \
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
Scénarios d'application
Recherche et développement
- Recherche sur les modèles - Fournit un code lisible et facile à modifier
- Expérimentation d'algorithmes - Prise en charge de la mise en œuvre rapide des dernières idées de recherche
- Tests de référence - Processus d'évaluation de modèles standardisé
Applications d'entreprise
- Modèles personnalisés - Fine-tuning de modèles pour des scénarios commerciaux spécifiques
- Déploiement en production - Déploiement de services de modèles de niveau entreprise
- Optimisation des coûts - Réduction des coûts de calcul grâce à la quantification et à l'optimisation
Éducation et apprentissage
- Convivial pour les débutants - Structure de code claire et documentation détaillée
- Enseignement pratique - Processus complet de la formation au déploiement
- Formation à la recherche - Fournit aux chercheurs des outils de base fiables
Écosystème communautaire
Prise en charge de projets connus
- Projet SAMBA - Modèle d'espace d'état hybride développé par Microsoft basé sur LitGPT
- TinyLlama - Petit modèle de 300 M de paramètres entraîné à l'aide de LitGPT
- Défi NeurIPS 2023 - Boîte à outils officielle du défi d'efficacité LLM
Communauté open source active
- Mises à jour continues - Ajout régulier de nouveaux modèles et fonctionnalités
- Contributions de la communauté - Bienvenue aux développeurs de tous niveaux
- Documentation détaillée - Tutoriels complets et documentation API
Installation et utilisation
Installation de base
pip install 'litgpt[all]'
Installation à partir du code source
git clone https://github.com/Lightning-AI/litgpt
cd litgpt
pip install -e '.[all]'
Flux d'utilisation de base
- Sélectionner un modèle - Choisir parmi plus de 20 modèles pris en charge
- Préparer les données - Utiliser des ensembles de données intégrés ou des données personnalisées
- Configurer l'entraînement - Utiliser des configurations prédéfinies ou des paramètres personnalisés
- Exécuter l'entraînement - Pré-entraîner ou fine-tuner le modèle
- Déployer le modèle - Déployer en tant que service de production
- Évaluer le modèle - Utiliser des benchmarks standard
Documentation technique
LitGPT fournit une documentation technique complète, notamment :
- Guide de démarrage rapide - Tutoriel complet de 0 à LitGPT
- Tutoriel de fine-tuning - Inclut des instructions détaillées pour LoRA, QLoRA et Adapter
- Guide de pré-entraînement - Processus complet d'entraînement de modèles à partir de zéro
- Documentation de déploiement - Meilleures pratiques pour le déploiement en environnement de production
- Optimisation des performances - Gestion des erreurs OOM et astuces d'optimisation de la mémoire
- Déploiement dans le cloud - Guide d'utilisation de TPU et des plateformes cloud
Résumé
LitGPT est une boîte à outils de modèles de langage de grande taille complète et performante, adaptée à divers scénarios d'application, de la recherche à la production. Avec sa philosophie de conception d'implémentation à partir de zéro et sans couche d'abstraction, elle offre aux utilisateurs une flexibilité et un contrôle maximum, tout en garantissant un fonctionnement efficace dans diverses conditions matérielles grâce à de riches techniques d'optimisation et options de configuration. Que ce soit pour les chercheurs en IA, les développeurs d'entreprise ou les apprenants, chacun peut trouver dans LitGPT une solution adaptée à ses besoins.