liger-kernel-nightly 0.5.3.dev20250218225514__tar.gz → 0.5.3.dev20250220002340__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) hide show
  1. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/PKG-INFO +6 -1
  2. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/README.md +5 -0
  3. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/pyproject.toml +1 -1
  4. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/__init__.py +1 -0
  5. liger_kernel_nightly-0.5.3.dev20250220002340/src/liger_kernel/chunked_loss/fused_linear_rlhf.py +213 -0
  6. liger_kernel_nightly-0.5.3.dev20250220002340/src/liger_kernel/chunked_loss/grpo_loss.py +160 -0
  7. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel_nightly.egg-info/PKG-INFO +6 -1
  8. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel_nightly.egg-info/SOURCES.txt +3 -0
  9. liger_kernel_nightly-0.5.3.dev20250220002340/test/chunked_loss/test_grpo_loss.py +275 -0
  10. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  11. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  12. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.github/pull_request_template.md +0 -0
  13. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.github/workflows/amd-ci.yml +0 -0
  14. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.github/workflows/docs.yml +0 -0
  15. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.github/workflows/intel-ci.yml +0 -0
  16. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.github/workflows/nvi-ci.yml +0 -0
  17. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.github/workflows/publish-nightly.yml +0 -0
  18. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.github/workflows/publish-release.yml +0 -0
  19. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/.gitignore +0 -0
  20. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/LICENSE +0 -0
  21. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/Makefile +0 -0
  22. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/NOTICE +0 -0
  23. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/README.md +0 -0
  24. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/__init__.py +0 -0
  25. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/benchmarks_visualizer.py +0 -0
  26. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/data/all_benchmark_data.csv +0 -0
  27. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/__init__.py +0 -0
  28. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_cpo_loss.py +0 -0
  29. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_cross_entropy.py +0 -0
  30. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_distill_jsd_loss.py +0 -0
  31. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_dpo_loss.py +0 -0
  32. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_embedding.py +0 -0
  33. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_fused_linear_cross_entropy.py +0 -0
  34. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_fused_linear_jsd.py +0 -0
  35. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_geglu.py +0 -0
  36. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_group_norm.py +0 -0
  37. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_jsd.py +0 -0
  38. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_kl_div.py +0 -0
  39. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_kto_loss.py +0 -0
  40. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_layer_norm.py +0 -0
  41. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_orpo_loss.py +0 -0
  42. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_qwen2vl_mrope.py +0 -0
  43. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_rms_norm.py +0 -0
  44. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_rope.py +0 -0
  45. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_simpo_loss.py +0 -0
  46. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/benchmark_swiglu.py +0 -0
  47. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/benchmark/scripts/utils.py +0 -0
  48. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/dev/fmt-requirements.txt +0 -0
  49. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/dev/modal/tests.py +0 -0
  50. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/dev/modal/tests_bwd.py +0 -0
  51. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/Examples.md +0 -0
  52. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/Getting-Started.md +0 -0
  53. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/High-Level-APIs.md +0 -0
  54. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/Low-Level-APIs.md +0 -0
  55. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/acknowledgement.md +0 -0
  56. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/contributing.md +0 -0
  57. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/images/banner.GIF +0 -0
  58. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/images/compose.gif +0 -0
  59. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/images/e2e-memory.png +0 -0
  60. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/images/e2e-tps.png +0 -0
  61. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/images/logo-banner.png +0 -0
  62. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/images/patch.gif +0 -0
  63. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/images/post-training.png +0 -0
  64. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/index.md +0 -0
  65. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/docs/license.md +0 -0
  66. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/alignment/accelerate_config.yaml +0 -0
  67. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/alignment/run_orpo.py +0 -0
  68. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/README.md +0 -0
  69. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/callback.py +0 -0
  70. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/config/fsdp_config.json +0 -0
  71. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/img/gemma_7b_mem.png +0 -0
  72. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/img/gemma_7b_tp.png +0 -0
  73. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/img/llama_mem_alloc.png +0 -0
  74. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/img/llama_tps.png +0 -0
  75. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/img/qwen_mem_alloc.png +0 -0
  76. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/img/qwen_tps.png +0 -0
  77. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/launch_on_modal.py +0 -0
  78. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/requirements.txt +0 -0
  79. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/run_benchmarks.sh +0 -0
  80. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/run_gemma.sh +0 -0
  81. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/run_llama.sh +0 -0
  82. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/run_qwen.sh +0 -0
  83. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/run_qwen2_vl.sh +0 -0
  84. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/training.py +0 -0
  85. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/huggingface/training_multimodal.py +0 -0
  86. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/lightning/README.md +0 -0
  87. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/lightning/requirements.txt +0 -0
  88. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/lightning/training.py +0 -0
  89. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/README.md +0 -0
  90. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/callback.py +0 -0
  91. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/docs/images/Memory_Stage1_num_head_3.png +0 -0
  92. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/docs/images/Memory_Stage1_num_head_5.png +0 -0
  93. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/docs/images/Memory_Stage2_num_head_3.png +0 -0
  94. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/docs/images/Memory_Stage2_num_head_5.png +0 -0
  95. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/docs/images/Throughput_Stage1_num_head_3.png +0 -0
  96. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/docs/images/Throughput_Stage1_num_head_5.png +0 -0
  97. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/docs/images/Throughput_Stage2_num_head_3.png +0 -0
  98. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/docs/images/Throughput_Stage2_num_head_5.png +0 -0
  99. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/fsdp/acc-fsdp.conf +0 -0
  100. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/medusa_util.py +0 -0
  101. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/requirements.txt +0 -0
  102. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/scripts/llama3_8b_medusa.sh +0 -0
  103. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/examples/medusa/train.py +0 -0
  104. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/licenses/LICENSE-Apache-2.0 +0 -0
  105. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/licenses/LICENSE-MIT-AutoAWQ +0 -0
  106. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/licenses/LICENSE-MIT-Efficient-Cross-Entropy +0 -0
  107. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/licenses/LICENSE-MIT-llmc +0 -0
  108. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/licenses/LICENSE-MIT-triton +0 -0
  109. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/mkdocs.yml +0 -0
  110. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/setup.cfg +0 -0
  111. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/setup.py +0 -0
  112. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/__init__.py +0 -0
  113. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/README.md +0 -0
  114. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/cpo_loss.py +0 -0
  115. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/dpo_loss.py +0 -0
  116. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/functional.py +0 -0
  117. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/fused_linear_distillation.py +0 -0
  118. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/fused_linear_preference.py +0 -0
  119. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/fused_linear_unpaired_preference.py +0 -0
  120. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/jsd_loss.py +0 -0
  121. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/kto_loss.py +0 -0
  122. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/orpo_loss.py +0 -0
  123. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/chunked_loss/simpo_loss.py +0 -0
  124. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/env_report.py +0 -0
  125. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/__init__.py +0 -0
  126. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/cross_entropy.py +0 -0
  127. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/experimental/embedding.py +0 -0
  128. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/experimental/mm_int8int2.py +0 -0
  129. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/fused_linear_cross_entropy.py +0 -0
  130. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/fused_linear_jsd.py +0 -0
  131. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/geglu.py +0 -0
  132. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/group_norm.py +0 -0
  133. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/jsd.py +0 -0
  134. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/kl_div.py +0 -0
  135. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/layer_norm.py +0 -0
  136. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/qwen2vl_mrope.py +0 -0
  137. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/rms_norm.py +0 -0
  138. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/rope.py +0 -0
  139. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/swiglu.py +0 -0
  140. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/ops/utils.py +0 -0
  141. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/__init__.py +0 -0
  142. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/auto_model.py +0 -0
  143. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/cross_entropy.py +0 -0
  144. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/experimental/embedding.py +0 -0
  145. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/functional.py +0 -0
  146. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/fused_linear_cross_entropy.py +0 -0
  147. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/fused_linear_jsd.py +0 -0
  148. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/geglu.py +0 -0
  149. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/group_norm.py +0 -0
  150. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/jsd.py +0 -0
  151. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/kl_div.py +0 -0
  152. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/layer_norm.py +0 -0
  153. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/__init__.py +0 -0
  154. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/gemma.py +0 -0
  155. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/gemma2.py +0 -0
  156. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/llama.py +0 -0
  157. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/mistral.py +0 -0
  158. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/mixtral.py +0 -0
  159. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/mllama.py +0 -0
  160. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/phi3.py +0 -0
  161. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/qwen2.py +0 -0
  162. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/model/qwen2_vl.py +0 -0
  163. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/monkey_patch.py +0 -0
  164. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/qwen2vl_mrope.py +0 -0
  165. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/rms_norm.py +0 -0
  166. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/rope.py +0 -0
  167. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/swiglu.py +0 -0
  168. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/trainer/__init__.py +0 -0
  169. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/trainer/orpo_trainer.py +0 -0
  170. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/transformers/trainer_integration.py +0 -0
  171. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/triton/__init__.py +0 -0
  172. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/triton/monkey_patch.py +0 -0
  173. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel/utils.py +0 -0
  174. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel_nightly.egg-info/dependency_links.txt +0 -0
  175. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel_nightly.egg-info/requires.txt +0 -0
  176. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/src/liger_kernel_nightly.egg-info/top_level.txt +0 -0
  177. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/__init__.py +0 -0
  178. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/chunked_loss/__init__.py +0 -0
  179. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/chunked_loss/test_cpo_loss.py +0 -0
  180. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/chunked_loss/test_dpo_loss.py +0 -0
  181. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/chunked_loss/test_jsd_loss.py +0 -0
  182. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/chunked_loss/test_kto_loss.py +0 -0
  183. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/chunked_loss/test_orpo_loss.py +0 -0
  184. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/chunked_loss/test_simpo_loss.py +0 -0
  185. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/conftest.py +0 -0
  186. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/convergence/__init__.py +0 -0
  187. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/convergence/bf16/__init__.py +0 -0
  188. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/convergence/bf16/test_mini_models.py +0 -0
  189. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/convergence/bf16/test_mini_models_multimodal.py +0 -0
  190. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/convergence/bf16/test_mini_models_with_logits.py +0 -0
  191. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/convergence/fp32/__init__.py +0 -0
  192. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/convergence/fp32/test_mini_models.py +0 -0
  193. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/convergence/fp32/test_mini_models_multimodal.py +0 -0
  194. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/convergence/fp32/test_mini_models_with_logits.py +0 -0
  195. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/resources/fake_configs/Qwen/Qwen2-VL-7B-Instruct/tokenizer_config.json +0 -0
  196. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/resources/fake_configs/meta-llama/Llama-3.2-11B-Vision-Instruct/tokenizer_config.json +0 -0
  197. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/resources/scripts/generate_tokenized_dataset.py +0 -0
  198. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/resources/tiny_shakespeare.txt +0 -0
  199. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/resources/tiny_shakespeare_tokenized/data-00000-of-00001.arrow +0 -0
  200. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/resources/tiny_shakespeare_tokenized/dataset_info.json +0 -0
  201. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/resources/tiny_shakespeare_tokenized/state.json +0 -0
  202. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_auto_model.py +0 -0
  203. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_cross_entropy.py +0 -0
  204. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_embedding.py +0 -0
  205. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_fused_linear_cross_entropy.py +0 -0
  206. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_fused_linear_jsd.py +0 -0
  207. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_geglu.py +0 -0
  208. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_group_norm.py +0 -0
  209. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_jsd.py +0 -0
  210. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_kl_div.py +0 -0
  211. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_layer_norm.py +0 -0
  212. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_mm_int8int2.py +0 -0
  213. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_monkey_patch.py +0 -0
  214. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_qwen2vl_mrope.py +0 -0
  215. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_rms_norm.py +0 -0
  216. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_rope.py +0 -0
  217. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_swiglu.py +0 -0
  218. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_trainer_integration.py +0 -0
  219. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/transformers/test_transformers.py +0 -0
  220. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/triton/test_triton_monkey_patch.py +0 -0
  221. {liger_kernel_nightly-0.5.3.dev20250218225514 → liger_kernel_nightly-0.5.3.dev20250220002340}/test/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: liger_kernel_nightly
3
- Version: 0.5.3.dev20250218225514
3
+ Version: 0.5.3.dev20250220002340
4
4
  Summary: Efficient Triton kernels for LLM Training
5
5
  License: BSD 2-CLAUSE LICENSE
6
6
  Copyright 2024 LinkedIn Corporation
@@ -191,6 +191,11 @@ y = orpo_loss(lm_head.weight, x, target)
191
191
  - `torch >= 2.5.0` Install according to the instruction in Pytorch official webpage.
192
192
  - `triton >= 3.0.0` Install from pypi. (e.g. `pip install triton==3.0.0`)
193
193
 
194
+ ```bash
195
+ # Need to pass the url when installing
196
+ pip install -e .[dev] --extra-index-url https://download.pytorch.org/whl/nightly/rocm6.2
197
+ ```
198
+
194
199
  ### Optional Dependencies
195
200
 
196
201
  - `transformers >= 4.x`: Required if you plan to use the transformers models patching APIs. The specific model you are working will dictate the minimum version of transformers.
@@ -143,6 +143,11 @@ y = orpo_loss(lm_head.weight, x, target)
143
143
  - `torch >= 2.5.0` Install according to the instruction in Pytorch official webpage.
144
144
  - `triton >= 3.0.0` Install from pypi. (e.g. `pip install triton==3.0.0`)
145
145
 
146
+ ```bash
147
+ # Need to pass the url when installing
148
+ pip install -e .[dev] --extra-index-url https://download.pytorch.org/whl/nightly/rocm6.2
149
+ ```
150
+
146
151
  ### Optional Dependencies
147
152
 
148
153
  - `transformers >= 4.x`: Required if you plan to use the transformers models patching APIs. The specific model you are working will dictate the minimum version of transformers.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "liger_kernel_nightly"
7
- version = "0.5.3.dev20250218225514"
7
+ version = "0.5.3.dev20250220002340"
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" }
@@ -1,5 +1,6 @@
1
1
  from liger_kernel.chunked_loss.cpo_loss import LigerFusedLinearCPOLoss # noqa: F401
2
2
  from liger_kernel.chunked_loss.dpo_loss import LigerFusedLinearDPOLoss # noqa: F401
3
+ from liger_kernel.chunked_loss.grpo_loss import LigerFusedLinearGRPOLoss # noqa: F401
3
4
  from liger_kernel.chunked_loss.jsd_loss import LigerFusedLinearJSDLoss # noqa: F401
4
5
  from liger_kernel.chunked_loss.kto_loss import LigerFusedLinearKTOLoss # noqa: F401
5
6
  from liger_kernel.chunked_loss.orpo_loss import LigerFusedLinearORPOLoss # noqa: F401
