LitGPT:高性能大语言模型的预训练、微调和部署工具
LitGPT是一个功能强大的命令行工具,专门用于对大语言模型(LLM)进行预训练、微调、评估和部署。它支持20多种流行的LLM架构,并采用了最先进的优化技术,使其成为AI研究人员和开发者的理想选择。
主要特点
LitGPT具有以下几个突出特点:
-
从头实现多种模型: LitGPT对20多种流行的LLM架构进行了从头实现,包括Llama 3、Code Llama、Mistral、Phi等。这种实现方式去除了抽象层,使代码更加简洁高效。
-
先进的优化技术: 采用Flash Attention v2、全分片数据并行(FSDP)等技术,支持多GPU训练,可选的CPU卸载,以及TPU和XLA支持。
-
低精度和量化: 支持FP16、BF16等低精度设置,以及4位浮点、8位整数等量化方法,以降低计算和内存需求。
-
参数高效微调: 支持LoRA、QLoRA、Adapter等参数高效的微调方法。
-
丰富的训练配方: 提供经过验证的YAML配置文件,可用于不同条件下的模型训练。
-
企业级应用: 采用Apache 2.0许可,适合企业无限制使用。代码易于调试,单文件实现方便修改。
快速上手
安装LitGPT非常简单:
pip install 'litgpt[all]'
然后就可以使用任何支持的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)
# 输出: Every fall, the family goes to the mountains.
主要工作流程
LitGPT支持以下主要工作流程:
-
微调: 在预训练模型的基础上,使用特定任务的小型数据集进行进一步训练。
-
预训练: 从头开始训练模型,使其学习语言的基本结构和知识。
-
继续预训练: 在已有预训练模型的基础上,使用自定义数据继续训练。
-
评估: 测试模型在各种任务上的表现。
-
部署: 将训练好的模型部署到实际应用中。
以下是一个微调模型的简单示例:
# 下载预训练模型
litgpt download microsoft/phi-2
# 微调模型
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
# 测试模型
litgpt chat out/custom-model/final
# 部署模型
litgpt serve out/custom-model/final
应用案例
LitGPT已在多个重要项目中得到应用:
-
SAMBA项目: 微软研究人员基于LitGPT开发的项目,结合了状态空间模型和滑动窗口注意力机制。
-
NeurIPS 2023 LLM效率挑战赛: LitGPT作为官方起始工具包,用于在单个GPU上24小时内微调非指令调优的LLM。
-
TinyLlama项目: 使用LitGPT开发的开源小型语言模型。
-
MicroLlama: 基于TinyLlama和LitGPT开发的300M参数Llama模型。
这些案例展示了LitGPT在学术研究和实际应用中的广泛价值。
社区与贡献
LitGPT欢迎各种经验水平的个人贡献者参与。您可以通过以下方式参与:
- 在GitHub上提出功能请求
- 提交您的第一个贡献
- 加入Discord社区讨论
此外,LitGPT还提供了丰富的教程资源,涵盖了从入门到高级应用的各个方面。
结语
LitGPT为大语言模型的研究和应用提供了一个强大而灵活的工具。无论您是AI研究人员、开发者还是企业用户,LitGPT都能满足您在LLM领域的各种需求。通过其优化的性能、丰富的功能和活跃的社区支持,LitGPT正在推动大语言模型技术的快速发展和广泛应用。