Über 20 leistungsstarke LLMs mit Rezepten für das Vortraining, die Feinabstimmung und die Bereitstellung im großen Maßstab.
✅ Implementierungen von Grund auf ✅ Keine Abstraktionen ✅ Anfängerfreundlich ✅ Flash-Aufmerksamkeit ✅ FSDP ✅ LoRA, QLoRA, Adapter ✅ GPU-Speicher reduzieren (fp4/8/16/32) ✅ 1-1000+ GPUs/TPUs ✅ 20+ LLMs
Schnellstart • Modelle • Feinabstimmung • Bereitstellen • Alle Workflows • Funktionen • Rezepte (YAML) • Lightning AI • Tutorials
Jedes LLM wird von Grund auf ohne Abstraktionen und mit voller Kontrolle implementiert, wodurch es auf Unternehmensebene blitzschnell, minimal und leistungsstark ist.
✅ Bereit für Unternehmen – Apache 2.0 für unbegrenzte Unternehmensnutzung.
✅ Entwicklerfreundlich – Einfaches Debuggen ohne Abstraktionsebenen und Einzeldateiimplementierungen.
✅ Optimierte Leistung – Modelle, die darauf ausgelegt sind, die Leistung zu maximieren, Kosten zu senken und das Training zu beschleunigen.
✅ Bewährte Rezepte – Hochoptimierte Schulungs-/Feinabstimmungsrezepte, die auf Unternehmensebene getestet wurden.
Installieren Sie LitGPT
pip install 'litgpt[all]'
Laden und verwenden Sie eines der über 20 LLMs:
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.
✅ Optimiert für schnelle Schlussfolgerungen
✅ Quantisierung
✅ Läuft auf GPUs mit wenig Speicher
✅ Keine Schichten interner Abstraktionen
✅ Optimiert für den Produktionsmaßstab
Von der Quelle installieren:
git clone https://github.com/Lightning-AI/litgpt
cd litgpt
pip install -e ' .[all] '
Entdecken Sie die vollständigen Python-API-Dokumente.
Jedes Modell wird von Grund auf neu geschrieben, um die Leistung zu maximieren und Abstraktionsebenen zu entfernen:
Modell | Modellgröße | Autor | Referenz |
---|---|---|---|
Lama 3, 3.1, 3.2 | 1B, 3B, 8B, 70B, 405B | Meta-KI | Meta-KI 2024 |
Code Lama | 7B, 13B, 34B, 70B | Meta-KI | Rozière et al. 2023 |
Mixtral MoE | 8x7B | Mistral-KI | Mistral KI 2023 |
Mistral | 7B, 123B | Mistral-KI | Mistral KI 2023 |
CodeGemma | 7B | Google-Team, Google Deepmind | |
Gemma 2 | 2B, 9B, 27B | Google-Team, Google Deepmind | |
Phi 3 & 3,5 | 3,8B | Microsoft | Abdin et al. 2024 |
... | ... | ... | ... |
Modell | Modellgröße | Autor | Referenz |
---|---|---|---|
CodeGemma | 7B | Google-Team, Google Deepmind | |
Code Lama | 7B, 13B, 34B, 70B | Meta-KI | Rozière et al. 2023 |
Falke | 7B, 40B, 180B | TII VAE | TII 2023 |
FreeWilly2 (Stable Beluga 2) | 70B | Stabilitäts-KI | Stabilitäts-KI 2023 |
Funktionsaufruf Lama 2 | 7B | Trelis | Trelis et al. 2023 |
Gemma | 2B, 7B | Google-Team, Google Deepmind | |
Gemma 2 | 9B, 27B | Google-Team, Google Deepmind | |
Lama 2 | 7B, 13B, 70B | Meta-KI | Touvron et al. 2023 |
Lama 3.1 | 8B, 70B | Meta-KI | Meta-KI 2024 |
Lama 3.2 | 1B, 3B | Meta-KI | Meta-KI 2024 |
Mathstral | 7B | Mistral-KI | Mistral KI 2024 |
MikroLama | 300M | Ken Wang | MicroLlama-Repo |
Mixtral MoE | 8x7B | Mistral-KI | Mistral AI 2023 |
Mistral | 7B, 123B | Mistral-KI | Mistral AI 2023 |
OLMo | 1B, 7B | Allen Institut für KI (AI2) | Groeneveld et al. 2024 |
OpenLLaMA | 3B, 7B, 13B | OpenLM-Forschung | Geng & Liu 2023 |
Phi 1,5 & 2 | 1,3B, 2,7B | Microsoft-Forschung | Li et al. 2023 |
Phi 3 | 3,8B | Microsoft-Forschung | Abdin et al. 2024 |
Schnabeltier | 7B, 13B, 70B | Lee et al. | Lee, Hunter und Ruiz 2023 |
Pythia | {14,31,70,160,410}M, {1,1,4,2,8,6,9,12}B | EleutherAI | Biderman et al. 2023 |
StableCode | 3B | Stabilitäts-KI | Stabilitäts-KI 2023 |
StabilLM | 3B, 7B | Stabilitäts-KI | Stabilitäts-KI 2023 |
StableLM Zephyr | 3B | Stabilitäts-KI | Stabilitäts-KI 2023 |
TinyLlama | 1.1B | Zhang et al. | Zhang et al. 2023 |
Tipp : Sie können alle verfügbaren Modelle auflisten, indem Sie den Befehl litgpt download list
ausführen.
Feinabstimmung • Vortraining • Fortgesetztes Vortraining • Auswerten • Bereitstellen • Testen
Verwenden Sie die Befehlszeilenschnittstelle, um erweiterte Arbeitsabläufe wie Vortraining oder Feinabstimmung Ihrer eigenen Daten auszuführen.
Wählen Sie nach der Installation von LitGPT das auszuführende Modell und den Workflow aus (Feinabstimmung, Vortraining, Evaluierung, Bereitstellung usw.):
# 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
Bei der Feinabstimmung wird ein vorab trainiertes KI-Modell verwendet und anhand eines kleineren, spezialisierten Datensatzes, der auf eine bestimmte Aufgabe oder Anwendung zugeschnitten ist, weiter trainiert.
# 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
Lesen Sie die vollständigen Feinabstimmungsdokumente
Stellen Sie ein vorab trainiertes oder optimiertes LLM bereit, um es in realen Anwendungen zu verwenden. Deploy richtet automatisch einen Webserver ein, auf den eine Website oder App zugreifen kann.
# 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
Testen Sie den Server in einem separaten Terminal und integrieren Sie die Modell-API in Ihr KI-Produkt:
# 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" ])
Lesen Sie die vollständigen Bereitstellungsdokumente.
Bewerten Sie ein LLM, um seine Leistung bei verschiedenen Aufgaben zu testen und zu sehen, wie gut es Text versteht und generiert. Einfach ausgedrückt können wir Dinge bewerten, wie zum Beispiel, wie gut es in Chemie, Codierung auf College-Niveau usw. abschneiden würde (MMLU, wahrheitsgetreue Qualitätssicherung usw.)
litgpt evaluate microsoft/phi-2 --tasks ' truthfulqa_mc2,mmlu '
Lesen Sie die vollständigen Evaluierungsdokumente.
Testen Sie in einem interaktiven Chat, wie gut das Modell funktioniert. Verwenden Sie den chat
Befehl, um zu chatten, Einbettungen zu extrahieren usw.
Hier ist ein Beispiel, das die Verwendung des Phi-2 LLM zeigt:
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 ?
Für den Download bestimmter Modelle ist ein zusätzlicher Zugriffstoken erforderlich. Mehr dazu können Sie in der Download-Dokumentation nachlesen.
Lesen Sie die vollständigen Chat-Dokumente.
Beim Vortraining wird einem KI-Modell beigebracht, indem es einer großen Datenmenge ausgesetzt wird, bevor es für bestimmte Aufgaben feinabgestimmt wird.
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
Lesen Sie die vollständigen Pretraining-Dokumente
Fortgesetztes Vortraining ist eine weitere Möglichkeit der Feinabstimmung, die ein bereits vorab trainiertes Modell durch Training auf benutzerdefinierten Daten spezialisiert:
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
Lesen Sie die vollständigen Fortführungsdokumente vor dem Training
✅ Modernste Optimierungen: Flash Attention v2, Multi-GPU-Unterstützung über vollständig geshardte Datenparallelität, optionales CPU-Offloading sowie TPU- und XLA-Unterstützung.
✅ Vorschulung, Feinabstimmung und Bereitstellung
✅ Reduzieren Sie den Rechenbedarf mit Einstellungen mit geringer Präzision: FP16, BF16 und FP16/FP32 gemischt.
✅ Geringerer Speicherbedarf durch Quantisierung: 4-Bit-Floats, 8-Bit-Ganzzahlen und doppelte Quantisierung.
✅ Konfigurationsdateien für hervorragende Leistung sofort einsatzbereit.
✅ Parametereffiziente Feinabstimmung: LoRA, QLoRA, Adapter und Adapter v2.
✅ Exportieren in andere gängige Modellgewichtsformate.
✅ Viele beliebte Datensätze für das Vortraining und die Feinabstimmung sowie Unterstützung für benutzerdefinierte Datensätze.
✅ Lesbarer und einfach zu ändernder Code zum Experimentieren mit den neuesten Forschungsideen.
LitGPT enthält validierte Rezepte (YAML-Konfigurationen), um Modelle unter verschiedenen Bedingungen zu trainieren. Wir haben diese Rezepte basierend auf den Parametern erstellt, die unserer Meinung nach für verschiedene Trainingsbedingungen die beste Leistung erbringen.
Durchsuchen Sie hier alle Trainingsrezepte.
litgpt finetune
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
Mit Konfigurationen können Sie das Training für alle granularen Parameter anpassen, wie zum Beispiel:
# The path to the base model's checkpoint directory to load for finetuning. (type: <class 'Path'>, 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: <class 'Path'>, 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: <class 'Path'>, 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: <class 'Path'>, 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 unterstützt viele großartige KI-Projekte, Initiativen, Herausforderungen und natürlich Unternehmen. Bitte reichen Sie eine Pull-Anfrage ein, um für eine Funktion berücksichtigt zu werden.
Das Samba-Projekt von Microsoft-Forschern basiert auf der LitGPT-Codebasis und kombiniert Zustandsraummodelle mit Sliding-Window-Attention, was reine Zustandsraummodelle übertrifft.
Das LitGPT-Repository war das offizielle Starterkit für die NeurIPS 2023 LLM Efficiency Challenge, einen Wettbewerb, der sich auf die Feinabstimmung eines bestehenden, nicht auf Anweisungen abgestimmten LLM für 24 Stunden auf einer einzelnen GPU konzentriert.
LitGPT unterstützte das TinyLlama-Projekt und die Forschungsarbeit TinyLlama: An Open-Source Small Language Model.
MicroLlama ist ein 300M-Llama-Modell, das auf 50B-Token vorab trainiert wurde und von TinyLlama und LitGPT unterstützt wird.
Die Forschungsarbeit „Pre-training Small Base LMs with Fewer Tokens“, die LitGPT nutzt, entwickelt kleinere Basissprachmodelle, indem sie einige Transformatorblöcke von größeren Modellen erbt und auf einem winzigen Bruchteil der von den größeren Modellen verwendeten Daten trainiert. Es zeigt, dass diese kleineren Modelle eine mit größeren Modellen vergleichbare Leistung erbringen können, obwohl sie deutlich weniger Trainingsdaten und Ressourcen verbrauchen.
Wir begrüßen alle einzelnen Mitwirkenden, unabhängig von ihrem Erfahrungsstand oder ihrer Hardware. Ihre Beiträge sind wertvoll und wir sind gespannt, was Sie in diesem kollaborativen und unterstützenden Umfeld erreichen können.
Fangen Sie an
⚡️ Feintuning, inkl. LoRA, QLoRA und Adapter
? Vorschulung
Modellbewertung
Unterstützte und benutzerdefinierte Datensätze
? Quantisierung
? Tipps zum Umgang mit Out-of-Memory-Fehlern (OOM).
?? Verwendung von Cloud-TPUs
Diese Implementierung basiert auf Lit-LLaMA und nanoGPT und wird von Lightning Fabric ⚡ unterstützt .
LitGPT wird unter der Apache 2.0-Lizenz veröffentlicht.
Wenn Sie LitGPT in Ihrer Forschung verwenden, zitieren Sie bitte die folgende Arbeit:
@misc { litgpt-2023 ,
author = { Lightning AI } ,
title = { LitGPT } ,
howpublished = { url{https://github.com/Lightning-AI/litgpt} } ,
year = { 2023 } ,
}