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