Liger Kernel: Эффективные ядра Triton для обучения LLMLiger (Linkedin GPU Effic…

Liger Kernel: Эффективные ядра Triton для обучения LLMLiger (Linkedin GPU Effic...

⚡️ Liger Kernel: Эффективные ядра Triton для обучения LLM

Liger (Linkedin GPU Efficient Runtime) Kernel — набор оптимизированных ядер Triton, применение которых в задачах обучения LLM на нескольких GPU повышает производительность на 20 % и снижает потребление VRAM на 60%. Это дает возможность использовать более длинные контексты, более крупные размеры пакетов и увеличенные словари в обучении.

Liger предоставляет простой API для операций с оптимизированными ядрами и совместим с Hugging Face: RMSNorm, RoPE, SwiGLU, CrossEntropy, FusedLinearCrossEntropy

Liger работает с Flash Attention, PyTorch FSDP и Microsoft DeepSpeed без необходимости дополнительной настройки.

Зависимости:

🟢PyTorch: 2.1.2 или выше.
🟢Triton: 2.3.0 или выше
🟢Transformers: 4.40.1 или выше.

Liger Kernel доступен в pip. Выберите стабильную версию для продакшена или nightly c последними новыми функциями и исправлениями:

# Stable version
pip install liger-kernel

# Nightly version
pip install liger-kernel-nightly

Патч существующей модели с Hugging Face:

# Import modules
import transformers
from liger_kernel.transformers import apply_liger_kernel_to_llama

# Load Hugging Face model:
model = transformers.AutoModelForCausalLM.from_pretrained("<some llama model>")

# Apply Liger Kernel patches:
apply_liger_kernel_to_llama(model)

После установки патча, модель будет использовать операции ядра Liger для поддерживаемых слоев, что приведет к повышению производительности и снижению потребления VRAM.

Если вы хотите построить собственные модели с помощью Liger Kernel, вы можете импортировать отдельные модули ядра и использовать их в качестве строительных блоков. Например:

# Import the Liger Kernel module:
from liger_kernel.transformers import LigerFusedLinearCrossEntropyLoss

#Create your model:
import torch.nn as nn
import torch
model = nn.Linear(128, 256).cuda()
loss_fn = LigerFusedLinearCrossEntropyLoss()

#Use the model:
input = torch.randn(4, 128, requires_grad=True, device="cuda")
target = torch.randint(256, (4, ), device="cuda")
loss = loss_fn(model.weight, input, target)
loss.backward()

Модель пропатчена, вы можете продолжить обучение как обычно. Liger Kernel будет автоматически выполнять оптимизированные операции во время обучения.

📌Лицензирование: BSD 2-CLAUSE LICENSE (as is и необходимо указывать авторство при копировании и модификации).

🖥Github [ Stars: 767 | Issues: 14 | Forks: 35 ]

View Source

+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *