Mais de 20 LLMs de alto desempenho com receitas para pré-treinar, ajustar e implantar em escala.
✅ Implementações do zero ✅ Sem abstrações ✅ Amigável para iniciantes ✅ Atenção Flash ✅ FSDP ✅ LoRA, QLoRA, Adaptador ✅ Reduza a memória da GPU (fp4/8/16/32) ✅ 1-1000+ GPUs/TPUs ✅ 20+ LLMs
Início rápido • Modelos • Ajuste fino • Implantação • Todos os fluxos de trabalho • Recursos • Receitas (YAML) • Lightning AI • Tutoriais
Cada LLM é implementado do zero, sem abstrações e com controle total , tornando-os extremamente rápidos, mínimos e com desempenho em escala empresarial.
✅ Pronto para empresas - Apache 2.0 para uso corporativo ilimitado.
✅ Amigável ao desenvolvedor - Depuração fácil, sem camadas de abstração e implementações de arquivo único.
✅ Desempenho otimizado – Modelos projetados para maximizar o desempenho, reduzir custos e acelerar o treinamento.
✅ Receitas comprovadas - Receitas de treinamento/ajuste altamente otimizadas testadas em escala empresarial.
Instale LitGPT
pip install 'litgpt[all]'
Carregue e use qualquer um dos mais de 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.
✅ Otimizado para inferência rápida
✅ Quantização
✅ Funciona em GPUs com pouca memória
✅ Sem camadas de abstrações internas
✅ Otimizado para escala de produção
Instalar da fonte:
git clone https://github.com/Lightning-AI/litgpt
cd litgpt
pip install -e ' .[all] '
Explore a documentação completa da API Python.
Cada modelo é escrito do zero para maximizar o desempenho e remover camadas de abstração:
Modelo | Tamanho do modelo | Autor | Referência |
---|---|---|---|
Lhama 3, 3.1, 3.2 | 1B, 3B, 8B, 70B, 405B | Meta IA | Meta IA 2024 |
Código Lhama | 7B, 13B, 34B, 70B | Meta IA | Rozière et al. 2023 |
MoE Mixtral | 8x7B | IA Mistral | Mistral IA 2023 |
Mistral | 7B, 123B | IA Mistral | Mistral IA 2023 |
Código Gemma | 7B | Equipe do Google, Google Deepmind | |
Gema 2 | 2B, 9B, 27B | Equipe do Google, Google Deepmind | |
Fi 3 e 3,5 | 3,8B | Microsoft | Abdin et al. 2024 |
... | ... | ... | ... |
Modelo | Tamanho do modelo | Autor | Referência |
---|---|---|---|
Código Gemma | 7B | Equipe do Google, Google Deepmind | |
Código Lhama | 7B, 13B, 34B, 70B | Meta IA | Rozière et al. 2023 |
Falcão | 7B, 40B, 180B | TII Emirados Árabes Unidos | TII 2023 |
FreeWilly2 (Beluga 2 estável) | 70B | IA de estabilidade | Estabilidade IA 2023 |
Função Chamando Lhama 2 | 7B | Trelis | Trelis et al. 2023 |
Gema | 2B, 7B | Equipe do Google, Google Deepmind | |
Gema 2 | 9B, 27B | Equipe do Google, Google Deepmind | |
Lhama 2 | 7B, 13B, 70B | Meta IA | Touvron et al. 2023 |
Lhama 3.1 | 8B, 70B | Meta IA | Meta IA 2024 |
Lhama 3.2 | 1B, 3B | Meta IA | Meta IA 2024 |
Matemático | 7B | IA Mistral | Mistral IA 2024 |
MicroLhama | 300 milhões | Ken Wang | Repositório MicroLlama |
MoE Mixtral | 8x7B | IA Mistral | Mistral IA 2023 |
Mistral | 7B, 123B | IA Mistral | Mistral IA 2023 |
OLMo | 1B, 7B | Instituto Allen de IA (AI2) | Groeneveld et al. 2024 |
OpenLLaMA | 3B, 7B, 13B | Pesquisa OpenLM | Geng e Liu 2023 |
Fi 1,5 e 2 | 1,3B, 2,7B | Pesquisa da Microsoft | Li et al. 2023 |
Phi 3 | 3,8B | Pesquisa da Microsoft | Abdin et al. 2024 |
Ornitorrinco | 7B, 13B, 70B | Lee et al. | Lee, Hunter e Ruiz 2023 |
Pítia | {14,31,70,160,410}M, {1,1,4,2,8,6,9,12}B | Eleuther AI | Biderman et al. 2023 |
Código Estável | 3B | IA de estabilidade | Estabilidade IA 2023 |
EstávelLM | 3B, 7B | IA de estabilidade | Estabilidade IA 2023 |
EstávelLM Zephyr | 3B | IA de estabilidade | Estabilidade IA 2023 |
TinyLlama | 1.1B | Zhang et al. | Zhang et al. 2023 |
Dica : você pode listar todos os modelos disponíveis executando o comando litgpt download list
.
Ajuste fino • Pré-treinamento • Pré-treinamento contínuo • Avaliar • Implantar • Testar
Use a interface de linha de comando para executar fluxos de trabalho avançados, como pré-treinamento ou ajuste fino em seus próprios dados.
Após instalar o LitGPT, selecione o modelo e o fluxo de trabalho a ser executado (ajustar, pré-treinar, avaliar, implantar, 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
O ajuste fino é o processo de pegar um modelo de IA pré-treinado e treiná-lo ainda mais em um conjunto de dados menor e especializado, adaptado a uma tarefa ou aplicativo específico.
# 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
Leia a documentação completa sobre ajuste fino
Implante um LLM pré-treinado ou ajustado para usá-lo em aplicativos do mundo real. Implantar, configura automaticamente um servidor web que pode ser acessado por um site ou aplicativo.
# 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
Teste o servidor em um terminal separado e integre a API do modelo ao seu produto de 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" ])
Leia a documentação completa de implantação.
Avalie um LLM para testar seu desempenho em várias tarefas para ver quão bem ele entende e gera texto. Simplificando, podemos avaliar coisas como o desempenho em química de nível universitário, codificação, etc... (MMLU, controle de qualidade verdadeiro, etc...)
litgpt evaluate microsoft/phi-2 --tasks ' truthfulqa_mc2,mmlu '
Leia os documentos de avaliação completos.
Teste o funcionamento do modelo por meio de um chat interativo. Use o comando chat
para conversar, extrair embeddings, etc...
Aqui está um exemplo que mostra como usar o 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 ?
O download de determinados modelos requer um token de acesso adicional. Você pode ler mais sobre isso na documentação de download.
Leia a documentação completa do bate-papo.
O pré-treinamento é o processo de ensinar um modelo de IA, expondo-o a uma grande quantidade de dados antes de ser ajustado para tarefas específicas.
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
Leia a documentação completa de pré-treinamento
O pré-treinamento contínuo é outra forma de ajuste fino que especializa um modelo já pré-treinado, treinando em dados personalizados:
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
Leia a documentação completa de pré-treinamento contínuo
✅ Otimizações de última geração: Flash Attention v2, suporte multi-GPU por meio de paralelismo de dados totalmente fragmentado, descarregamento de CPU opcional e suporte a TPU e XLA.
✅ Pré-treinar, ajustar e implantar
✅ Reduza os requisitos de computação com configurações de baixa precisão: FP16, BF16 e FP16/FP32 mistos.
✅ Menores requisitos de memória com quantização: floats de 4 bits, números inteiros de 8 bits e quantização dupla.
✅ Arquivos de configuração para excelente desempenho imediato.
✅ Ajuste fino com parâmetros eficientes: LoRA, QLoRA, Adapter e Adapter v2.
✅ Exportando para outros formatos de peso de modelo populares.
✅ Muitos conjuntos de dados populares para pré-treinamento e ajuste fino e suporte para conjuntos de dados personalizados.
✅ Código legível e fácil de modificar para experimentar as ideias de pesquisa mais recentes.
LitGPT vem com receitas validadas (configurações YAML) para treinar modelos sob diferentes condições. Geramos essas receitas com base nos parâmetros que encontramos para o melhor desempenho em diferentes condições de treinamento.
Navegue por todas as receitas de treinamento aqui.
litgpt finetune
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
As configurações permitem personalizar o treinamento para todos os parâmetros granulares, como:
# 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 impulsiona muitos grandes projetos, iniciativas, desafios de IA e, claro, empresas. Envie uma solicitação pull para ser considerado para um recurso.
O projeto Samba de pesquisadores da Microsoft é construído sobre a base de código LitGPT e combina modelos de espaço de estados com atenção de janela deslizante, que supera os modelos de espaço de estados puros.
O repositório LitGPT foi o kit inicial oficial para o NeurIPS 2023 LLM Efficiency Challenge, que é uma competição focada no ajuste fino de um LLM existente não ajustado por instrução por 24 horas em uma única GPU.
LitGPT impulsionou o projeto TinyLlama e o documento de pesquisa TinyLlama: An Open-Source Small Language Model.
MicroLlama é um modelo 300M Llama pré-treinado em tokens 50B alimentado por TinyLlama e LitGPT.
O artigo de pesquisa "Pré-treinamento de LMs de base pequena com menos tokens", que utiliza LitGPT, desenvolve modelos de linguagem de base menores, herdando alguns blocos transformadores de modelos maiores e treinando em uma pequena fração dos dados usados pelos modelos maiores. Isso demonstra que esses modelos menores podem ter desempenho comparável a modelos maiores, apesar de usarem significativamente menos dados e recursos de treinamento.
Damos as boas-vindas a todos os colaboradores individuais, independentemente do seu nível de experiência ou hardware. Suas contribuições são valiosas e estamos entusiasmados em ver o que você pode realizar neste ambiente colaborativo e de apoio.
Comece
⚡️ Ajuste fino, incl. LoRA, QLoRA e adaptadores
? Pré-treinamento
Avaliação do modelo
Conjuntos de dados compatíveis e personalizados
? Quantização
? Dicas para lidar com erros de falta de memória (OOM)
?? Usando TPUs em nuvem
Esta implementação se estende ao Lit-LLaMA e ao nanoGPT e é alimentada pelo Lightning Fabric ⚡ .
LitGPT é lançado sob a licença Apache 2.0.
Se você usa LitGPT em sua pesquisa, cite o seguinte trabalho:
@misc { litgpt-2023 ,
author = { Lightning AI } ,
title = { LitGPT } ,
howpublished = { url{https://github.com/Lightning-AI/litgpt} } ,
year = { 2023 } ,
}