liger-kernel-nightly 0.5.2.dev20241217060137__tar.gz → 0.5.2.dev20241218221959__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/PKG-INFO +1 -1
  2. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/pyproject.toml +1 -1
  3. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/chunked_loss/cpo_loss.py +10 -1
  4. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/chunked_loss/dpo_loss.py +7 -1
  5. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/chunked_loss/fused_linear_preference.py +61 -31
  6. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/chunked_loss/orpo_loss.py +9 -1
  7. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel_nightly.egg-info/PKG-INFO +1 -1
  8. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/utils.py +14 -3
  9. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.flake8 +0 -0
  10. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  11. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  12. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.github/pull_request_template.md +0 -0
  13. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.github/workflows/amd-ci.yml +0 -0
  14. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.github/workflows/nvi-ci.yml +0 -0
  15. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.github/workflows/publish-nightly.yml +0 -0
  16. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.github/workflows/publish-release.yml +0 -0
  17. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.gitignore +0 -0
  18. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/.isort.cfg +0 -0
  19. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/LICENSE +0 -0
  20. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/Makefile +0 -0
  21. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/NOTICE +0 -0
  22. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/README.md +0 -0
  23. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/__init__.py +0 -0
  24. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/benchmarks_visualizer.py +0 -0
  25. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/data/all_benchmark_data.csv +0 -0
  26. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/__init__.py +0 -0
  27. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_cpo_loss.py +0 -0
  28. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_cross_entropy.py +0 -0
  29. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_dpo_loss.py +0 -0
  30. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_embedding.py +0 -0
  31. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_fused_linear_cross_entropy.py +0 -0
  32. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_fused_linear_jsd.py +0 -0
  33. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_geglu.py +0 -0
  34. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_group_norm.py +0 -0
  35. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_jsd.py +0 -0
  36. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_kl_div.py +0 -0
  37. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_layer_norm.py +0 -0
  38. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_orpo_loss.py +0 -0
  39. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_qwen2vl_mrope.py +0 -0
  40. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_rms_norm.py +0 -0
  41. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_rope.py +0 -0
  42. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_simpo_loss.py +0 -0
  43. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/benchmark_swiglu.py +0 -0
  44. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/benchmark/scripts/utils.py +0 -0
  45. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/dev/fmt-requirements.txt +0 -0
  46. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/dev/modal/tests.py +0 -0
  47. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/dev/modal/tests_bwd.py +0 -0
  48. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/Acknowledgement.md +0 -0
  49. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/CONTRIBUTING.md +0 -0
  50. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/License.md +0 -0
  51. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/images/banner.GIF +0 -0
  52. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/images/compose.gif +0 -0
  53. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/images/e2e-memory.png +0 -0
  54. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/images/e2e-tps.png +0 -0
  55. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/images/logo-banner.png +0 -0
  56. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/images/patch.gif +0 -0
  57. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/docs/images/post-training.png +0 -0
  58. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/alignment/accelerate_config.yaml +0 -0
  59. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/alignment/run_orpo.py +0 -0
  60. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/README.md +0 -0
  61. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/callback.py +0 -0
  62. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/config/fsdp_config.json +0 -0
  63. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/img/gemma_7b_mem.png +0 -0
  64. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/img/gemma_7b_tp.png +0 -0
  65. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/img/llama_mem_alloc.png +0 -0
  66. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/img/llama_tps.png +0 -0
  67. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/img/qwen_mem_alloc.png +0 -0
  68. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/img/qwen_tps.png +0 -0
  69. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/launch_on_modal.py +0 -0
  70. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/requirements.txt +0 -0
  71. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/run_benchmarks.sh +0 -0
  72. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/run_gemma.sh +0 -0
  73. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/run_llama.sh +0 -0
  74. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/run_qwen.sh +0 -0
  75. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/run_qwen2_vl.sh +0 -0
  76. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/training.py +0 -0
  77. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/huggingface/training_multimodal.py +0 -0
  78. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/lightning/README.md +0 -0
  79. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/lightning/requirements.txt +0 -0
  80. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/lightning/training.py +0 -0
  81. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/README.md +0 -0
  82. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/callback.py +0 -0
  83. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/docs/images/Memory_Stage1_num_head_3.png +0 -0
  84. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/docs/images/Memory_Stage1_num_head_5.png +0 -0
  85. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/docs/images/Memory_Stage2_num_head_3.png +0 -0
  86. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/docs/images/Memory_Stage2_num_head_5.png +0 -0
  87. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/docs/images/Throughput_Stage1_num_head_3.png +0 -0
  88. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/docs/images/Throughput_Stage1_num_head_5.png +0 -0
  89. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/docs/images/Throughput_Stage2_num_head_3.png +0 -0
  90. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/docs/images/Throughput_Stage2_num_head_5.png +0 -0
  91. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/fsdp/acc-fsdp.conf +0 -0
  92. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/medusa_util.py +0 -0
  93. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/requirements.txt +0 -0
  94. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/scripts/llama3_8b_medusa.sh +0 -0
  95. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/examples/medusa/train.py +0 -0
  96. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/licenses/LICENSE-Apache-2.0 +0 -0
  97. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/licenses/LICENSE-MIT-AutoAWQ +0 -0
  98. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/licenses/LICENSE-MIT-Efficient-Cross-Entropy +0 -0
  99. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/licenses/LICENSE-MIT-llmc +0 -0
  100. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/licenses/LICENSE-MIT-triton +0 -0
  101. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/setup.cfg +0 -0
  102. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/setup.py +0 -0
  103. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/__init__.py +0 -0
  104. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/chunked_loss/README.md +0 -0
  105. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/chunked_loss/__init__.py +0 -0
  106. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/chunked_loss/functional.py +0 -0
  107. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/chunked_loss/fused_linear_distillation.py +0 -0
  108. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/chunked_loss/simpo_loss.py +0 -0
  109. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/env_report.py +0 -0
  110. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/__init__.py +0 -0
  111. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/cross_entropy.py +0 -0
  112. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/experimental/embedding.py +0 -0
  113. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/experimental/mm_int8int2.py +0 -0
  114. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/fused_linear_cross_entropy.py +0 -0
  115. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/fused_linear_jsd.py +0 -0
  116. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/geglu.py +0 -0
  117. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/group_norm.py +0 -0
  118. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/jsd.py +0 -0
  119. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/kl_div.py +0 -0
  120. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/layer_norm.py +0 -0
  121. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/qwen2vl_mrope.py +0 -0
  122. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/rms_norm.py +0 -0
  123. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/rope.py +0 -0
  124. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/swiglu.py +0 -0
  125. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/ops/utils.py +0 -0
  126. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/__init__.py +0 -0
  127. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/auto_model.py +0 -0
  128. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/cross_entropy.py +0 -0
  129. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/experimental/embedding.py +0 -0
  130. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/functional.py +0 -0
  131. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/fused_linear_cross_entropy.py +0 -0
  132. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/fused_linear_jsd.py +0 -0
  133. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/geglu.py +0 -0
  134. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/group_norm.py +0 -0
  135. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/jsd.py +0 -0
  136. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/kl_div.py +0 -0
  137. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/layer_norm.py +0 -0
  138. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/__init__.py +0 -0
  139. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/gemma.py +0 -0
  140. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/gemma2.py +0 -0
  141. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/llama.py +0 -0
  142. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/mistral.py +0 -0
  143. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/mixtral.py +0 -0
  144. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/mllama.py +0 -0
  145. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/phi3.py +0 -0
  146. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/qwen2.py +0 -0
  147. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/model/qwen2_vl.py +0 -0
  148. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/monkey_patch.py +0 -0
  149. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/qwen2vl_mrope.py +0 -0
  150. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/rms_norm.py +0 -0
  151. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/rope.py +0 -0
  152. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/swiglu.py +0 -0
  153. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/trainer/__init__.py +0 -0
  154. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/trainer/orpo_trainer.py +0 -0
  155. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/transformers/trainer_integration.py +0 -0
  156. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/triton/__init__.py +0 -0
  157. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/triton/monkey_patch.py +0 -0
  158. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel/utils.py +0 -0
  159. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel_nightly.egg-info/SOURCES.txt +0 -0
  160. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel_nightly.egg-info/dependency_links.txt +0 -0
  161. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel_nightly.egg-info/requires.txt +0 -0
  162. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/src/liger_kernel_nightly.egg-info/top_level.txt +0 -0
  163. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/__init__.py +0 -0
  164. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/chunked_loss/__init__.py +0 -0
  165. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/chunked_loss/test_cpo_loss.py +0 -0
  166. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/chunked_loss/test_dpo_loss.py +0 -0
  167. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/chunked_loss/test_orpo_loss.py +0 -0
  168. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/chunked_loss/test_simpo_loss.py +0 -0
  169. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/conftest.py +0 -0
  170. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/convergence/__init__.py +0 -0
  171. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/convergence/test_mini_models.py +0 -0
  172. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/convergence/test_mini_models_multimodal.py +0 -0
  173. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/convergence/test_mini_models_with_logits.py +0 -0
  174. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/resources/fake_configs/Qwen/Qwen2-VL-7B-Instruct/tokenizer_config.json +0 -0
  175. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/resources/fake_configs/meta-llama/Llama-3.2-11B-Vision-Instruct/tokenizer_config.json +0 -0
  176. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/resources/scripts/generate_tokenized_dataset.py +0 -0
  177. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/resources/tiny_shakespeare.txt +0 -0
  178. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/resources/tiny_shakespeare_tokenized/data-00000-of-00001.arrow +0 -0
  179. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/resources/tiny_shakespeare_tokenized/dataset_info.json +0 -0
  180. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/resources/tiny_shakespeare_tokenized/state.json +0 -0
  181. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_auto_model.py +0 -0
  182. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_cross_entropy.py +0 -0
  183. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_embedding.py +0 -0
  184. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_fused_linear_cross_entropy.py +0 -0
  185. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_fused_linear_jsd.py +0 -0
  186. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_geglu.py +0 -0
  187. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_group_norm.py +0 -0
  188. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_jsd.py +0 -0
  189. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_kl_div.py +0 -0
  190. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_layer_norm.py +0 -0
  191. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_mm_int8int2.py +0 -0
  192. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_monkey_patch.py +0 -0
  193. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_qwen2vl_mrope.py +0 -0
  194. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_rms_norm.py +0 -0
  195. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_rope.py +0 -0
  196. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_swiglu.py +0 -0
  197. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_trainer_integration.py +0 -0
  198. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/transformers/test_transformers.py +0 -0
  199. {liger_kernel_nightly-0.5.2.dev20241217060137 → liger_kernel_nightly-0.5.2.dev20241218221959}/test/triton/test_triton_monkey_patch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: liger_kernel_nightly
3
- Version: 0.5.2.dev20241217060137
3
+ Version: 0.5.2.dev20241218221959
4
4
  Summary: Efficient Triton kernels for LLM Training
5
5
  License: BSD 2-CLAUSE LICENSE
6
6
  Copyright 2024 LinkedIn Corporation
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "liger_kernel_nightly"
7
- version = "0.5.2.dev20241217060137"
7
+ version = "0.5.2.dev20241218221959"
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" }
@@ -47,6 +47,7 @@ class LigerFusedLinearCPOFunction(LigerFusedLinearPreferenceBase):
47
47
  alpha=1.0,
48
48
  compute_nll_loss=True,
49
49
  compiled=True,
50
+ is_encoder_decoder=False,
50
51
  ):
51
52
  return LigerFusedLinearPreferenceBase.forward(
52
53
  ctx,
@@ -60,12 +61,13 @@ class LigerFusedLinearCPOFunction(LigerFusedLinearPreferenceBase):
60
61
  beta=beta,
61
62
  compute_nll_loss=compute_nll_loss,
62
63
  compiled=compiled,
64
+ is_encoder_decoder=is_encoder_decoder,
63
65
  )
64
66
 
65
67
  @staticmethod
66
68
  def backward(ctx, *grad_output):
67
69
  grads = LigerFusedLinearPreferenceBase.backward(ctx, grad_output)[:4]
68
- return *grads, None, None, None, None, None
70
+ return *grads, None, None, None, None, None, None
69
71
 
70
72
 
71
73
  class LigerFusedLinearCPOLoss(torch.nn.Module):
@@ -80,11 +82,16 @@ class LigerFusedLinearCPOLoss(torch.nn.Module):
80
82
  alpha: float = 1.0,
81
83
  compute_nll_loss: bool = True,
82
84
  compiled: bool = True,
85
+ is_encoder_decoder: bool = False,
83
86
  ):
84
87
  """
85
88
  Args:
86
89
  ignore_index (int): Index to ignore in the loss.
87
90
  beta (float): Weight for the odds ratio loss.
91
+ alpha (float): Weight for the NLL loss.
92
+ compute_nll_loss (bool): Whether to compute NLL loss.
93
+ compiled (bool): Whether to compile the loss function.
94
+ is_encoder_decoder (bool): Whether the model is an encoder-decoder model.
88
95
  """
89
96
  super().__init__()
90
97
  self.ignore_index = ignore_index
@@ -92,6 +99,7 @@ class LigerFusedLinearCPOLoss(torch.nn.Module):
92
99
  self.alpha = alpha
93
100
  self.compute_nll_loss = compute_nll_loss
94
101
  self.compiled = compiled
