liger-kernel-nightly 0.4.2.dev20241119061743__tar.gz → 0.4.2.dev20241119174706__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {liger_kernel_nightly-0.4.2.dev20241119061743/src/liger_kernel_nightly.egg-info → liger_kernel_nightly-0.4.2.dev20241119174706}/PKG-INFO +1 -1
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/pyproject.toml +1 -1
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/chunked_loss/fused_linear_preference.py +6 -2
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/chunked_loss/orpo_loss.py +1 -1
- liger_kernel_nightly-0.4.2.dev20241119174706/src/liger_kernel/chunked_loss/simpo_loss.py +64 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706/src/liger_kernel_nightly.egg-info}/PKG-INFO +1 -1
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel_nightly.egg-info/SOURCES.txt +1 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/LICENSE +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/NOTICE +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/README.md +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/setup.cfg +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/chunked_loss/__init__.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/chunked_loss/cpo_loss.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/chunked_loss/dpo_loss.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/env_report.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/__init__.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/cross_entropy.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/experimental/embedding.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/experimental/mm_int8int2.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/fused_linear_cross_entropy.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/fused_linear_jsd.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/geglu.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/group_norm.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/jsd.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/kl_div.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/layer_norm.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/qwen2vl_mrope.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/rms_norm.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/rope.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/swiglu.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/ops/utils.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/__init__.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/auto_model.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/cross_entropy.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/experimental/embedding.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/functional.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/fused_linear_cross_entropy.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/fused_linear_jsd.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/geglu.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/group_norm.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/jsd.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/kl_div.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/layer_norm.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/__init__.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/gemma.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/gemma2.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/llama.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/mistral.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/mixtral.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/mllama.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/phi3.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/qwen2.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/model/qwen2_vl.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/monkey_patch.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/qwen2vl_mrope.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/rms_norm.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/rope.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/swiglu.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/transformers/trainer_integration.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/triton/__init__.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel/triton/monkey_patch.py +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel_nightly.egg-info/dependency_links.txt +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel_nightly.egg-info/requires.txt +0 -0
- {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/src/liger_kernel_nightly.egg-info/top_level.txt +0 -0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "liger_kernel_nightly"
|
7
|
-
version = "0.4.2.
|
7
|
+
version = "0.4.2.dev20241119174706"
|
8
8
|
description = "Efficient Triton kernels for LLM Training"
|
9
9
|
urls = { "Homepage" = "https://github.com/linkedin/Liger-Kernel" }
|
10
10
|
readme = { file = "README.md", content-type = "text/markdown" }
|
@@ -32,6 +32,7 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
|
|
32
32
|
alpha=1.0,
|
33
33
|
beta=0.1,
|
34
34
|
compiled=True,
|
35
|
+
**loss_kwargs,
|
35
36
|
):
|
36
37
|
"""
|
37
38
|
Base class for fused linear layer with preference loss.
|
@@ -49,6 +50,7 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
|
|
49
50
|
alpha (float): Weight for the NLL loss.
|
50
51
|
beta (float): Weight for the odds ratio loss.
|
51
52
|
compiled (bool): Whether to use torch compile for chunk accumulation.
|
53
|
+
loss_kwargs (dict): Other possible arguments that a loss function might need
|
52
54
|
"""
|
53
55
|
# TODO: Tune CHUNK_SIZE to fully utilize the GPU
|
54
56
|
CHUNK_SIZE = chunk_size
|
@@ -68,6 +70,7 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
|
|
68
70
|
beta=beta,
|
69
71
|
compute_nll_loss=compute_nll_loss,
|
70
72
|
full_target=target,
|
73
|
+
**loss_kwargs,
|
71
74
|
)
|
72
75
|
|
73
76
|
def accumulate_chunk(input_chunk, target_chunk):
|
@@ -94,6 +97,9 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
|
|
94
97
|
loss_acc.add_(chunk_loss)
|
95
98
|
return chunk_grad_input
|
96
99
|
|
100
|
+
if compiled:
|
101
|
+
accumulate_chunk = torch.compile(accumulate_chunk)
|
102
|
+
|
97
103
|
len_chosen = target.shape[0] // 2
|
98
104
|
_chosen_input_chunks = torch.chunk(_input[:len_chosen], chunks=chunks, dim=0)
|
99
105
|
_chosen_target_chunks = torch.chunk(target[:len_chosen], chunks=chunks, dim=0)
|
@@ -116,8 +122,6 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
|
|
116
122
|
[chosen_target_chunk, rejected_target_chunk], dim=0
|
117
123
|
)
|
118
124
|
|
119
|
-
if compiled:
|
120
|
-
accumulate_chunk = torch.compile(accumulate_chunk)
|
121
125
|
grad_input = accumulate_chunk(input_chunk, target_chunk)
|
122
126
|
|
123
127
|
grad_chosen_inputs.append(grad_input[: chosen_target_chunk.shape[0]])
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import torch.nn.functional as F
|
2
|
+
|
3
|
+
from liger_kernel.chunked_loss.fused_linear_preference import (
|
4
|
+
LigerFusedLinearPreferenceBase,
|
5
|
+
)
|
6
|
+
|
7
|
+
|
8
|
+
class LigerFusedLinearSimPOFunction(LigerFusedLinearPreferenceBase):
|
9
|
+
|
10
|
+
@staticmethod
|
11
|
+
def preference_loss_fn(chosen_logps, rejected_logps, beta=0.1, gamma=0.5):
|
12
|
+
"""
|
13
|
+
Compute odds-ratio loss.
|
14
|
+
Args:
|
15
|
+
chosen_logps (torch.Tensor): Avg log probabilities of chosen tokens. Shape: (batch_size,).
|
16
|
+
rejected_logps (torch.Tensor): Avg log probabilities of rejected tokens. Shape: (batch_size,).
|
17
|
+
beta (float): Weight for the odds ratio loss.
|
18
|
+
gamma (float): The simpo gamma, margin term.
|
19
|
+
"""
|
20
|
+
logits = beta * (chosen_logps - rejected_logps) - gamma
|
21
|
+
loss = F.logsigmoid(logits).mean()
|
22
|
+
return loss
|
23
|
+
|
24
|
+
@staticmethod
|
25
|
+
def forward(
|
26
|
+
ctx,
|
27
|
+
_input,
|
28
|
+
weight,
|
29
|
+
target,
|
30
|
+
bias=None,
|
31
|
+
ignore_index=-100,
|
32
|
+
beta=0.1,
|
33
|
+
alpha=1.0,
|
34
|
+
compute_nll_loss=False,
|
35
|
+
compiled=True,
|
36
|
+
gamma=0.5,
|
37
|
+
):
|
38
|
+
"""
|
39
|
+
Fused linear layer with SimPO (Simple Preference Optimization) loss. https://arxiv.org/pdf/2405.14734
|
40
|
+
Handles both the forward and backward pass of the final linear layer with SimPO loss.
|
41
|
+
Inspired from LigerFusedLinearCrossEntropyFunction (https://arxiv.org/abs/2410.10989) which fuses final linear layer and CE loss.
|
42
|
+
"""
|
43
|
+
|
44
|
+
return LigerFusedLinearPreferenceBase.forward(
|
45
|
+
ctx,
|
46
|
+
_input,
|
47
|
+
weight,
|
48
|
+
target,
|
49
|
+
bias,
|
50
|
+
loss_fn=LigerFusedLinearSimPOFunction.preference_loss_fn,
|
51
|
+
compute_nll_loss=compute_nll_loss,
|
52
|
+
ignore_index=ignore_index,
|
53
|
+
alpha=alpha,
|
54
|
+
beta=beta,
|
55
|
+
compiled=compiled,
|
56
|
+
gamma=gamma,
|
57
|
+
)
|
58
|
+
|
59
|
+
@staticmethod
|
60
|
+
def backward(ctx, grad_output):
|
61
|
+
# Get gradients for _input, weight, bias, and target from the base class
|
62
|
+
grads = LigerFusedLinearPreferenceBase.backward(ctx, grad_output)[:4]
|
63
|
+
# Return these gradients, followed by None for the remaining inputs
|
64
|
+
return *grads, None, None, None, None, None, None
|
@@ -8,6 +8,7 @@ src/liger_kernel/chunked_loss/cpo_loss.py
|
|
8
8
|
src/liger_kernel/chunked_loss/dpo_loss.py
|
9
9
|
src/liger_kernel/chunked_loss/fused_linear_preference.py
|
10
10
|
src/liger_kernel/chunked_loss/orpo_loss.py
|
11
|
+
src/liger_kernel/chunked_loss/simpo_loss.py
|
11
12
|
src/liger_kernel/ops/__init__.py
|
12
13
|
src/liger_kernel/ops/cross_entropy.py
|
13
14
|
src/liger_kernel/ops/fused_linear_cross_entropy.py
|
File without changes
|
{liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119174706}/NOTICE
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|