modelscope / modelscope/ms-swift

Megatron Train Qwen3.5-VL-35B-A3B Error

Open
#8,296 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Python
Stars
15.7k
Forks
1.7k
Avg merge
1d 16h
Merged PRs (30d)
136

Description

Checklist / 检查清单
  • I have searched existing issues, and this is a new bug report. / 我已经搜索过现有的 issues,确认这是一个新的 bug report。
Bug Description / Bug 描述

transformer_engine==2.12.0
transformer_engine_cu12==2.12.0
transformer_engine_torch==2.12.0
transformers==5.2.0
transformers-stream-generator==0.0.5
megatron-core==0.15.3
flash_attn @ https://github.com/Dao-AILab/flash-attention/releases/download/v2.8.3/flash_attn-2.8.3+cu12torch2.8cxx11abiTRUE-cp312-cp312-linux_x86_64.whl#sha256=f25da18657a87fc83dc1bfb8b7751b82246e9db355510226b674fd437c34b5fb

Editable Git install with no remote (ms_swift==4.1.0.dev0)

-e /opt/tiger/ms-swift
torchaudio==2.8.0+cu129
torchvision==0.23.0+cu129

基于上述 Python 环境训练 By Megatron 报错信息:
[rank2]: Traceback (most recent call last):
[rank2]: File "/opt/tiger/ms-swift/swift/cli/_megatron/sft.py", line 7, in
[rank2]: megatron_sft_main()
[rank2]: File "/opt/tiger/ms-swift/swift/megatron/pipelines/train/sft.py", line 88, in megatron_sft_main
[rank2]: return MegatronSft(args).main()
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/opt/tiger/ms-swift/swift/pipelines/base.py", line 52, in main
[rank2]: result = self.run()
[rank2]: ^^^^^^^^^^
[rank2]: File "/opt/tiger/ms-swift/swift/megatron/pipelines/train/sft.py", line 65, in run
[rank2]: trainer = self.prepare_trainer()
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/opt/tiger/ms-swift/swift/megatron/pipelines/train/sft.py", line 33, in prepare_trainer
[rank2]: return MegatronTrainer(self.args, self.template)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/opt/tiger/ms-swift/swift/megatron/trainers/base.py", line 95, in init
[rank2]: warmup_jit_function(self.config, args)
[rank2]: File "/opt/tiger/ms-swift/swift/megatron/utils/megatron_lm_utils.py", line 681, in warmup_jit_function
[rank2]: output = bias_swiglu(input_tensor, bias)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_dynamo/eval_frame.py", line 749, in compile_wrapper
[rank2]: raise e.remove_dynamo_frames() from None # see TORCHDYNAMO_VERBOSE=1
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_dynamo/output_graph.py", line 1871, in _call_user_compiler
[rank2]: raise BackendCompilerFailed(
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_dynamo/output_graph.py", line 1846, in call_user_compiler
[rank2]: compiled_fn = compiler_fn(gm, example_inputs)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/dynamo/repro/after_dynamo.py", line 150, in call
[rank2]: compiled_gm = compiler_fn(gm, example_inputs)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/init.py", line 2380, in call
[rank2]: return compile_fx(model
, inputs
, config_patches=self.config)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_inductor/compile_fx.py", line 2418, in compile_fx
[rank2]: return aot_autograd(
[rank2]: ^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_dynamo/backends/common.py", line 109, in call
[rank2]: cg = aot_module_simplified(gm, example_inputs, **self.kwargs)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_functorch/aot_autograd.py", line 1199, in aot_module_simplified
[rank2]: compiled_fn = AOTAutogradCache.load(
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_functorch/_aot_autograd/autograd_cache.py", line 1140, in load
[rank2]: compiled_fn = dispatch_and_compile()
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_functorch/aot_autograd.py", line 1184, in dispatch_and_compile
[rank2]: compiled_fn, _ = create_aot_dispatcher_function(
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_functorch/aot_autograd.py", line 576, in create_aot_dispatcher_function
[rank2]: return _create_aot_dispatcher_function(
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_functorch/aot_autograd.py", line 836, in _create_aot_dispatcher_function
[rank2]: compiled_fn, fw_metadata = compiler_fn(
[rank2]: ^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_functorch/_aot_autograd/jit_compile_runtime_wrappers.py", line 1605, in aot_dispatch_autograd
[rank2]: compiled_fw_func = aot_config.fw_compiler(fw_module, adjusted_flat_args)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_functorch/aot_autograd.py", line 483, in call
[rank2]: return self.compiler_fn(gm, example_inputs)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_inductor/compile_fx.py", line 2250, in fw_compiler_base
[rank2]: return inner_compile(
[rank2]: ^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_inductor/compile_fx.py", line 745, in compile_fx_inner
[rank2]: return wrap_compiler_debug(_compile_fx_inner, compiler_name="inductor")(
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_dynamo/repro/after_aot.py", line 124, in debug_wrapper
[rank2]: inner_compiled_fn = compiler_fn(gm, example_inputs)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_inductor/compile_fx.py", line 860, in _compile_fx_inner
[rank2]: (key_info, cache_info) = FxGraphCache.prepare_key(
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_inductor/codecache.py", line 1474, in prepare_key
[rank2]: key, debug_lines = compiled_fx_graph_hash(
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_inductor/codecache.py", line 960, in compiled_fx_graph_hash
[rank2]: details = FxGraphHashDetails(gm, example_inputs, fx_kwargs, inputs_to_check)
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_inductor/codecache.py", line 896, in init
[rank2]: self.system_info = CacheBase.get_system()
[rank2]: ^^^^^^^^^^^^^^^^^^^^^^
[rank2]: File "/usr/local/lib/python3.12/site-packages/torch/_inductor/codecache.py", line 205, in get_system
[rank2]: from triton.compiler.compiler import triton_key
[rank2]: torch._dynamo.exc.BackendCompilerFailed: backend='inductor' raised:
[rank2]: ImportError: cannot import name 'triton_key' from 'triton.compiler.compiler' (/usr/local/lib/python3.12/site-packages/triton/compiler/compiler.py)

[rank2]: Set TORCHDYNAMO_VERBOSE=1 for the internal stack trace (please do this especially if you're reporting a bug to PyTorch). For even more developer context, set TORCH_LOGS="+dynamo"

How to Reproduce / 如何复现

训练脚本如下: PYTORCH_CUDA_ALLOC_CONF='expandable_segments:True'
NPROC_PER_NODE=4
CUDA_VISIBLE_DEVICES=0,1,2,3
megatron sft
--model $model_path
--save_safetensors true
--merge_lora true
--dataset 'AI-ModelScope/LongAlpaca-12k'
--load_from_cache_file true
--add_non_thinking_prefix true
--split_dataset_ratio 0.01
--tuner_type lora
--lora_rank 8
--lora_alpha 32
--target_modules all-linear
--expert_model_parallel_size 4
--moe_permute_fusion true
--moe_grouped_gemm true
--moe_shared_expert_overlap true
--moe_aux_loss_coeff 1e-6
--micro_batch_size 1
--global_batch_size 16
--recompute_granularity full
--recompute_method uniform
--recompute_num_layers 1
--num_train_epochs 1
--group_by_length true
--finetune true
--freeze_llm false
--freeze_vit true
--freeze_aligner true
--cross_entropy_loss_fusion true
--lr 1e-4
--lr_warmup_fraction 0.05
--min_lr 1e-5
--output_dir $output_path
--eval_steps 200
--save_steps 200
--max_length 8192
--dataloader_num_workers 8
--dataset_num_proc 8
--no_save_optim true
--no_save_rng true
--sequence_parallel true
--attention_backend flash
--padding_free false

Additional Information / 补充信息

辛苦帮忙看下

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at swift/megatron/utils/megatron_lm_utils.py in warmup_jit_function, where the traceback reaches bias_swiglu, and review the listed PyTorch, Triton, and Megatron-related versions. Reproduce with the provided four-GPU megatron sft command and verify that the warmup completes without the triton_key import error and training proceeds.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, pytorch
Domain
backend, machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.