102
+ self.is_encoder_decoder = is_encoder_decoder
95
103
 
96
104
  def forward(self, lin_weight, _input, target, bias=None):
97
105
  return LigerFusedLinearCPOFunction.apply(
@@ -104,4 +112,5 @@ class LigerFusedLinearCPOLoss(torch.nn.Module):
104
112
  self.alpha,
105
113
  self.compute_nll_loss,
106
114
  self.compiled,
115
+ self.is_encoder_decoder,
107
116
  )
@@ -67,6 +67,7 @@ class LigerFusedLinearDPOFunction(LigerFusedLinearPreferenceBase):
67
67
  compute_nll_loss=True,
68
68
  compiled=True,
69
69
  use_ref_model=True,
70
+ is_encoder_decoder=False,
70
71
  ):
71
72
  return LigerFusedLinearPreferenceBase.forward(
72
73
  ctx=ctx,
@@ -83,12 +84,13 @@ class LigerFusedLinearDPOFunction(LigerFusedLinearPreferenceBase):
83
84
  ref_input=ref_input,
84
85
  ref_weight=ref_weight,
85
86
  ref_bias=ref_bias,
87
+ is_encoder_decoder=is_encoder_decoder,
86
88
  )
87
89
 
88
90
  @staticmethod
89
91
  def backward(ctx, *grad_output):
90
92
  grads = LigerFusedLinearPreferenceBase.backward(ctx, grad_output)[:4]
91
- return *grads, None, None, None, None, None, None, None, None
93
+ return *grads, None, None, None, None, None, None, None, None, None
92
94
 
93
95
 
94
96
  class LigerFusedLinearDPOLoss(torch.nn.Module):
@@ -103,6 +105,7 @@ class LigerFusedLinearDPOLoss(torch.nn.Module):
103
105
  compute_nll_loss: bool = True,
104
106
  compiled: bool = True,
105
107
  use_ref_model: bool = False,
108
+ is_encoder_decoder: bool = False,
106
109
  ):
107
110
  """
108
111
  Args:
@@ -111,6 +114,7 @@ class LigerFusedLinearDPOLoss(torch.nn.Module):
111
114
  compute_nll_loss (bool): Whether to compute the NLL loss.
112
115
  compiled (bool): Whether to use the torch compiled kernel.
113
116
  use_ref_model (bool): Whether to use a reference model for the DPO loss.
117
+ is_encoder_decoder (bool): Whether the model is an encoder-decoder model.
114
118
  """
115
119
  super().__init__()
116
120
  self.ignore_index = ignore_index
@@ -118,6 +122,7 @@ class LigerFusedLinearDPOLoss(torch.nn.Module):
118
122
  self.compute_nll_loss = compute_nll_loss
119
123
  self.compiled = compiled
120
124
  self.use_ref_model = use_ref_model
125
+ self.is_encoder_decoder = is_encoder_decoder
121
126
 
122
127
  def forward(
123
128
  self,
@@ -142,4 +147,5 @@ class LigerFusedLinearDPOLoss(torch.nn.Module):
142
147
  self.compute_nll_loss,
143
148
  self.compiled,
144
149
  self.use_ref_model,
150
+ self.is_encoder_decoder,
145
151
  )
@@ -26,6 +26,7 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
26
26
  ignore_index=-100,
27
27
  alpha=1.0,
28
28
  beta=0.1,
29
+ is_encoder_decoder=False,
29
30
  compute_nll_loss=True,
30
31
  compiled=True,
31
32
  use_ref_model=False,
@@ -56,6 +57,7 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
56
57
  ignore_index (int): Index to ignore for loss computation.
57
58
  alpha (float): Weight for the NLL loss.
58
59
  beta (float): Weight for the preference loss.
60
+ is_encoder_decoder (bool): Whether the model is an encoder-decoder model.
59
61
  compute_nll_loss (bool): Whether to compute NLL loss.
60
62
  compiled (bool): Whether to use torch compile for chunk accumulation.
61
63
  use_ref_model (bool): Whether to use a reference model for the alignment loss.
@@ -94,6 +96,7 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
94
96
  use_ref_model=use_ref_model,
95
97
  ref_weight=ref_weight,
96
98
  ref_bias=ref_bias,
99
+ is_encoder_decoder=is_encoder_decoder,
97
100
  **loss_kwargs,
98
101
  )
99
102
 
@@ -282,33 +285,48 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
282
285
  bias=None,
283
286
  ignore_index=-100,
284
287
  compute_nll_loss=True,
288
+ is_encoder_decoder=False,
285
289
  ):
286
- len_chosen_chunk = target_chunk.shape[0] // 2
290
+ # Calculate logits and log probabilities
287
291
  logits_chunk = input_chunk @ weight.t()
288
292
  if bias is not None:
289
- logits_chunk = logits_chunk + bias
293
+ logits_chunk += bias
290
294
  log_probs_chunk = F.log_softmax(logits_chunk.float(), dim=-1)
291
295
 
296
+ # Split chunk into chosen and rejected portions
297
+ len_chosen_chunk = target_chunk.shape[0] // 2
298
+
299
+ # Handle sequence shifting for non-encoder-decoder models
300
+ if not is_encoder_decoder:
301
+ logits_chunk = logits_chunk[:, :-1]
302
+ log_probs_chunk = log_probs_chunk[:, :-1]
303
+ target_chunk = target_chunk[:, 1:]
304
+
305
+ # Calculate NLL loss for chosen sequences
292
306
  chosen_nll_loss = 0.0
293
307
  if compute_nll_loss:
