Liger Kernel 使用教程
1. 项目介绍
Liger Kernel 是由 LinkedIn 开发的一系列针对语言模型训练的优化 Triton 内核。它通过内核融合、就地替换和分块技术,可以有效地提高多 GPU 训练的吞吐量,增加 20%,同时减少内存使用,降低 60%。Liger Kernel 与 PyTorch FSDP、DeepSpeed 和 DDP 等多 GPU 设置兼容,并且易于使用,只需一行代码即可为 Hugging Face 模型打上补丁。
2. 项目快速启动
首先,确保安装了以下依赖项:
- CUDA
- torch (版本 >= 2.1.2)
- triton (版本 >= 2.3.0)
安装稳定版 Liger Kernel:
pip install liger-kernel
安装夜间版 Liger Kernel:
pip install liger-kernel-nightly
安装从源代码:
git clone https://github.com/linkedin/Liger-Kernel.git
cd Liger-Kernel
pip install -e .
接下来,使用以下代码之一来应用 Liger Kernel:
使用 AutoLigerKernelForCausalLM
这是最简单的方法,不需要导入特定模型的修补 API。
from liger_kernel.transformers import AutoLigerKernelForCausalLM
model = AutoLigerKernelForCausalLM.from_pretrained("path/to/some/model")
应用模型特定修补 API
使用修补 API,可以为 Hugging Face 模型应用优化的 Liger 内核。
import transformers
from liger_kernel.transformers import apply_liger_kernel_to_llama
apply_liger_kernel_to_llama()
model = transformers.AutoModelForCausalLM.from_pretrained("path/to/llama/model")
自定义模型组合
可以选择单独的内核来组合自己的模型。
from liger_kernel.transformers import LigerFusedLinearCrossEntropyLoss
import torch.nn as nn
model = nn.Linear(128, 256).cuda()
loss_fn = LigerFusedLinearCrossEntropyLoss()
input = torch.randn(4, 128)
3. 应用案例和最佳实践
以下是一些使用 Liger Kernel 的案例和最佳实践:
- Hugging Face Trainer: 在 Alpaca 数据集上使用 4 个 A100 GPU 和 FSDP,训练 LLaMA 3-8B 模型,速度提高约 20%,内存减少超过 40%。
- Lightning Trainer: 在 MMLU 数据集上使用 8 个 A100 GPU 和 DeepSpeed ZeRO3,训练 LLaMA3-8B 模型,吞吐量增加 15%,内存使用减少 40%。
- Medusa 多头 LLM(重训练阶段): 使用 8 个 A100 GPU 和 FSDP,内存使用减少 80%,吞吐量提高 40%。
4. 典型生态项目
Liger Kernel 作为一个开源项目,是 Triton 生态系统的一部分,它可以与以下项目配合使用:
- Flash Attention: 用于高效的注意力机制计算。
- PyTorch FSDP: Facebook 的分布式训练框架,用于模型并行训练。
- Microsoft DeepSpeed: 微软的开源库,用于优化和简化深度学习训练。
通过整合这些生态项目,开发者可以进一步优化模型训练过程,提高效率和性能。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考