LMFlow - Boîte à outils pour le fine-tuning et l'inférence de grands modèles de fondation
Aperçu du projet
LMFlow est un projet open source développé par l'équipe OptimalScale, une boîte à outils évolutive, pratique et efficace pour le fine-tuning de grands modèles d'apprentissage automatique. Ce projet est spécialement conçu pour être convivial, rapide et fiable, dans le but de rendre la technologie des grands modèles de langage accessible à toute la communauté, réalisant ainsi la vision de "mettre les grands modèles au service de tous".
Adresse du projet : https://github.com/OptimalScale/LMFlow
Caractéristiques principales
1. Prise en charge de diverses méthodes d'entraînement
- Fine-tuning complet des paramètres : Mise à jour de tous les paramètres pour affiner le modèle de langage
- LoRA (Low-Rank Adaptation) : Algorithme de fine-tuning efficace en termes de paramètres, plus efficace que le fine-tuning complet des paramètres
- LISA (Layerwise Importance Sampling) : Algorithme de fine-tuning efficace en termes de mémoire, capable d'entraîner des modèles 7B dans une mémoire GPU de 24 Go sans déchargement
2. Large prise en charge des modèles
Prise en charge de plusieurs grands modèles de langage courants, notamment :
- Série DeepSeek : deepseek, deepseek_v2, deepseek_r1, etc.
- Série LLaMA : llama2, llama3, llama3_for_tool
- Série Qwen : qwen2, qwen2_for_tool, qwen2_5, etc.
- Diverses architectures de modèles telles que Gemma, Phi, Yi, InternLM2
3. Techniques d'optimisation des performances
Optimisation de la mémoire
- FlashAttention-2 : Prise en charge de la dernière technologie FlashAttention, améliorant considérablement la vitesse d'entraînement et d'inférence
- Gradient Checkpointing : Optimisation de l'utilisation de la mémoire grâce à une stratégie de calcul contre mémoire
- DeepSpeed Zero-3 : Prise en charge de l'entraînement distribué de modèles à grande échelle
Accélération de l'inférence
- Intégration vLLM : Prise en charge de l'inférence et du service LLM rapides et faciles à utiliser
- Décodage spéculatif : Prise en charge de la technologie de décodage spéculatif pour accélérer l'inférence
- Inférence CPU : Prise en charge de l'exécution de modèles LLaMA sur CPU (via une quantification à 4 bits)
4. Richesse des fonctionnalités
Prise en charge des modèles de conversation
- Modèles de conversation Llama-3 et Phi-3 les plus récents prédéfinis
- Prise en charge de plusieurs modèles courants tels que chatml
- Modèles de conversation personnalisables pour de meilleures performances
Prise en charge multimodale
- Prise en charge des entrées multimodales d'images et de texte
- Fournit des fonctionnalités de chatbot multimodal
- Service de démonstration en ligne disponible
Traitement du contexte long
- Prise en charge de l'interpolation de position (mise à l'échelle linéaire et NTK) pour les modèles LLaMA
- Extension de la capacité de traitement du contexte du modèle
5. Évaluation et tests de référence
LMFlow Benchmark est un cadre d'évaluation automatique spécialement conçu pour les grands modèles de langage open source, utilisant la vraisemblance négative (NLL) comme indicateur pour évaluer les capacités du modèle dans les domaines suivants :
- Conversation informelle
- Raisonnement de bon sens
- Suivi des instructions
Innovation technique
Algorithme RAFT
Le projet propose un nouvel algorithme d'alignement : Reward rAnked FineTuning (RAFT), cette méthode est plus efficace que le RLHF traditionnel basé sur PPO.
Optimiseurs personnalisés
Prise en charge de divers entraînements d'optimiseurs personnalisés, notamment :
- RMSprop, LION-32bit, Adam, AdamW
- AdaFactor, Adan, RAdam et plus de 20 autres optimiseurs
- Possibilité de choisir la stratégie d'optimisation la plus adaptée à la tâche spécifique
Cas d'application pratiques
Percée dans le domaine médical
Les modèles entraînés par LMFlow sont performants dans le domaine médical, et leur modèle de réglage de tâche surpasse ChatGPT dans ce domaine, démontrant ainsi un potentiel énorme dans les applications verticales.
Série de modèles Robin
Le projet a publié plusieurs modèles Robin haute performance :
- Robin-33B-V2 : Obtient un excellent score de 64,1 sur le classement Huggingface LLM
- Fournit des points de contrôle de plusieurs tailles : 7B, 13B, 33B, 65B, etc.
Installation et utilisation
Configuration requise
- Principalement testé sur Linux OS (Ubuntu 20.04)
- Prise en charge des versions CUDA 10.3-11.7
- Environnement Python 3.9
Installation rapide
git clone -b v0.0.9 https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
pip install -e .
Installation PyPI
pip install lmflow-finetune
Impact technique
Le projet LMFlow a déjà eu un impact important dans les milieux universitaires et industriels :
- Articles connexes publiés dans des conférences universitaires de premier plan
- A reçu beaucoup d'attention et d'utilisation sur GitHub
- A apporté une contribution importante à l'écosystème des grands modèles de langage open source
Résumé
LMFlow, en tant que boîte à outils complète pour les grands modèles de langage, fournit non seulement des solutions complètes d'entraînement et d'inférence de modèles, mais a également innové dans de nombreux aspects tels que l'optimisation de la mémoire, l'accélération des performances et l'évaluation des modèles. Il réduit le seuil d'utilisation des grands modèles de langage, permettant à davantage de chercheurs et de développeurs de construire et de déployer facilement leurs propres modèles de langage, réalisant ainsi véritablement l'objectif de "mettre les grands modèles au service de tous".