用途
LitGPT 是 Lightning AI 维护的大语言模型工具集,提供 20 多个预训练模型架构的简洁实现和训练流程,可用于模型推理、微调、从零预训练和部署,也适合学习模型结构或做研究原型。
主要能力
- 模型覆盖:支持 Llama、Gemma、Phi、Qwen、Mistral、Mixtral、Falcon 等 20 多个预训练架构。
- 推理:通过
LLM.load()加载模型并调用generate(),支持普通生成和流式输出。 - 微调:支持全量微调和 LoRA 微调,数据可使用 Alpaca 格式的 JSON。
- 预训练:可从配置文件定义模型结构,支持单 GPU 和多 GPU(FSDP)。
- 后处理:支持合并 LoRA 权重、按 bnb.nf4 等格式量化,以及转换为 GGUF。
- 部署:可结合 FastAPI 封装生成接口。
使用方式
安装:
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
训练结果默认保存到 out/finetune/。
合并 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 可将 --devices 8 等参数用于 FSDP 训练。
适用场景
- 学习或研究大模型架构与训练流程;
- 在自定义数据集上做 LoRA 或全量微调;
- 从零预训练小规模模型;
- 将模型量化或转换为 GGUF 后部署;
- 使用 Lightning 生态的团队。
限制与注意事项
- 显存需求随模型和训练方式变化:Phi-2 推理约需 6GB,7B 模型 LoRA 微调约需 16GB,7B 全量微调需 40GB 以上,1B 预训练约需 24GB。
- 每个模型通常需要 5 至 50GB 存储空间。
- 硬件支持 NVIDIA CUDA 11.8+、AMD ROCm 和 Apple Silicon MPS。
- 若需要更多微调特性或 YAML 配置,资料建议考虑 Axolotl/TRL;超 70B 模型高性能训练可考虑 Megatron-Core;最广模型支持可考虑 HuggingFace Transformers;仅推理可考虑 vLLM。
- 显存不足时可改用 LoRA 或梯度累积;训练慢时可调整 micro-batch 与梯度累积组合。Flash Attention 在 Ampere 及以上 GPU 默认启用。