Plus de 20 LLM hautes performances avec des recettes pour pré-entraîner, affiner et déployer à grande échelle.
✅ Implémentations à partir de zéro ✅ Aucune abstraction ✅ Adapté aux débutants ✅Attention flash ✅FSDP ✅LoRA, QLoRA, Adaptateur ✅ Réduisez la mémoire GPU (fp4/8/16/32) ✅ 1 à 1 000+ GPU/TPU ✅ 20+ LLM
Démarrage rapide • Modèles • Affinement • Déploiement • Tous les workflows • Fonctionnalités • Recettes (YAML) • Lightning AI • Tutoriels
Chaque LLM est implémenté à partir de zéro, sans abstractions et avec un contrôle total , ce qui les rend extrêmement rapides, minimes et performants à l'échelle de l'entreprise.
✅ Prêt pour l'entreprise - Apache 2.0 pour une utilisation illimitée en entreprise.
✅ Convivial pour les développeurs - Débogage facile sans couches d'abstraction ni implémentations de fichiers uniques.
✅ Performances optimisées – Modèles conçus pour maximiser les performances, réduire les coûts et accélérer la formation.
✅ Recettes éprouvées – Recettes de formation/mise au point hautement optimisées testées à l’échelle de l’entreprise.
Installer LitGPT
pip install 'litgpt[all]'
Chargez et utilisez l'un des plus de 20 LLM :
from litgpt import LLM
llm = LLM . load ( "microsoft/phi-2" )
text = llm . generate ( "Fix the spelling: Every fall, the familly goes to the mountains." )
print ( text )
# Corrected Sentence: Every fall, the family goes to the mountains.
✅ Optimisé pour une inférence rapide
✅ Quantification
✅ Fonctionne sur des GPU à faible mémoire
✅ Aucune couche d'abstractions internes
✅ Optimisé pour l'échelle de production
Installer à partir des sources :
git clone https://github.com/Lightning-AI/litgpt
cd litgpt
pip install -e ' .[all] '
Explorez la documentation complète de l'API Python.
Chaque modèle est écrit à partir de zéro pour maximiser les performances et supprimer les couches d'abstraction :
Modèle | Taille du modèle | Auteur | Référence |
---|---|---|---|
Lama 3, 3.1, 3.2 | 1B, 3B, 8B, 70B, 405B | Méta-IA | MétaIA 2024 |
Code Lama | 7B, 13B, 34B, 70B | Méta-IA | Rozière et al. 2023 |
Ministère de l'Environnement Mixtral | 8x7B | Mistral IA | Mistral IA 2023 |
Mistral | 7B, 123B | Mistral IA | Mistral IA 2023 |
CodeGemma | 7B | Équipe Google, Google Deepmind | |
Gemme 2 | 2B, 9B, 27B | Équipe Google, Google Deepmind | |
Ph 3 et 3,5 | 3,8 milliards | Microsoft | Abdin et coll. 2024 |
... | ... | ... | ... |
Modèle | Taille du modèle | Auteur | Référence |
---|---|---|---|
CodeGemma | 7B | Équipe Google, Google Deepmind | |
Code Lama | 7B, 13B, 34B, 70B | Méta-IA | Rozière et al. 2023 |
Faucon | 7B, 40B, 180B | TII EAU | TII 2023 |
FreeWilly2 (Béluga stable 2) | 70B | IA de stabilité | Stabilité IA 2023 |
Fonction appelant Llama 2 | 7B | Trelis | Trelis et coll. 2023 |
Gemme | 2B, 7B | Équipe Google, Google Deepmind | |
Gemme 2 | 9B, 27B | Équipe Google, Google Deepmind | |
Lama 2 | 7B, 13B, 70B | Méta-IA | Touvron et coll. 2023 |
Lama 3.1 | 8B, 70B | Méta-IA | MétaIA 2024 |
Lama 3.2 | 1B, 3B | Méta-IA | MétaIA 2024 |
Mathstral | 7B | Mistral IA | Mistral IA 2024 |
MicroLama | 300M | Ken Wang | Dépôt MicroLlama |
Ministère de l'Environnement Mixtral | 8x7B | Mistral IA | Mistral IA 2023 |
Mistral | 7B, 123B | Mistral IA | Mistral IA 2023 |
OLMo | 1B, 7B | Institut Allen pour l'IA (AI2) | Groeneveld et coll. 2024 |
OuvrirLLaMA | 3B, 7B, 13B | Recherche OpenLM | Geng et Liu 2023 |
Ph 1,5 et 2 | 1,3B, 2,7B | Recherche Microsoft | Li et coll. 2023 |
Ph 3 | 3,8 milliards | Recherche Microsoft | Abdin et coll. 2024 |
Ornithorynque | 7B, 13B, 70B | Lee et coll. | Lee, Hunter et Ruiz 2023 |
Pythie | {14,31,70,160,410}M, {1,1.4,2.8,6.9,12}B | EleutherAI | Biderman et coll. 2023 |
Code stable | 3B | IA de stabilité | Stabilité IA 2023 |
StableLM | 3B, 7B | IA de stabilité | Stabilité IA 2023 |
StableLM Zephyr | 3B | IA de stabilité | Stabilité IA 2023 |
Petit Lama | 1.1B | Zhang et coll. | Zhang et coll. 2023 |
Astuce : Vous pouvez lister tous les modèles disponibles en exécutant la commande litgpt download list
.
Affiner • Pré-entraînement • Pré-formation continue • Évaluer • Déployer • Tester
Utilisez l'interface de ligne de commande pour exécuter des flux de travail avancés tels que le pré-entraînement ou le réglage fin de vos propres données.
Après avoir installé LitGPT, sélectionnez le modèle et le workflow à exécuter (affiner, pré-entraîner, évaluer, déployer, etc...) :
# ligpt [action] [model]
litgpt serve meta-llama/Llama-3.2-3B-Instruct
litgpt finetune meta-llama/Llama-3.2-3B-Instruct
litgpt pretrain meta-llama/Llama-3.2-3B-Instruct
litgpt chat meta-llama/Llama-3.2-3B-Instruct
litgpt evaluate meta-llama/Llama-3.2-3B-Instruct
Le réglage fin est le processus consistant à prendre un modèle d'IA pré-entraîné et à le former davantage sur un ensemble de données plus petit et spécialisé, adapté à une tâche ou une application spécifique.
# 0) setup your dataset
curl -L https://huggingface.co/datasets/ksaw008/finance_alpaca/resolve/main/finance_alpaca.json -o my_custom_dataset.json
# 1) Finetune a model (auto downloads weights)
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
# 2) Test the model
litgpt chat out/custom-model/final
# 3) Deploy the model
litgpt serve out/custom-model/final
Lire la documentation complète de mise au point
Déployez un LLM pré-entraîné ou affinez-le pour l'utiliser dans des applications réelles. Déployer, configure automatiquement un serveur Web accessible par un site Web ou une application.
# deploy an out-of-the-box LLM
litgpt serve microsoft/phi-2
# deploy your own trained model
litgpt serve path/to/microsoft/phi-2/checkpoint
Testez le serveur dans un terminal séparé et intégrez l'API modèle dans votre produit IA :
# 3) Use the server (in a separate Python session)
import requests , json
response = requests . post (
"http://127.0.0.1:8000/predict" ,
json = { "prompt" : "Fix typos in the following sentence: Exampel input" }
)
print ( response . json ()[ "output" ])
Lisez la documentation de déploiement complète.
Évaluez un LLM pour tester ses performances sur diverses tâches afin de voir dans quelle mesure il comprend et génère du texte. En termes simples, nous pouvons évaluer des choses comme ses performances en chimie, en codage, etc. au niveau collégial (MMLU, Truthful QA, etc...)
litgpt evaluate microsoft/phi-2 --tasks ' truthfulqa_mc2,mmlu '
Lisez les documents d’évaluation complets.
Testez le fonctionnement du modèle via un chat interactif. Utilisez la commande chat
pour discuter, extraire des intégrations, etc...
Voici un exemple montrant comment utiliser le Phi-2 LLM :
litgpt chat microsoft/phi-2
>> Prompt: What do Llamas eat ?
# 1) List all supported LLMs
litgpt download list
# 2) Use a model (auto downloads weights)
litgpt chat microsoft/phi-2
>> Prompt: What do Llamas eat ?
Le téléchargement de certains modèles nécessite un jeton d'accès supplémentaire. Vous pouvez en savoir plus à ce sujet dans la documentation téléchargée.
Lisez les documents de discussion complets.
La pré-formation est le processus d'apprentissage d'un modèle d'IA en l'exposant à une grande quantité de données avant qu'il ne soit affiné pour des tâches spécifiques.
mkdir -p custom_texts
curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt
curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt
# 1) Download a tokenizer
litgpt download EleutherAI/pythia-160m
--tokenizer_only True
# 2) Pretrain the model
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
# 3) Test the model
litgpt chat out/custom-model/final
Lire la documentation complète de pré-formation
Le pré-entraînement continu est un autre moyen de réglage fin qui spécialise un modèle déjà pré-entraîné en s'entraînant sur des données personnalisées :
mkdir -p custom_texts
curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt
curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt
# 1) Continue pretraining a model (auto downloads weights)
litgpt pretrain EleutherAI/pythia-160m
--tokenizer_dir EleutherAI/pythia-160m
--initial_checkpoint_dir EleutherAI/pythia-160m
--data TextFiles
--data.train_data_path " custom_texts/ "
--train.max_tokens 10_000_000
--out_dir out/custom-model
# 2) Test the model
litgpt chat out/custom-model/final
Lire la documentation complète sur la pré-formation continue
✅ Optimisations de pointe : Flash Attention v2, prise en charge multi-GPU via un parallélisme de données entièrement partagé, déchargement CPU en option et prise en charge TPU et XLA.
✅ Pré-entraîner, affiner et déployer
✅ Réduisez les besoins de calcul avec des paramètres de faible précision : FP16, BF16 et FP16/FP32 mélangés.
✅ Réduisez les besoins en mémoire grâce à la quantification : flottants 4 bits, entiers 8 bits et double quantification.
✅ Fichiers de configuration pour d'excellentes performances prêtes à l'emploi.
✅ Réglage précis des paramètres : LoRA, QLoRA, Adapter et Adapter v2.
✅ Exportation vers d'autres formats de poids de modèle populaires.
✅ De nombreux ensembles de données populaires pour le pré-entraînement et le réglage fin, ainsi que la prise en charge d'ensembles de données personnalisés.
✅ Code lisible et facile à modifier pour expérimenter les dernières idées de recherche.
LitGPT est livré avec des recettes validées (configurations YAML) pour entraîner des modèles dans différentes conditions. Nous avons généré ces recettes en fonction des paramètres que nous avons trouvés les plus performants pour différentes conditions d'entraînement.
Parcourez toutes les recettes d’entraînement ici.
litgpt finetune
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
Les configurations vous permettent de personnaliser l'entraînement pour tous les paramètres granulaires tels que :
# The path to the base model's checkpoint directory to load for finetuning. (type: , default: checkpoints/stabilityai/stablelm-base-alpha-3b)
checkpoint_dir : checkpoints/meta-llama/Llama-2-7b-hf
# Directory in which to save checkpoints and logs. (type: , default: out/lora)
out_dir : out/finetune/qlora-llama2-7b
# The precision to use for finetuning. Possible choices: "bf16-true", "bf16-mixed", "32-true". (type: Optional[str], default: null)
precision : bf16-true
...
# The path to the base model's checkpoint directory to load for finetuning. (type: , default: checkpoints/stabilityai/stablelm-base-alpha-3b)
checkpoint_dir : checkpoints/meta-llama/Llama-2-7b-hf
# Directory in which to save checkpoints and logs. (type: , default: out/lora)
out_dir : out/finetune/qlora-llama2-7b
# The precision to use for finetuning. Possible choices: "bf16-true", "bf16-mixed", "32-true". (type: Optional[str], default: null)
precision : bf16-true
# If set, quantize the model with this algorithm. See ``tutorials/quantize.md`` for more information. (type: Optional[Literal['nf4', 'nf4-dq', 'fp4', 'fp4-dq', 'int8-training']], default: null)
quantize : bnb.nf4
# How many devices/GPUs to use. (type: Union[int, str], default: 1)
devices : 1
# How many nodes to use. (type: int, default: 1)
num_nodes : 1
# The LoRA rank. (type: int, default: 8)
lora_r : 32
# The LoRA alpha. (type: int, default: 16)
lora_alpha : 16
# The LoRA dropout value. (type: float, default: 0.05)
lora_dropout : 0.05
# Whether to apply LoRA to the query weights in attention. (type: bool, default: True)
lora_query : true
# Whether to apply LoRA to the key weights in attention. (type: bool, default: False)
lora_key : false
# Whether to apply LoRA to the value weights in attention. (type: bool, default: True)
lora_value : true
# Whether to apply LoRA to the output projection in the attention block. (type: bool, default: False)
lora_projection : false
# Whether to apply LoRA to the weights of the MLP in the attention block. (type: bool, default: False)
lora_mlp : false
# Whether to apply LoRA to output head in GPT. (type: bool, default: False)
lora_head : false
# Data-related arguments. If not provided, the default is ``litgpt.data.Alpaca``.
data :
class_path : litgpt.data.Alpaca2k
init_args :
mask_prompt : false
val_split_fraction : 0.05
prompt_style : alpaca
ignore_index : -100
seed : 42
num_workers : 4
download_dir : data/alpaca2k
# Training-related arguments. See ``litgpt.args.TrainArgs`` for details
train :
# Number of optimizer steps between saving checkpoints (type: Optional[int], default: 1000)
save_interval : 200
# Number of iterations between logging calls (type: int, default: 1)
log_interval : 1
# Number of samples between optimizer steps across data-parallel ranks (type: int, default: 128)
global_batch_size : 8
# Number of samples per data-parallel rank (type: int, default: 4)
micro_batch_size : 2
# Number of iterations with learning rate warmup active (type: int, default: 100)
lr_warmup_steps : 10
# Number of epochs to train on (type: Optional[int], default: 5)
epochs : 4
# Total number of tokens to train on (type: Optional[int], default: null)
max_tokens :
# Limits the number of optimizer steps to run (type: Optional[int], default: null)
max_steps :
# Limits the length of samples (type: Optional[int], default: null)
max_seq_length : 512
# Whether to tie the embedding weights with the language modeling head weights (type: Optional[bool], default: null)
tie_embeddings :
# (type: float, default: 0.0003)
learning_rate : 0.0002
# (type: float, default: 0.02)
weight_decay : 0.0
# (type: float, default: 0.9)
beta1 : 0.9
# (type: float, default: 0.95)
beta2 : 0.95
# (type: Optional[float], default: null)
max_norm :
# (type: float, default: 6e-05)
min_lr : 6.0e-05
# Evaluation-related arguments. See ``litgpt.args.EvalArgs`` for details
eval :
# Number of optimizer steps between evaluation calls (type: int, default: 100)
interval : 100
# Number of tokens to generate (type: Optional[int], default: 100)
max_new_tokens : 100
# Number of iterations (type: int, default: 100)
max_iters : 100
# The name of the logger to send metrics to. (type: Literal['wandb', 'tensorboard', 'csv'], default: csv)
logger_name : csv
# The random seed to use for reproducibility. (type: int, default: 1337)
seed : 1337
litgpt finetune
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
--lora_r 4
LitGPT alimente de nombreux grands projets, initiatives, défis et bien sûr entreprises d’IA. Veuillez soumettre une pull request pour être pris en compte pour une fonctionnalité.
Le projet Samba des chercheurs de Microsoft est construit sur la base de code LitGPT et combine des modèles d'espace d'état avec une attention à fenêtre coulissante, ce qui surpasse les modèles spatiaux d'état purs.
Le référentiel LitGPT était le kit de démarrage officiel du NeurIPS 2023 LLM Efficiency Challenge, qui est un concours axé sur le réglage fin d'un LLM existant sans instruction pendant 24 heures sur un seul GPU.
LitGPT a alimenté le projet TinyLlama et le document de recherche TinyLlama : An Open-Source Small Language Model.
MicroLlama est un modèle de 300 millions de lamas pré-entraîné sur 50 milliards de jetons alimentés par TinyLlama et LitGPT.
Le document de recherche « Pré-entraînement des LM de petite base avec moins de jetons », qui utilise LitGPT, développe des modèles de langage de base plus petits en héritant de quelques blocs de transformation de modèles plus grands et en s'entraînant sur une infime fraction des données utilisées par les modèles plus grands. Cela démontre que ces modèles plus petits peuvent fonctionner de manière comparable à des modèles plus grands malgré l’utilisation de beaucoup moins de données et de ressources de formation.
Nous accueillons tous les contributeurs individuels, quel que soit leur niveau d'expérience ou de matériel. Vos contributions sont précieuses et nous sommes ravis de voir ce que vous pouvez accomplir dans cet environnement collaboratif et solidaire.
Commencer
⚡️ Mise au point, incl. LoRA, QLoRA et adaptateurs
? Pré-formation
Évaluation du modèle
Ensembles de données pris en charge et personnalisés
? Quantification
? Conseils pour gérer les erreurs de manque de mémoire (MOO)
?? Utilisation de Cloud TPU
Cette implémentation s'étend sur Lit-LLaMA et nanoGPT, et elle est alimentée par Lightning Fabric ⚡ .
LitGPT est publié sous la licence Apache 2.0.
Si vous utilisez LitGPT dans votre recherche, veuillez citer les travaux suivants :
@misc { litgpt-2023 ,
author = { Lightning AI } ,
title = { LitGPT } ,
howpublished = { url{https://github.com/Lightning-AI/litgpt} } ,
year = { 2023 } ,
}