Repository navigation
Summary
Liger-Kernel v0.8.4 expands model and kernel coverage while improving correctness, performance, and deployment reliability across CUDA, Triton, CuTeDSL, and Ascend NPU backends. The release adds DeepSeek-V3 integration, a fused cross-entropy + TV distance kernel, configurable NVSHMEM support, and a shared LCK configuration API for FLSCE and MoE. It also includes PPO optimizations, improved numerical stability for JSD, LayerNorm, TVD, and cross-entropy, fixes for large tensor indexing and multidimensional group norm, and several model-specific correctness fixes. Packaging and release infrastructure are strengthened with PyPI Trusted Publishing and clearer CUDA/Python compatibility handling, alongside documentation updates and contributions from 12 new community members.
What's Changed
- Use a dedicated PyPI credential for LCK by @kolehma8 in #1473
- Publish LCK with PyPI Trusted Publishing by @kolehma8 in #1474
- Fix CUTEDSL FLCE functional wrapper arguments by @kolehma8 in #1475
- fix(npu): Ascend A3/950 UB tile cap and 950 workarounds for group norm, GRPO, fused MoE by @zheliuyu in #1464
- fix(npu): Replace Ascend A5 comments with 950 by @zheliuyu in #1484
- perf(ppo): skip dW/dB calculation when lm_head parameters are frozen by @djl11 in #1488
- refactor(kl_div): route fused-linear KL inner kernel through the dispatcher by @Yulong-Cauli in #1476
- Fix ignored-token masking in cosine distillation by @taking-lying-flat in #1478
- fix(triton): widen blocked RMSNorm row index by @arcusbuilds in #1482
- [Feature] Support apply_liger_kernel_to_deepseek_v3 by @Yulong-Cauli in #1424
- Add LCK CUDA-selectable NVSHMEM extras; retain CUDA 12.9 releases by @kolehma8 in #1492
- fix(kto): sum chosen/rejected rewards per sample when chunk_size > 1 by @kwy404 in #1495
- fix(triton): widen softmax/sparsemax row index to int64 by @znzryb in #1497
- Fix softcap padding in cross entropy by @taking-lying-flat in #1490
- fix(llama4): honour skip_logits in lce_forward by @yupengtang in #1445
- Load unsupported model types instead of raising KeyError in AutoLigerKernelForCausalLM by @nileshpatil6 in #1404
- Add fused CE + TV distance kernel by @kashif in #1384
- Preserve FP32 LayerNorm statistics for backward by @taking-lying-flat in #1498
- docs: sync README triton floor with setup.py and fix contributing install command by @kobihikri in #1301
- Add requires-python >=3.10 to pyproject.toml by @yashb98 in #1332
- docs: fix input/target shapes in DPO and ORPO forward docstrings by @Aryan95614 in #1406
- Fix AttnRes silently dropping blocks past 32 by @adityasingh2400 in #1344
- Fix TVD gradient at p == q by @truong-v in #1374
- Fix group norm backward for inputs with more than three dimensions by @truong-v in #1376
- Fix JSD underflow for low-probability vocabulary entries by @mdeff in #1397
- fix: request float32 logits from the fused JSD projection GEMM by @KyleMylonakisProtopia in #1433
- Cast tl.program_id to int64 in llama4_rope and qwen2vl_mrope by @adityasingh2400 in #1342
- Add shared LCK configure API for FLSCE and MoE by @kolehma8 in #1499
- Warn and skip native configuration on unsupported devices by @kolehma8 in #1502
New Contributors
- @djl11 made their first contribution in #1488
- @taking-lying-flat made their first contribution in #1478
- @arcusbuilds made their first contribution in #1482
- @kwy404 made their first contribution in #1495
- @znzryb made their first contribution in #1497
- @nileshpatil6 made their first contribution in #1404
- @kobihikri made their first contribution in #1301
- @yashb98 made their first contribution in #1332
- @Aryan95614 made their first contribution in #1406
- @adityasingh2400 made their first contribution in #1344
- @truong-v made their first contribution in #1374
- @mdeff made their first contribution in #1397
Full Changelog: v0.8.3...v0.8.4