308
+ chosen_probs = log_probs_chunk[:len_chosen_chunk]
309
+ chosen_targets = target_chunk[:len_chosen_chunk]
294
310
  chosen_nll_loss = F.nll_loss(
295
- log_probs_chunk[:len_chosen_chunk].view(-1, log_probs_chunk.shape[-1]),
296
- target_chunk[:len_chosen_chunk].view(-1),
311
+ chosen_probs.reshape(-1, chosen_probs.shape[-1]),
312
+ chosen_targets.reshape(-1),
297
313
  reduction="sum",
298
314
  ignore_index=ignore_index,
299
315
  )
300
316
 
317
+ # Calculate per-token log probabilities
301
318
  loss_mask = target_chunk != ignore_index
302
319
  label_chunk = torch.where(loss_mask, target_chunk, 0)
303
-
304
320
  per_token_logps = log_probs_chunk.gather(-1, label_chunk.unsqueeze(-1)).squeeze(
305
321
  -1
306
322
  )
307
323
  average_log_prob = (per_token_logps * loss_mask).sum(-1) / loss_mask.sum(-1)
308
324
 
309
- chosen_logps = average_log_prob[:len_chosen_chunk]
310
- rejected_logps = average_log_prob[len_chosen_chunk:]
311
-
325
+ # Split results for chosen and rejected
326
+ chosen_logps, rejected_logps = (
327
+ average_log_prob[:len_chosen_chunk],
328
+ average_log_prob[len_chosen_chunk:],
329
+ )
312
330
  chosen_logits = logits_chunk[:len_chosen_chunk]
313
331
  rejected_logits = logits_chunk[len_chosen_chunk:]
314
332
 
@@ -331,6 +349,7 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
331
349
  ignore_index=-100,
332
350
  alpha=1.0,
333
351
  beta=0.1,
352
+ is_encoder_decoder=False,
334
353
  compute_nll_loss=True,
335
354
  use_ref_model=False,
336
355
  ref_input_chunk=None,
@@ -350,6 +369,7 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
350
369
  ignore_index (int): Index to ignore for loss computation.
351
370
  alpha (float): Weight for the NLL loss.
352
371
  beta (float): Weight for the preference loss.
372
+ is_encoder_decoder (bool): Whether the model is an encoder-decoder model.
353
373
  compute_nll_loss (bool): Whether to compute NLL loss.
354
374
  use_ref_model (bool): Whether to use a reference model for the alignment loss.
355
375
  ref_weight (torch.Tensor): Reference weight tensor. Shape: (vocab_size, hidden_size).
@@ -369,33 +389,43 @@ class LigerFusedLinearPreferenceBase(torch.autograd.Function):
369
389
  bias=bias,
370
390
  ignore_index=ignore_index,
371
391
  compute_nll_loss=compute_nll_loss,
392
+ is_encoder_decoder=is_encoder_decoder,
372
393
  )