@@ -0,0 +1,213 @@
1
+ from functools import partial
2
+
3
+ import torch
4
+ import torch.nn.functional as F
5
+
6
+
7
+ class LigerFusedLinearRLHFBase(torch.autograd.Function):
8
+ @staticmethod
9
+ def forward(
10
+ ctx,
11
+ _input,
12
+ weight,
13
+ attention_mask,
14
+ rewards,
15
+ bias=None,
16
+ loss_fn=None,
17
+ num_generations=4,
18
+ beta=0.1,
19
+ compiled=True,
20
+ use_ref_model=False,
21
+ ref_input=None,
22
+ ref_weight=None,
23
+ ref_bias=None,
24
+ ):
25
+ """Chunked forward pass for RLHF loss computation."""
26
+ # Save for backward
27
+ ctx.beta = beta
28
+ ctx.rewards = rewards
29
+
30
+ # Initialize accumulators
31
+ loss_acc = torch.zeros((), device=_input.device)
32
+ grad_weight = torch.zeros_like(weight) # [V, H]
33
+ grad_inputs = []
34
+ grad_bias = torch.zeros_like(bias) if bias is not None else None # [V]
35
+ aggregated_metrics = []
36
+
37
+ # Create a partial function with fixed arguments
38
+ compute_loss = partial(
39
+ LigerFusedLinearRLHFBase._compute_chunk_loss,
40
+ beta=beta,
41
+ use_ref_model=use_ref_model,
42
+ ref_weight=ref_weight,
43
+ ref_bias=ref_bias,
44
+ rlhf_loss_fn=loss_fn,
45
+ )
46
+
47
+ def fused_fwd_bwd(input_chunk, attention_mask_chunk, rewards_chunk, ref_input_chunk):
48
+ """Fused forward and backward for a chunk."""
49
+ if bias is not None:
50
+ return torch.func.grad_and_value(compute_loss, argnums=(0, 1, 5), has_aux=True)(
51
+ input_chunk, # arg 0
52
+ weight, # arg 1
53
+ attention_mask_chunk, # arg 2
54
+ rewards_chunk, # arg 3
55
+ ref_input_chunk, # arg 4
56
+ bias, # arg 5
57
+ )
58
+ else:
59
+ return torch.func.grad_and_value(compute_loss, argnums=(0, 1), has_aux=True)(
60
+ input_chunk, # arg 0
61
+ weight, # arg 1
62
+ attention_mask_chunk, # arg 2
63
+ rewards_chunk, # arg 3
64
+ ref_input_chunk, # arg 4
65
+ )
66
+
67
+ def accumulate_chunk(input_chunk, attention_mask_chunk, rewards_chunk, ref_input_chunk=None):
68
+ if bias is not None:
69
+ (chunk_grad_input, chunk_grad_weight, chunk_grad_bias), (chunk_loss, chunk_metrics) = fused_fwd_bwd(
70
+ input_chunk, attention_mask_chunk, rewards_chunk, ref_input_chunk
71
+ )
72
+ grad_bias.add_(chunk_grad_bias)
73
+ else:
74
+ (chunk_grad_input, chunk_grad_weight), (chunk_loss, chunk_metrics) = fused_fwd_bwd(
75
+ input_chunk, attention_mask_chunk, rewards_chunk, ref_input_chunk
76
+ )
77
+
78
+ # Accumulate gradients and loss
79
+ grad_weight.add_(chunk_grad_weight)
80
+ grad_inputs.append(chunk_grad_input)
81
+ loss_acc.add_(chunk_loss)
82
+
83
+ # Initialize storage for metrics on first chunk
84
+ if len(aggregated_metrics) == 0:
85
+ for metric in chunk_metrics:
86
+ if metric.ndim == 0:
87
+ aggregated_metrics.append(torch.zeros((), device=metric.device))
88
+ else:
89
+ aggregated_metrics.append([])
90
+
91
+ # Accumulate metrics
92
+ for i, metric in enumerate(chunk_metrics):
93
+ if metric.ndim == 0:
94
+ aggregated_metrics[i].add_(metric)
95
+ else:
96
+ aggregated_metrics[i].append(metric)
97
+
98
+ if compiled:
99
+ accumulate_chunk = torch.compile(accumulate_chunk)
100
+
101
+ # Process input in chunks
102
+ chunks = max(1, _input.shape[0] // num_generations)
103
+ _input_chunks = torch.chunk(_input, chunks=chunks, dim=0)
104
+ _attention_mask_chunks = torch.chunk(attention_mask, chunks=chunks, dim=0)
105
+ _rewards_chunks = torch.chunk(rewards, chunks=chunks, dim=0)
106
+ _ref_input_chunks = torch.chunk(ref_input, chunks=chunks, dim=0) if use_ref_model else [None] * chunks
107
+
108
+ for input_chunk, attention_mask_chunk, rewards_chunk, ref_input_chunk in zip(
109
+ _input_chunks, _attention_mask_chunks, _rewards_chunks, _ref_input_chunks
110
+ ):
111
+ # Mark dynamic dimensions
112
+ torch._dynamo.mark_dynamic(input_chunk, 1)
113
+ torch._dynamo.mark_dynamic(attention_mask_chunk, 1)
114
+ if ref_input_chunk is not None:
115
+ torch._dynamo.mark_dynamic(ref_input_chunk, 1)
116
+
117
+ accumulate_chunk(input_chunk, attention_mask_chunk, rewards_chunk, ref_input_chunk)
118
+
119
+ # Scale accumulated loss by number of chunks since we're averaging
120
+ loss_acc = loss_acc / chunks
121
+
122
+ # Combine gradients
123
+ grad_input = torch.cat(grad_inputs, dim=0)
124
+
125
+ # Save for backward
126
+ ctx.save_for_backward(grad_input, grad_weight, grad_bias)
127
+
128
+ # Finalize metrics
129
+ final_metrics = []
130
+ for metric in aggregated_metrics:
131
+ if isinstance(metric, list):
132
+ final_metrics.append(torch.cat(metric, dim=0))
133
+ else:
134
+ final_metrics.append(metric / chunks)
135
+
136
+ return loss_acc, tuple(final_metrics)
137
+
138
+ @staticmethod
139
+ def _compute_chunk_loss(
140
+ input_chunk,
141
+ weight,
142
+ attention_mask_chunk,
143
+ rewards_chunk,
144
+ ref_input_chunk=None,
145
+ bias=None,
146
+ beta=0.1,
147
+ use_ref_model=False,
148
+ ref_weight=None,
149
+ ref_bias=None,
150
+ rlhf_loss_fn=None,
151
+ ):
152
+ """Compute loss for a single chunk."""
153
+ # Get policy log probabilities using chunk_forward
154
+ log_probs, _, logits_mean = LigerFusedLinearRLHFBase.chunk_forward(input_chunk, weight, bias=bias)
155
+
156
+ # Get reference log probabilities if needed
157
+ ref_log_probs = None
158
+ if use_ref_model and ref_input_chunk is not None:
159
+ with torch.no_grad():
160
+ ref_log_probs, _, _ = LigerFusedLinearRLHFBase.chunk_forward(ref_input_chunk, ref_weight, bias=ref_bias)
161
+
162
+ # Compute chunk loss and metrics using the provided loss function
163
+ chunk_loss, chunk_metrics = rlhf_loss_fn(
164
+ log_probs=log_probs,
165
+ attention_mask=attention_mask_chunk,
166
+ rewards=rewards_chunk,
167
+ ref_log_probs=ref_log_probs,
168
+ beta=beta,
169
+ )
170
+
171
+ return chunk_loss, (logits_mean, *chunk_metrics)
172
+
173
+ @staticmethod
174
+ def chunk_forward(input_chunk, weight, bias=None):
175
+ """Forward pass computation for a single chunk without explicit reshaping."""
176
+ # Directly compute logits via batched matrix multiplication: [B, T, H] @ [H, V] -> [B, T, V]
177
+ logits = torch.matmul(input_chunk, weight.t())
178
+ if bias is not None:
179
+ logits = logits + bias # Broadcasts bias to [B, T, V]
180
+
181
+ # Compute log probabilities using softmax over the last dimension
182
+ log_probs = F.log_softmax(logits.float(), dim=-1)
183
+
184
+ # Monitoring: compute mean of logits
185
+ batch_size, seq_len, _ = input_chunk.shape
186
+ logits_mean = logits.sum() / (batch_size * seq_len * weight.shape[0])
187
+ return log_probs, logits, logits_mean
188
+
189
+ @staticmethod
190
+ def backward(ctx, grad_output, *grad_metrics):
191
+ """Backward pass for RLHF loss."""
192
+ grad_input, grad_weight, grad_bias = ctx.saved_tensors
193
+ if grad_output != 1.0:
194
+ grad_input = grad_input * grad_output
195
+ grad_weight = grad_weight * grad_output
196
+ if grad_bias is not None:
197
+ grad_bias = grad_bias * grad_output
198
+
199
+ return (
200
+ grad_input,
201
+ grad_weight,
202
+ None, # grad_attention_mask
203
+ None, # grad_rewards
204
+ grad_bias,
205
+ None, # grad_loss_fn
206
+ None, # grad_chunk_size
207
+ None, # grad_beta
208
+ None, # grad_compiled
209
+ None, # grad_use_ref_model
210
+ None, # grad_ref_input
211
+ None, # grad_ref_weight
212
+ None, # grad_ref_bias
213
+ )
@@ -0,0 +1,160 @@
1
+ import torch
2
+
3
+ from liger_kernel.chunked_loss.fused_linear_rlhf import LigerFusedLinearRLHFBase
4
+
5
+
6
+ class LigerFusedLinearGRPOFunction(LigerFusedLinearRLHFBase):
7
+ @staticmethod
8
+ def rlhf_loss_fn(
9
+ log_probs,
10
+ attention_mask,
11
+ rewards,
12
+ ref_log_probs=None,
13
+ beta=0.1,
14
+ **kwargs,
15
+ ):
16
+ """GRPO Loss Function matching GRPOTrainer implementation."""
17
+ # Get chosen token probabilities
18
+ chosen_tokens = log_probs.argmax(dim=-1) # (batch_size, seq_len)
19
+ chosen_token_logprobs = log_probs.gather(dim=-1, index=chosen_tokens.unsqueeze(-1)).squeeze(
20
+ -1
21
+ ) # (batch_size, seq_len)
22
+
23
+ # Get reference model probabilities
24
+ if ref_log_probs is not None:
25
+ with torch.no_grad():
26
+ ref_token_logprobs = ref_log_probs.gather(dim=-1, index=chosen_tokens.unsqueeze(-1)).squeeze(-1)
27
+ else:
28
+ ref_token_logprobs = chosen_token_logprobs.detach()
29
+
30
+ # Compute advantages per batch entry in a grouped fashion
31
+ mean_grouped_rewards = rewards.mean() # [batch_size,]
32
+ std_grouped_rewards = rewards.std() # [batch_size,]
33
+
34
+ # Calculate advantages using the same epsilon as in GRPOTrainer
35
+ eps = 1e-4
36
+ advantages = (rewards - mean_grouped_rewards) / (std_grouped_rewards + eps)
37
+
38
+ # Compute policy gradient loss with importance sampling ratio
39
+ ratio = torch.exp(chosen_token_logprobs - chosen_token_logprobs.detach())
40
+ policy_loss = -ratio * advantages.unsqueeze(1)
41
+
42
+ # Compute KL penalty
43
+ kl_div = (
44
+ torch.exp(ref_token_logprobs - chosen_token_logprobs) - (ref_token_logprobs - chosen_token_logprobs) - 1.0
45
+ )
46
+
47
+ # Combine losses
48
+ per_token_loss = policy_loss + beta * kl_div
49
+
50
+ # Apply masking and normalize
51
+ masked_loss = per_token_loss * attention_mask
52
+ seq_lengths = attention_mask.sum()
53
+ seq_lengths = torch.clamp(seq_lengths, min=1.0)
54
+ loss = masked_loss.sum() / seq_lengths
55
+
56
+ # Calculate metrics
57
+ metrics = (
58
+ chosen_token_logprobs.mean(), # mean log prob
59
+ chosen_token_logprobs.std(), # std log prob
60
+ log_probs.mean(), # mean all log probs
61
+ ((kl_div * attention_mask).sum(dim=1) / attention_mask.sum(dim=1)).mean(), # mean KL div
62
+ )
63
+
64
+ return loss, metrics
65
+
66
+ @staticmethod
67
+ def forward(
68
+ ctx,
69
+ _input,
70
+ weight,
71
+ attention_mask,
72
+ rewards,
73
+ bias=None,
74
+ ref_input=None,
75
+ ref_weight=None,
76
+ ref_bias=None,
77
+ beta=0.1,
78
+ compiled=True,
79
+ use_ref_model=True,
80
+ num_generations=1,
81
+ ):
82
+ return LigerFusedLinearRLHFBase.forward(
83
+ ctx=ctx,
84
+ _input=_input,
85
+ weight=weight,
86
+ attention_mask=attention_mask,
87
+ loss_fn=LigerFusedLinearGRPOFunction.rlhf_loss_fn,
88
+ rewards=rewards,
89
+ bias=bias,
90
+ ref_input=ref_input,
91
+ ref_weight=ref_weight,
92
+ ref_bias=ref_bias,
93
+ beta=beta,
94
+ compiled=compiled,
95
+ use_ref_model=use_ref_model,
96
+ num_generations=num_generations,
97
+ )
98
+
99
+ @staticmethod
100
+ def backward(ctx, grad_output, *grad_metrics):
101
+ """Backward pass for GRPO loss.
102
+
103
+ Args:
104
+ grad_output: Gradient of the loss (scalar)
105
+ grad_metrics: Gradients of the metrics (not used in backward computation)
106
+ """
107
+ grads = LigerFusedLinearRLHFBase.backward(ctx, grad_output)
108
+ return (
109
+ *grads[:5], # grad_input, grad_weight, grad_attention_mask, grad_rewards, grad_bias
110
+ None, # grad_ref_input
111
+ None, # grad_ref_weight
112
+ None, # grad_ref_bias
113
+ None, # grad_beta
114
+ None, # grad_compiled
115
+ None, # grad_use_ref_model
116
+ None, # grad_num_generations
117
+ )
118
+
119
+
120
+ class LigerFusedLinearGRPOLoss(torch.nn.Module):
121
+ """Fused linear layer with GRPO loss."""
122
+
123
+ def __init__(
124
+ self,
125
+ beta: float = 0.1,
126
+ compiled: bool = True,
127
+ use_ref_model: bool = True,
128
+ num_generations: int = 1,
129
+ ):
130
+ super().__init__()
131
+ self.beta = beta
132
+ self.compiled = compiled
133
+ self.use_ref_model = use_ref_model
134
+ self.num_generations = num_generations
135
+
136
+ def forward(
137
+ self,
138
+ _input,
139
+ lin_weight,
140
+ attention_mask,
141
+ rewards,
142
+ bias=None,
143
+ ref_input=None,
144
+ ref_weight=None,
145
+ ref_bias=None,
146
+ ):
147
+ return LigerFusedLinearGRPOFunction.apply(
148
+ _input,
149
+ lin_weight,
150
+ attention_mask,
151
+ rewards,
152
+ bias,
153
+ ref_input,
154
+ ref_weight,
155
+ ref_bias,
156
+ self.beta,
157
+ self.compiled,
158
+ self.use_ref_model,
159
+ self.num_generations,
160
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: liger_kernel_nightly
3
- Version: 0.5.3.dev20250218225514
3
+ Version: 0.5.3.dev20250220002340
4
4
  Summary: Efficient Triton kernels for LLM Training
5
5
  License: BSD 2-CLAUSE LICENSE
6
6
  Copyright 2024 LinkedIn Corporation
@@ -191,6 +191,11 @@ y = orpo_loss(lm_head.weight, x, target)
191
191
  - `torch >= 2.5.0` Install according to the instruction in Pytorch official webpage.
192
192
  - `triton >= 3.0.0` Install from pypi. (e.g. `pip install triton==3.0.0`)
193
193
 
194
+ ```bash
195
+ # Need to pass the url when installing
196
+ pip install -e .[dev] --extra-index-url https://download.pytorch.org/whl/nightly/rocm6.2
197
+ ```
198
+
194
199
  ### Optional Dependencies
195
200
 
196
201
  - `transformers >= 4.x`: Required if you plan to use the transformers models patching APIs. The specific model you are working will dictate the minimum version of transformers.
@@ -111,7 +111,9 @@ src/liger_kernel/chunked_loss/dpo_loss.py
111
111
  src/liger_kernel/chunked_loss/functional.py
112
112
  src/liger_kernel/chunked_loss/fused_linear_distillation.py
113
113
  src/liger_kernel/chunked_loss/fused_linear_preference.py
114
+ src/liger_kernel/chunked_loss/fused_linear_rlhf.py
114
115
  src/liger_kernel/chunked_loss/fused_linear_unpaired_preference.py
116
+ src/liger_kernel/chunked_loss/grpo_loss.py
115
117
  src/liger_kernel/chunked_loss/jsd_loss.py
116
118
  src/liger_kernel/chunked_loss/kto_loss.py
117
119
  src/liger_kernel/chunked_loss/orpo_loss.py
@@ -175,6 +177,7 @@ test/utils.py
175
177
  test/chunked_loss/__init__.py
176
178
  test/chunked_loss/test_cpo_loss.py
177
179
  test/chunked_loss/test_dpo_loss.py
180
+ test/chunked_loss/test_grpo_loss.py
178
181
  test/chunked_loss/test_jsd_loss.py
179
182
  test/chunked_loss/test_kto_loss.py
180
183
  test/chunked_loss/test_orpo_loss.py