liger-kernel-nightly 0.4.2.dev20241119061743__tar.gz → 0.4.2.dev20241119223206__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.
Files changed (64) hide show
  1. {liger_kernel_nightly-0.4.2.dev20241119061743/src/liger_kernel_nightly.egg-info → liger_kernel_nightly-0.4.2.dev20241119223206}/PKG-INFO +6 -7
  2. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/README.md +5 -6
  3. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/pyproject.toml +1 -1
  4. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/chunked_loss/fused_linear_preference.py +6 -2
  5. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/chunked_loss/orpo_loss.py +1 -1
  6. liger_kernel_nightly-0.4.2.dev20241119223206/src/liger_kernel/chunked_loss/simpo_loss.py +64 -0
  7. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206/src/liger_kernel_nightly.egg-info}/PKG-INFO +6 -7
  8. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel_nightly.egg-info/SOURCES.txt +1 -0
  9. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/LICENSE +0 -0
  10. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/NOTICE +0 -0
  11. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/setup.cfg +0 -0
  12. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/chunked_loss/__init__.py +0 -0
  13. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/chunked_loss/cpo_loss.py +0 -0
  14. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/chunked_loss/dpo_loss.py +0 -0
  15. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/env_report.py +0 -0
  16. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/__init__.py +0 -0
  17. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/cross_entropy.py +0 -0
  18. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/experimental/embedding.py +0 -0
  19. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/experimental/mm_int8int2.py +0 -0
  20. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/fused_linear_cross_entropy.py +0 -0
  21. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/fused_linear_jsd.py +0 -0
  22. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/geglu.py +0 -0
  23. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/group_norm.py +0 -0
  24. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/jsd.py +0 -0
  25. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/kl_div.py +0 -0
  26. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/layer_norm.py +0 -0
  27. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/qwen2vl_mrope.py +0 -0
  28. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/rms_norm.py +0 -0
  29. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/rope.py +0 -0
  30. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/swiglu.py +0 -0
  31. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/ops/utils.py +0 -0
  32. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/__init__.py +0 -0
  33. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/auto_model.py +0 -0
  34. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/cross_entropy.py +0 -0
  35. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/experimental/embedding.py +0 -0
  36. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/functional.py +0 -0
  37. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/fused_linear_cross_entropy.py +0 -0
  38. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/fused_linear_jsd.py +0 -0
  39. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/geglu.py +0 -0
  40. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/group_norm.py +0 -0
  41. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/jsd.py +0 -0
  42. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/kl_div.py +0 -0
  43. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/layer_norm.py +0 -0
  44. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/__init__.py +0 -0
  45. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/gemma.py +0 -0
  46. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/gemma2.py +0 -0
  47. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/llama.py +0 -0
  48. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/mistral.py +0 -0
  49. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/mixtral.py +0 -0
  50. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/mllama.py +0 -0
  51. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/phi3.py +0 -0
  52. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/qwen2.py +0 -0
  53. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/model/qwen2_vl.py +0 -0
  54. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/monkey_patch.py +0 -0
  55. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/qwen2vl_mrope.py +0 -0
  56. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/rms_norm.py +0 -0
  57. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/rope.py +0 -0
  58. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/swiglu.py +0 -0
  59. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/transformers/trainer_integration.py +0 -0
  60. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/triton/__init__.py +0 -0
  61. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel/triton/monkey_patch.py +0 -0
  62. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel_nightly.egg-info/dependency_links.txt +0 -0
  63. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel_nightly.egg-info/requires.txt +0 -0
  64. {liger_kernel_nightly-0.4.2.dev20241119061743 → liger_kernel_nightly-0.4.2.dev20241119223206}/src/liger_kernel_nightly.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: liger_kernel_nightly
3
- Version: 0.4.2.dev20241119061743
3
+ Version: 0.4.2.dev20241119223206
4
4
  Summary: Efficient Triton kernels for LLM Training
5
5
  License: BSD 2-CLAUSE LICENSE
6
6
  Copyright 2024 LinkedIn Corporation
@@ -101,7 +101,7 @@ Requires-Dist: seaborn; extra == "dev"
101
101
  <summary>Latest News 🔥</summary>
