Más de 20 LLM de alto rendimiento con recetas para preparar, ajustar e implementar a escala.
✅ Implementaciones desde cero ✅ Sin abstracciones ✅ Apto para principiantes ✅ Atención flash ✅ FSDP ✅ LoRA, QLoRA, Adaptador ✅ Reducir la memoria de la GPU (fp4/8/16/32) ✅ 1-1000+ GPU/TPU ✅ 20+ LLM
Inicio rápido • Modelos • Ajuste fino • Implementación • Todos los flujos de trabajo • Funciones • Recetas (YAML) • Lightning AI • Tutoriales
Cada LLM se implementa desde cero, sin abstracciones y con control total , lo que los hace increíblemente rápidos, mínimos y eficaces a escala empresarial.
✅ Listo para empresas: Apache 2.0 para uso empresarial ilimitado.
✅ Apto para desarrolladores: depuración sencilla sin capas de abstracción e implementaciones de un solo archivo.
✅ Rendimiento optimizado: modelos diseñados para maximizar el rendimiento, reducir costos y acelerar la capacitación.
✅ Recetas probadas: recetas de capacitación y ajuste altamente optimizadas probadas a escala empresarial.
Instalar LitGPT
pip install 'litgpt[all]'
Cargue y utilice cualquiera de los más 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.
✅ Optimizado para una inferencia rápida
✅ Cuantización
✅ Se ejecuta en GPU con poca memoria
✅ Sin capas de abstracciones internas
✅ Optimizado para escala de producción
Instalar desde la fuente:
git clone https://github.com/Lightning-AI/litgpt
cd litgpt
pip install -e ' .[all] '
Explore los documentos completos de la API de Python.
Cada modelo está escrito desde cero para maximizar el rendimiento y eliminar capas de abstracción:
Modelo | Tamaño del modelo | Autor | Referencia |
---|---|---|---|
Llama 3, 3.1, 3.2 | 1B, 3B, 8B, 70B, 405B | Meta IA | MetaIA 2024 |
Código Llama | 7B, 13B, 34B, 70B | Meta IA | Rozière et al. 2023 |
Ministerio de Educación Mixtral | 8x7B | Mistral AI | Mistral AI 2023 |
Mistral | 7B, 123B | Mistral AI | Mistral AI 2023 |
Código Gemma | 7B | Equipo de Google, Google Deepmind | |
gema 2 | 2B, 9B, 27B | Equipo de Google, Google Deepmind | |
Fi 3 y 3,5 | 3,8 mil millones | microsoft | Abdin et al. 2024 |
... | ... | ... | ... |
Modelo | Tamaño del modelo | Autor | Referencia |
---|---|---|---|
Código Gemma | 7B | Equipo de Google, Google Deepmind | |
Código Llama | 7B, 13B, 34B, 70B | Meta IA | Rozière et al. 2023 |
Halcón | 7B, 40B, 180B | TII Emiratos Árabes Unidos | TII 2023 |
FreeWilly2 (Beluga estable 2) | 70B | Estabilidad IA | Estabilidad IA 2023 |
Función llamando a Llama 2 | 7B | Trelis | Trelis et al. 2023 |
Gema | 2B, 7B | Equipo de Google, Google Deepmind | |
gema 2 | 9B, 27B | Equipo de Google, Google Deepmind | |
Llama 2 | 7B, 13B, 70B | Meta IA | Touvron et al. 2023 |
Llama 3.1 | 8B, 70B | Meta IA | MetaIA 2024 |
Llama 3.2 | 1B, 3B | Meta IA | MetaIA 2024 |
matstral | 7B | Mistral AI | Mistral AI 2024 |
microllama | 300M | Ken Wang | Repositorio MicroLlama |
Ministerio de Educación Mixtral | 8x7B | Mistral AI | Mistral AI 2023 |
Mistral | 7B, 123B | Mistral AI | Mistral AI 2023 |
OLMo | 1B, 7B | Instituto Allen para la IA (AI2) | Groeneveld et al. 2024 |
OpenLLaMA | 3B, 7B, 13B | Investigación OpenLM | Geng y Liu 2023 |
Fi 1,5 y 2 | 1,3 mil millones, 2,7 mil millones | Investigación de Microsoft | Li y col. 2023 |
Fi 3 | 3,8 mil millones | Investigación de Microsoft | Abdin et al. 2024 |
Ornitorrinco | 7B, 13B, 70B | Lee y cols. | Lee, Hunter y Ruiz 2023 |
pitia | {14,31,70,160,410}M, {1,1,4,2,8,6,9,12}B | EleutherAI | Biderman et al. 2023 |
Código estable | 3B | Estabilidad IA | Estabilidad IA 2023 |
EstableLM | 3B, 7B | Estabilidad IA | Estabilidad IA 2023 |
EstableLM Zephyr | 3B | Estabilidad IA | Estabilidad IA 2023 |
TinyLlama | 1.1B | Zhang et al. | Zhang et al. 2023 |
Consejo : puede enumerar todos los modelos disponibles ejecutando el comando litgpt download list
.
Ajustar • Preentrenar • Preentrenamiento continuo • Evaluar • Implementar • Probar
Utilice la interfaz de línea de comandos para ejecutar flujos de trabajo avanzados, como entrenamiento previo o ajuste de sus propios datos.
Después de instalar LitGPT, seleccione el modelo y el flujo de trabajo a ejecutar (ajustar, entrenar previamente, evaluar, implementar, 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
El ajuste es el proceso de tomar un modelo de IA previamente entrenado y entrenarlo aún más en un conjunto de datos más pequeño y especializado adaptado a una tarea o aplicación específica.
# 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
Lea los documentos completos de ajuste
Implemente un LLM previamente capacitado o ajustado para usarlo en aplicaciones del mundo real. Implementar: configura automáticamente un servidor web al que se puede acceder mediante un sitio web o una aplicación.
# 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
Pruebe el servidor en una terminal separada e integre la API modelo en su producto 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" ])
Lea los documentos de implementación completos.
Evalúe un LLM para probar su desempeño en diversas tareas para ver qué tan bien comprende y genera texto. En pocas palabras, podemos evaluar cosas como qué tan bien funcionaría en química de nivel universitario, codificación, etc. (MMLU, control de calidad veraz, etc.)
litgpt evaluate microsoft/phi-2 --tasks ' truthfulqa_mc2,mmlu '
Lea los documentos de evaluación completos.
Pruebe qué tan bien funciona el modelo a través de un chat interactivo. Utilice el comando chat
para chatear, extraer incrustaciones, etc.
A continuación se muestra un ejemplo que muestra cómo utilizar 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 ?
La descarga de determinados modelos requiere un token de acceso adicional. Puede leer más sobre esto en la documentación de descarga.
Lea los documentos completos del chat.
El preentrenamiento es el proceso de enseñar un modelo de IA exponiéndolo a una gran cantidad de datos antes de ajustarlo para tareas 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
Lea los documentos completos de preformación
El entrenamiento previo continuo es otra forma de ajuste que especializa un modelo ya entrenado previamente mediante el entrenamiento con datos 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
Lea los documentos completos de preformación continua
✅ Optimizaciones de última generación: Flash Attention v2, compatibilidad con múltiples GPU mediante paralelismo de datos completamente fragmentados, descarga de CPU opcional y compatibilidad con TPU y XLA.
✅ Preentrenar, ajustar e implementar
✅ Reduzca los requisitos informáticos con configuraciones de baja precisión: FP16, BF16 y FP16/FP32 mixtos.
✅ Menores requisitos de memoria con cuantificación: flotantes de 4 bits, enteros de 8 bits y doble cuantificación.
✅ Archivos de configuración para un excelente rendimiento desde el primer momento.
✅ Ajuste eficiente de parámetros: LoRA, QLoRA, Adaptador y Adaptador v2.
✅ Exportación a otros formatos de peso de modelo populares.
✅ Muchos conjuntos de datos populares para preentrenamiento y ajuste, y soporte para conjuntos de datos personalizados.
✅ Código legible y fácil de modificar para experimentar con las últimas ideas de investigación.
LitGPT viene con recetas validadas (configuraciones YAML) para entrenar modelos en diferentes condiciones. Hemos generado estas recetas en función de los parámetros que encontramos que funcionan mejor para diferentes condiciones de entrenamiento.
Explora todas las recetas de entrenamiento aquí.
litgpt finetune
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
Las configuraciones le permiten personalizar el entrenamiento para todos los 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 impulsa muchos grandes proyectos, iniciativas, desafíos y, por supuesto, empresas de IA. Envíe una solicitud de extracción para ser considerado para una función.
El proyecto Samba de investigadores de Microsoft se basa en la base del código LitGPT y combina modelos de espacio de estados con atención de ventana deslizante, lo que supera a los modelos de espacio de estados puros.
El repositorio LitGPT fue el kit de inicio oficial para el NeurIPS 2023 LLM Efficiency Challenge, que es una competencia centrada en ajustar un LLM existente sin instrucción durante 24 horas en una sola GPU.
LitGPT impulsó el proyecto TinyLlama y el artículo de investigación TinyLlama: un modelo de lenguaje pequeño de código abierto.
MicroLlama es un modelo de Llama de 300 millones preentrenado con tokens de 50 mil millones impulsado por TinyLlama y LitGPT.
El artículo de investigación "Preentrenamiento de LM de base pequeña con menos tokens", que utiliza LitGPT, desarrolla modelos de lenguaje base más pequeños heredando algunos bloques transformadores de modelos más grandes y entrenando con una pequeña fracción de los datos utilizados por los modelos más grandes. Demuestra que estos modelos más pequeños pueden funcionar de manera comparable a los modelos más grandes a pesar de utilizar muchos menos datos y recursos de entrenamiento.
Damos la bienvenida a todos los contribuyentes individuales, independientemente de su nivel de experiencia o hardware. Sus contribuciones son valiosas y estamos entusiasmados de ver lo que puede lograr en este entorno de colaboración y apoyo.
empezar
⚡️ Ajuste, incl. LoRA, QLoRA y adaptadores
? Preentrenamiento
Evaluación del modelo
Conjuntos de datos compatibles y personalizados
? Cuantización
? Consejos para lidiar con errores de falta de memoria (OOM)
?? Usando TPU en la nube
Esta implementación se extiende a Lit-LLaMA y nanoGPT, y está impulsada por Lightning Fabric ⚡ .
LitGPT se publica bajo la licencia Apache 2.0.
Si utiliza LitGPT en su investigación, cite el siguiente trabajo:
@misc { litgpt-2023 ,
author = { Lightning AI } ,
title = { LitGPT } ,
howpublished = { url{https://github.com/Lightning-AI/litgpt} } ,
year = { 2023 } ,
}