373
- chosen_nll_loss = (
374
- chosen_nll_loss
375
- / (full_target[: full_target.shape[0] // 2] != ignore_index).sum()
376
- )
377
- chosen_logits_mean = chosen_logits.sum() / (
378
- full_target.shape[0] // 2 * input_chunk.shape[1] * weight.shape[0]
379
- )
380
- rejected_logits_mean = rejected_logits.sum() / (
381
- full_target.shape[0] // 2 * input_chunk.shape[1] * weight.shape[0]
382
- )
394
+ if not is_encoder_decoder:
395
+ chosen_nll_loss = (
396
+ chosen_nll_loss
397
+ / (full_target[: full_target.shape[0] // 2, 1:] != ignore_index).sum()
398
+ )
399
+ chosen_logits_mean = chosen_logits.sum() / (
400
+ full_target.shape[0] // 2 * (input_chunk.shape[1] - 1) * weight.shape[0]
401
+ )
402
+ rejected_logits_mean = rejected_logits.sum() / (
403
+ full_target.shape[0] // 2 * (input_chunk.shape[1] - 1) * weight.shape[0]
404
+ )
405
+ else:
406
+ chosen_nll_loss = (
407
+ chosen_nll_loss
408
+ / (full_target[: full_target.shape[0] // 2] != ignore_index).sum()
409
+ )
410
+ chosen_logits_mean = chosen_logits.sum() / (
411
+ full_target.shape[0] // 2 * input_chunk.shape[1] * weight.shape[0]
412
+ )
413
+ rejected_logits_mean = rejected_logits.sum() / (
414
+ full_target.shape[0] // 2 * input_chunk.shape[1] * weight.shape[0]
415
+ )
383
416
 
384
417
  if use_ref_model:
385
418
  with torch.no_grad():
386
- (
387
- ref_chosen_logps,
388
- ref_rejected_logps,
389
- ref_chosen_logits,
390
- ref_rejected_logits,
391
- ref_chosen_nll_loss,
392
- ) = LigerFusedLinearPreferenceBase.chunk_forward(
393
- ref_input_chunk,
394
- ref_weight,
395
- target_chunk,
396
- ref_bias,
397
- ignore_index=ignore_index,
398
- compute_nll_loss=False, # We don't need NLL loss for the reference model
419
+ (ref_chosen_logps, ref_rejected_logps, _, _, _) = (
420
+ LigerFusedLinearPreferenceBase.chunk_forward(
421
+ ref_input_chunk,
422
+ ref_weight,
423
+ target_chunk,
424
+ ref_bias,
425
+ ignore_index=ignore_index,
426
+ compute_nll_loss=False, # We don't need NLL loss for the reference model
427
+ is_encoder_decoder=is_encoder_decoder, # assume the ref model is the same family
428
+ )
399
429
  )
400
430
  loss_kwargs["ref_chosen_logps"] = ref_chosen_logps
401
431
  loss_kwargs["ref_rejected_logps"] = ref_rejected_logps
@@ -57,6 +57,7 @@ class LigerFusedLinearORPOFunction(LigerFusedLinearPreferenceBase):
57
57
  beta=0.1,
58
58
  compute_nll_loss=True,
59
59
  compiled=True,
60
+ is_encoder_decoder=False,
60
61
  ):
61
62
  return LigerFusedLinearPreferenceBase.forward(
62
63
  ctx=ctx,
@@ -69,12 +70,13 @@ class LigerFusedLinearORPOFunction(LigerFusedLinearPreferenceBase):
69
70
  beta=beta,
70
71
  compute_nll_loss=compute_nll_loss,
71
72
  compiled=compiled,
73
+ is_encoder_decoder=is_encoder_decoder,
72
74
  )
73
75
 
74
76
  @staticmethod
75
77
  def backward(ctx, *grad_output):
76
78
  grads = LigerFusedLinearPreferenceBase.backward(ctx, grad_output)[:4]
77
- return *grads, None, None, None, None
79
+ return *grads, None, None, None, None, None
78
80
 
79
81
 
80
82
  class LigerFusedLinearORPOLoss(torch.nn.Module):
@@ -88,17 +90,22 @@ class LigerFusedLinearORPOLoss(torch.nn.Module):
88
90
  beta: float = 0.1,
89
91
  compute_nll_loss: bool = True,
90
92
  compiled: bool = True,
93
+ is_encoder_decoder: bool = False,
91
94
  ):
92
95
  """
93
96
  Args:
94
97
  ignore_index (int): Index to ignore in the loss.
95
98
  beta (float): Weight for the odds ratio loss.
99
+ compute_nll_loss (bool): Whether to compute NLL loss.
100
+ compiled (bool): Whether to compile the loss function.
101
+ is_encoder_decoder (bool): Whether the model is an encoder-decoder model.
96
102
  """
97
103
  super().__init__()
98
104
  self.ignore_index = ignore_index
99
105
  self.beta = beta
100
106
  self.compute_nll_loss = compute_nll_loss
101
107
  self.compiled = compiled
108
+ self.is_encoder_decoder = is_encoder_decoder
102
109
 
103
110
  def forward(self, lin_weight, _input, target, bias=None):
104
111
  return LigerFusedLinearORPOFunction.apply(
@@ -110,4 +117,5 @@ class LigerFusedLinearORPOLoss(torch.nn.Module):
110
117
  self.beta,
111
118
  self.compute_nll_loss,
112
119
  self.compiled,
120
+ self.is_encoder_decoder,
113
121
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: liger_kernel_nightly
3
- Version: 0.5.2.dev20241217060137
3
+ Version: 0.5.2.dev20241218221959
4
4
  Summary: Efficient Triton kernels for LLM Training
5
5
  License: BSD 2-CLAUSE LICENSE
6
6
  Copyright 2024 LinkedIn Corporation
@@ -350,11 +350,13 @@ class HFAlignmentLoss:
350
350
  beta: float = 0.1,
351
351
  ignore_index: int = -100,
352
352
  use_ref_model: bool = False,
353
+ is_encoder_decoder: bool = False,
353
354
  ):
354
355
  self.alpha = alpha
355
356
  self.beta = beta
356
357
  self.ignore_index = ignore_index
357
358
  self.use_ref_model = use_ref_model
359
+ self.is_encoder_decoder = is_encoder_decoder
358
360
 
359
361
  @abstractmethod
360
362
  def alignment_loss(self):
@@ -372,7 +374,6 @@ class HFAlignmentLoss:
372
374
  logits: Logits of the model (unnormalized). Shape: (batch_size, sequence_length, vocab_size)
373
375
  labels: Labels for which to compute the log probabilities. Label tokens with a value of ignore_index are ignored. Shape: (batch_size, sequence_length)
374
376
  average_log_prob: If True, return the average log probability per (non-masked) token. Otherwise, return the sum of the log probabilities of the (non-masked) tokens.
375
- is_encoder_decoder: Whether the model is an encoder-decoder model.
376
377
  Returns:
377
378
  A tensor of shape (batch_size,) containing the average/sum log probabilities of the given labels under the given logits.
378
379
  """
@@ -381,6 +382,9 @@ class HFAlignmentLoss:
381
382
  "Logits (batch and sequence length dim) and labels must have the same shape."
382
383
  )
383
384
 
385
+ if not self.is_encoder_decoder:
386
+ logits = logits[..., :-1, :].contiguous()
387
+ labels = labels[..., 1:].contiguous()
384
388
  loss_mask = labels != self.ignore_index
385
389
 
386
390
  # dummy token; we'll ignore the losses on these tokens later
@@ -440,6 +444,9 @@ class HFAlignmentLoss:
440
444
  def cross_entropy_loss(logits, labels):
441
445
  # Flatten the tokens
442
446
  loss_fct = nn.CrossEntropyLoss(ignore_index=self.ignore_index)
447
+ if not self.is_encoder_decoder:
448
+ logits = logits[..., :-1, :].contiguous()
449
+ labels = labels[..., 1:].contiguous()
443
450
  logits = logits.view(-1, logits.shape[-1])
444
451
  labels = labels.view(-1)
445
452
  # Enable model parallelism
@@ -461,8 +468,12 @@ class HFAlignmentLoss:
461
468
  chosen_logps = all_logps[:len_chosen]
462
469
  rejected_logps = all_logps[len_chosen:]
463
470
 
464
- chosen_logits = all_logits[:len_chosen]
465
- rejected_logits = all_logits[len_chosen:]
471
+ if not self.is_encoder_decoder:
472
+ chosen_logits = all_logits[:len_chosen, :-1]
473
+ rejected_logits = all_logits[len_chosen:, :-1]
474
+ else:
475
+ chosen_logits = all_logits[:len_chosen]
476
+ rejected_logits = all_logits[len_chosen:]
466
477
 
467
478
  return (
468
479
  chosen_logps,