LitGPT 是 Lightning AI 提供的开源大语言模型工具,主打“干净、可读的 LLM 实现”与生产级训练工作流。它内置 20 多个预训练模型架构,涵盖 Llama、Gemma、Phi、Qwen、Mistral、Mixtral、Falcon 等系列。
用途
LitGPT 面向需要理解或训练大语言模型的开发者与研究者。它既可用于加载预训练模型做推理,也可用于在自有数据上微调、从零预训练新模型,以及将模型导出部署。
主要能力
- 提供 20 多个预训练 LLM 实现,代码清晰可读。
- 支持加载模型并生成文本,可设置 max_new_tokens、temperature 等参数,支持流式与批量推理。
- 支持全量微调与 LoRA 微调,LoRA 可配置 rank、alpha、dropout 以及作用层(query、key、value、projection、mlp、head)。
- 支持从零预训练,可配置模型架构(block_size、vocab_size、n_layer、n_head、n_embd 等),并支持多 GPU 的 FSDP 训练。
- 支持模型量化(如 bnb.nf4、bnb.nf4-dq)、转换为 GGUF 格式,以及通过 FastAPI 部署推理接口。
- 提供训练日志与 TensorBoard 监控。
使用方式
安装:
pip install 'litgpt[extra]'
加载并生成文本:
from litgpt import LLM
llm = LLM.load("microsoft/phi-2")
result = llm.generate(
"What is the capital of France?",
max_new_tokens=50,
temperature=0.7
)
print(result)
列出可用模型:
litgpt download list
下载模型:
litgpt download meta-llama/Meta-Llama-3-8B
litgpt download microsoft/phi-2
litgpt download google/gemma-2b
模型保存到 checkpoints/ 目录。
全量微调示例:
litgpt finetune \
meta-llama/Meta-Llama-3-8B \
--data JSON \
--data.json_path data/my_dataset.json \
--train.max_steps 1000 \
--train.learning_rate 2e-5 \
--train.micro_batch_size 1 \
--train.global_batch_size 16
LoRA 微调示例:
litgpt finetune_lora \
microsoft/phi-2 \
--data JSON \
--data.json_path data/my_dataset.json \
--lora_r 16 \
--lora_alpha 32 \
--lora_dropout 0.05 \
--train.max_steps 1000 \
--train.learning_rate 1e-4
合并 LoRA 权重:
litgpt merge_lora \
out/phi2-lora/final \
--out_dir out/phi2-merged
从零预训练示例:
litgpt pretrain \
--config config/pythia-160m.yaml \
--data.data_dir data/pretrain \
--train.max_tokens 10_000_000_000
多 GPU 使用 FSDP:
litgpt pretrain \
--config config/pythia-1b.yaml \
--data.data_dir data/pretrain \
--devices 8 \
--train.max_tokens 100_000_000_000
量化与转换:
litgpt convert_lit_checkpoint \
out/phi2-lora/final \
--dtype bfloat16 \
--quantize bnb.nf4
python scripts/convert_lit_checkpoint.py \
--checkpoint_path out/phi2-lora/final \
--output_path models/phi2.gguf \
--model_name microsoft/phi-2
API 部署示例:
from fastapi import FastAPI
from litgpt import LLM
app = FastAPI()
llm = LLM.load("out/phi2-lora/final")
@app.post("/generate")
def generate(prompt: str, max_tokens: int = 100):
result = llm.generate(
prompt,
max_new_tokens=max_tokens,
temperature=0.7
)
return {"response": result}
运行:uvicorn api:app --host 0.0.0.0 --port 8000
适用场景
- 想理解 LLM 架构、需要清晰可读代码的学习与研究场景。
- 需要生产级训练配方进行微调或预训练。
- 原型验证新模型想法。
- Lightning 生态用户。
限制与替代
- 若需要更多微调功能与 YAML 配置,可考虑 Axolotl/TRL。
- 若追求 70B 以上模型的极致性能,可考虑 Megatron-Core。
- 若需要最广泛的模型支持,可考虑 HuggingFace Transformers。
- 若仅做推理,可考虑 vLLM。
硬件要求
- GPU:NVIDIA(CUDA 11.8+)、AMD(ROCm)、Apple Silicon(MPS)。
- 内存:推理(Phi-2)约 6GB;LoRA 微调(7B)约 16GB;全量微调(7B)40GB+;预训练(1B)约 24GB。
- 存储:每个模型约 5-50GB,取决于模型大小。
常见问题
- 微调时内存不足:改用 LoRA,或启用梯度累积(--train.gradient_accumulation_iters)。
- 训练太慢:在兼容硬件上 Flash Attention 默认启用;可使用更小 micro-batch 并累积。
- 模型无法加载:用
litgpt download list检查模型名,必要时先下载,并确认 checkpoints/ 目录。 - LoRA 适配器过大:降低 lora_r,或减少应用层。
资源
- GitHub:https://github.com/Lightning-AI/litgpt
- 文档:https://lightning.ai/docs/litgpt
- 教程:https://lightning.ai/docs/litgpt/tutorials
关于具体收费、价格与商业授权信息,资料中暂未提供。