102
102
 
103
103
  - [2024/11/6] We release [v0.4.0](https://github.com/linkedin/Liger-Kernel/releases/tag/v0.4.0): Full AMD support, Tech Report, Modal CI, Llama-3.2-Vision!
104
- - [2024/10/21] We have released the tech report of Liger Kernel on Arxiv: https://arxiv.org/pdf/2410.10989
104
+ - [2024/10/21] We have released the tech report of Liger Kernel on Arxiv: https://arxiv.org/pdf/2410.10989
105
105
  - [2024/9/6] We release v0.2.1 ([X post](https://x.com/liger_kernel/status/1832168197002510649)). 2500+ Stars, 10+ New Contributors, 50+ PRs, 50k Downloads in two weeks!
106
106
  - [2024/8/31] CUDA MODE talk, [Liger-Kernel: Real-world Triton kernel for LLM Training](https://youtu.be/gWble4FreV4?si=dxPeIchhkJ36Mbns), [Slides](https://github.com/cuda-mode/lectures?tab=readme-ov-file#lecture-28-liger-kernel)
107
107
  - [2024/8/23] Official release: check out our [X post](https://x.com/hsu_byron/status/1827072737673982056)
@@ -128,12 +128,12 @@ With one line of code, Liger Kernel can increase throughput by more than 20% and
128
128
 
129
129
  ## Examples
130
130
 
131
-
132
131
  | **Use Case** | **Description** |
133
132
  |------------------------------------------------|---------------------------------------------------------------------------------------------------|
134
133
  | [**Hugging Face Trainer**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/huggingface) | Train LLaMA 3-8B ~20% faster with over 40% memory reduction on Alpaca dataset using 4 A100s with FSDP |
135
134
  | [**Lightning Trainer**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/lightning) | Increase 15% throughput and reduce memory usage by 40% with LLaMA3-8B on MMLU dataset using 8 A100s with DeepSpeed ZeRO3 |
136
- | [**Medusa Multi-head LLM (Retraining Phase)**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/medusa) | Reduce memory usage by 80% with 5 LM heads and improve throughput by 40% using 8 A100s with FSDP | |
135
+ | [**Medusa Multi-head LLM (Retraining Phase)**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/medusa) | Reduce memory usage by 80% with 5 LM heads and improve throughput by 40% using 8 A100s with FSDP |
136
+ | [**Vision-Language Model SFT**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/huggingface/run_qwen2_vl.sh) | Finetune Qwen2-VL on image-text data using 4 A100s with FSDP |
137
137
 
138
138
  ## Key Features
139
139
 
@@ -146,7 +146,7 @@ With one line of code, Liger Kernel can increase throughput by more than 20% and
146
146
 
147
147
  ## Installation
148
148
 
149
- ### Dependencies
149
+ ### Dependencies
150
150
 
151
151
  #### CUDA
152
152
 
@@ -335,7 +335,7 @@ $$\text{GeGLU}(x)=\text{GELU}(xW+b)\otimes(xV+c)$$
335
335
  Biblatex entry:
336
336
  ```bib
337
337
  @article{hsu2024ligerkernelefficienttriton,
338
- title={Liger Kernel: Efficient Triton Kernels for LLM Training},
338
+ title={Liger Kernel: Efficient Triton Kernels for LLM Training},
339
339
  author={Pin-Lun Hsu and Yun Dai and Vignesh Kothapalli and Qingquan Song and Shao Tang and Siyu Zhu and Steven Shimizu and Shivam Sahni and Haowen Ning and Yanning Chen},
340
340
  year={2024},
341
341
  eprint={2410.10989},
@@ -360,4 +360,3 @@ Biblatex entry:
360
360
  ↑ Back to Top ↑
361
361
  </a>
362
362
  </p>
363
-
@@ -54,7 +54,7 @@
54
54
  <summary>Latest News 🔥</summary>
55
55
 
56
56
  - [2024/11/6] We release [v0.4.0](https://github.com/linkedin/Liger-Kernel/releases/tag/v0.4.0): Full AMD support, Tech Report, Modal CI, Llama-3.2-Vision!
57
- - [2024/10/21] We have released the tech report of Liger Kernel on Arxiv: https://arxiv.org/pdf/2410.10989
57
+ - [2024/10/21] We have released the tech report of Liger Kernel on Arxiv: https://arxiv.org/pdf/2410.10989
58
58
  - [2024/9/6] We release v0.2.1 ([X post](https://x.com/liger_kernel/status/1832168197002510649)). 2500+ Stars, 10+ New Contributors, 50+ PRs, 50k Downloads in two weeks!
59
59
  - [2024/8/31] CUDA MODE talk, [Liger-Kernel: Real-world Triton kernel for LLM Training](https://youtu.be/gWble4FreV4?si=dxPeIchhkJ36Mbns), [Slides](https://github.com/cuda-mode/lectures?tab=readme-ov-file#lecture-28-liger-kernel)
60
60
  - [2024/8/23] Official release: check out our [X post](https://x.com/hsu_byron/status/1827072737673982056)
@@ -81,12 +81,12 @@ With one line of code, Liger Kernel can increase throughput by more than 20% and
81
81
 
82
82
  ## Examples
83
83
 
84
-
85
84
  | **Use Case** | **Description** |
86
85
  |------------------------------------------------|---------------------------------------------------------------------------------------------------|
87
86
  | [**Hugging Face Trainer**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/huggingface) | Train LLaMA 3-8B ~20% faster with over 40% memory reduction on Alpaca dataset using 4 A100s with FSDP |
88
87
  | [**Lightning Trainer**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/lightning) | Increase 15% throughput and reduce memory usage by 40% with LLaMA3-8B on MMLU dataset using 8 A100s with DeepSpeed ZeRO3 |
89
- | [**Medusa Multi-head LLM (Retraining Phase)**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/medusa) | Reduce memory usage by 80% with 5 LM heads and improve throughput by 40% using 8 A100s with FSDP | |
88
+ | [**Medusa Multi-head LLM (Retraining Phase)**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/medusa) | Reduce memory usage by 80% with 5 LM heads and improve throughput by 40% using 8 A100s with FSDP |
89
+ | [**Vision-Language Model SFT**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/huggingface/run_qwen2_vl.sh) | Finetune Qwen2-VL on image-text data using 4 A100s with FSDP |
90
90
 
91
91
  ## Key Features
92
92
 
@@ -99,7 +99,7 @@ With one line of code, Liger Kernel can increase throughput by more than 20% and
99
99
 
100
100
  ## Installation
101
101
 
102
- ### Dependencies
102
+ ### Dependencies
103
103
 
104
104
  #### CUDA
105
105
 
@@ -288,7 +288,7 @@ $$\text{GeGLU}(x)=\text{GELU}(xW+b)\otimes(xV+c)$$
288
288
  Biblatex entry:
289
289
  ```bib
290
290
  @article{hsu2024ligerkernelefficienttriton,
291
- title={Liger Kernel: Efficient Triton Kernels for LLM Training},
291
+ title={Liger Kernel: Efficient Triton Kernels for LLM Training},
292
292
  author={Pin-Lun Hsu and Yun Dai and Vignesh Kothapalli and Qingquan Song and Shao Tang and Siyu Zhu and Steven Shimizu and Shivam Sahni and Haowen Ning and Yanning Chen},
293
293
  year={2024},
294
294
  eprint={2410.10989},
@@ -313,4 +313,3 @@ Biblatex entry:
313
313
  ↑ Back to Top ↑
314
314
  </a>
315
315
  </p>
316
-
@@ -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.dev20241119061743"
7
+ version = "0.4.2.dev20241119223206"
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]])
@@ -34,7 +34,7 @@ class LigerFusedLinearORPOFunction(LigerFusedLinearPreferenceBase):
34
34
  ignore_index=-100,
35
35
  beta=0.1,
36
36
  compute_nll_loss=True,
37
- compiled=True,
37
+ compiled=False,
38
38
  ):
39
39
  """
40
40
  Fused linear layer with ORPO (Odds-Ratio Preference Optimization) loss.
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: liger_kernel_nightly
3
- Version: 0.4.2.dev20241119061743
3
+ Version: 0.4.2.dev20241119223206
4
4
  Summary: Efficient Triton kernels for LLM Training
5
5
  License: BSD 2-CLAUSE LICENSE
6
6
  Copyright 2024 LinkedIn Corporation
@@ -101,7 +101,7 @@ Requires-Dist: seaborn; extra == "dev"
101
101
  <summary>Latest News 🔥</summary>
102
102
 
103
103
  - [2024/11/6] We release [v0.4.0](https://github.com/linkedin/Liger-Kernel/releases/tag/v0.4.0): Full AMD support, Tech Report, Modal CI, Llama-3.2-Vision!
104
- - [2024/10/21] We have released the tech report of Liger Kernel on Arxiv: https://arxiv.org/pdf/2410.10989
104
+ - [2024/10/21] We have released the tech report of Liger Kernel on Arxiv: https://arxiv.org/pdf/2410.10989
105
105
  - [2024/9/6] We release v0.2.1 ([X post](https://x.com/liger_kernel/status/1832168197002510649)). 2500+ Stars, 10+ New Contributors, 50+ PRs, 50k Downloads in two weeks!
106
106
  - [2024/8/31] CUDA MODE talk, [Liger-Kernel: Real-world Triton kernel for LLM Training](https://youtu.be/gWble4FreV4?si=dxPeIchhkJ36Mbns), [Slides](https://github.com/cuda-mode/lectures?tab=readme-ov-file#lecture-28-liger-kernel)
107
107
  - [2024/8/23] Official release: check out our [X post](https://x.com/hsu_byron/status/1827072737673982056)
@@ -128,12 +128,12 @@ With one line of code, Liger Kernel can increase throughput by more than 20% and
128
128
 
129
129
  ## Examples
130
130
 
131
-
132
131
  | **Use Case** | **Description** |
133
132
  |------------------------------------------------|---------------------------------------------------------------------------------------------------|
134
133
  | [**Hugging Face Trainer**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/huggingface) | Train LLaMA 3-8B ~20% faster with over 40% memory reduction on Alpaca dataset using 4 A100s with FSDP |
135
134
  | [**Lightning Trainer**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/lightning) | Increase 15% throughput and reduce memory usage by 40% with LLaMA3-8B on MMLU dataset using 8 A100s with DeepSpeed ZeRO3 |
136
- | [**Medusa Multi-head LLM (Retraining Phase)**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/medusa) | Reduce memory usage by 80% with 5 LM heads and improve throughput by 40% using 8 A100s with FSDP | |
135
+ | [**Medusa Multi-head LLM (Retraining Phase)**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/medusa) | Reduce memory usage by 80% with 5 LM heads and improve throughput by 40% using 8 A100s with FSDP |
136
+ | [**Vision-Language Model SFT**](https://github.com/linkedin/Liger-Kernel/tree/main/examples/huggingface/run_qwen2_vl.sh) | Finetune Qwen2-VL on image-text data using 4 A100s with FSDP |
137
137
 
138
138
  ## Key Features
139
139
 
@@ -146,7 +146,7 @@ With one line of code, Liger Kernel can increase throughput by more than 20% and
146
146
 
147
147
  ## Installation
148
148
 
149
- ### Dependencies
149
+ ### Dependencies
150
150
 
151
151
  #### CUDA
152
152
 
@@ -335,7 +335,7 @@ $$\text{GeGLU}(x)=\text{GELU}(xW+b)\otimes(xV+c)$$
335
335
  Biblatex entry:
336
336
  ```bib
337
337
  @article{hsu2024ligerkernelefficienttriton,
338
- title={Liger Kernel: Efficient Triton Kernels for LLM Training},
338
+ title={Liger Kernel: Efficient Triton Kernels for LLM Training},
339
339
  author={Pin-Lun Hsu and Yun Dai and Vignesh Kothapalli and Qingquan Song and Shao Tang and Siyu Zhu and Steven Shimizu and Shivam Sahni and Haowen Ning and Yanning Chen},
340
340
  year={2024},
341
341
  eprint={2410.10989},
@@ -360,4 +360,3 @@ Biblatex entry:
360
360
  ↑ Back to Top ↑
361
361
  </a>
362
362
  </p>
363
-
@@ -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