Skip to content

[New feature] mopd x-token - #1

Open
doctorMcy wants to merge 1 commit into
mainfrom
x-token
Open

doctorMcy wants to merge 1 commit into
mainfrom
x-token

Conversation

@doctorMcy

Copy link
Copy Markdown
Owner

PR type

  • Bug Fix
  • New Feature
  • Document Updates
  • More Models or Datasets Support

PR information

Write the detail information belongs to this PR.

Experiment results

Paste your experiment result here(if needed).

loss指标采集:
[2026-07-07 11:57:45][INFO:twinkle] [Step 2/10] {'loss': '16.9013', 'accuracy': '0.67', 'correct_tokens': 2800, 'total_tokens': 4209, 'learning rate(param group 1)': '1.000000e-05', 'learning rate(param group 2)': '1.000000e-05', 'iters': 0, 'total time elapse': '3.2 minutes', 'speed': '0.00 iters/s'}
[2026-07-07 11:58:21][INFO:twinkle] [Step 4/10] {'loss': '16.8169', 'grad_norm': '0.001015', 'accuracy': '0.66', 'correct_tokens': 1545, 'total_tokens': 2345, 'learning rate(param group 1)': '9.779754e-06', 'learning rate(param group 2)': '9.779754e-06', 'iters': 1, 'total time elapse': '229 seconds', 'speed': '0.01 iters/s'}
[2026-07-07 11:59:09][INFO:twinkle] [Step 6/10] {'loss': '16.8721', 'grad_norm': '0.001015', 'accuracy': '0.68', 'correct_tokens': 2013, 'total_tokens': 2971, 'learning rate(param group 1)': '9.779754e-06', 'learning rate(param group 2)': '9.779754e-06', 'iters': 1, 'total time elapse': '277 seconds', 'speed': '0.01 iters/s'}
[2026-07-07 11:59:52][INFO:twinkle] [Step 8/10] {'loss': '16.8050', 'grad_norm': '0.001244', 'accuracy': '0.72', 'correct_tokens': 1882, 'total_tokens': 2632, 'learning rate(param group 1)': '9.140576e-06', 'learning rate(param group 2)': '9.140576e-06', 'iters': 2, 'total time elapse': '320 seconds', 'speed': '0.01 iters/s'}

单步loss计算debug日志:
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: student_logits shape: torch.Size([8, 482, 151936])
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: teacher_probs shape: torch.Size([8, 482, 151669])
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: labels shape: torch.Size([8, 482])
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: shift_student_logits shape: torch.Size([8, 481, 151936])
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: shift_teacher_probs shape: torch.Size([8, 481, 151669])
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: shift_labels shape: torch.Size([8, 481])
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: loss_mask sum: 1857.0, total: 3848
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: student_logits range: [-25.8750, 35.2500]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: student_probs range: [0.000000, 1.000000]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: student_probs sum per position: [1.0000, 1.0000]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: teacher_probs range: [0.000000, 1.000000]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: teacher_probs sum per position: [0.141023, 1.000000]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: teacher_nonzero_count per position: [1, 512]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: temperature: 0.8
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: projected_student_probs range: [0.000000, 1.000000]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: projected_student_probs sum per position: [0.999996, 1.000001]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: log_projected_student range: [-18.4207, 0.0000]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: kl_contrib range: [-0.366220, 18.420681]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: kl_div range (per position): [0.0380, 18.4207]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: kl_div mean (unmasked): 17.6663
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: masked_kl range: [0.0000, 18.4207]
�[36m(TransformersModel( pid=501187)�[0m [CTKD DEBUG] _compute_pkl_loss: final loss: 16.861702

doctorMcy pushed a commit that referenced this pull request Aug 24, 2026
…1d/seed bugs (modelscope#249)

* feat: integrate Liger Kernel with fused-CE for NPU + fix conv1d/seed bugs

Liger Kernel integration:
- Add liger_builtin() bundle with _prefer_cann_on_npu() that swaps Liger
  Triton-on-Ascend kernels for CANN equivalents (faster on NPU)
- Add LigerFusedLinearCrossEntropyLoss + TransformersFusedCEPatch that
  skips lm_head GEMM and [B,T,V] logits materialisation
- Wire fused-CE in fsdp2.py/sp_fsdp_dense.py/ep_fsdp2_lora_qwen3_5_moe.py
  (task='fused_lm_ce' + set_loss + pre-loop barrier)
- Add --enable-liger / --no-enable-fused-ce CLI flags

Bug fixes:
- causal_conv1d.py: fix npu_causal_conv1d_fn axis confusion when
  conv_dim == seq_len (e.g. 35B-A3B with max_length=8192); add
  x.shape[1] != D check to disambiguate [B,D,T] vs [B,T,D] layouts
- framework.py: fix torch.manual_seed gated behind is_gpu_available()
  on NPU-only hosts; move to unconditional + independent NPU branch

Tests:
- test_qwen35_fla_bwd_precision.py: FLA on/off backward precision
- test_liger_builtin.py, test_liger_fused_linear_ce.py, test_fused_ce_patch.py

Benchmark (35B-A3B, 4x910B3, max_len=8192):
- fused-CE saves 12-20 GB/NPU (20-30%) across all 3 scripts
- Enables EP batch=8 (was OOM without fused-CE)
- SP path 1.6x speedup from skipping logits SP all-gather

* fix: address gemini code review feedback

- Replace unsafe try/except ImportError with Torch.is_npu_available() /
  Torch.is_gpu_available() in fsdp2.py, sp_fsdp_dense.py, ep_fsdp2_lora_qwen3_5_moe.py
  pre-loop barrier (AttributeError not caught by except ImportError)
- Gather bias via full_tensor() in LigerFusedLinearCrossEntropyLoss fallback
  (bias could be FSDP-sharded DTensor)
- Convert _no_split_modules from set to list for HF Transformers compatibility
- Gemini #1 (conv1d missing else) is a false positive: else branch exists at line 1114

* style: apply yapf formatting to sequence_parallel

---------

Co-authored-by: ys2025-AI <ys2025-AI@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant