Packing+多模态数据使用deepspeed微调Qwen3.6-35B-A3B发生数据预处理死锁

Chiusa
#9,701 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python

Direzione di ricerca

Riprodurre con il comando swift sft fornito, concentrandosi su --packing true con il dataset multimodale. Ispezionare swift/dataset/preprocessor/core.py intorno alle righe 325 e 353, quindi confrontare le esecuzioni con il packing disabilitato, i dati multimodali rimossi o num_proc impostato su None. Il lavoro è completato quando il preprocessing e il training non entrano più in deadlock con la configurazione segnalata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

NPU910B Qwen3.6-35B-A3B sft死锁,似乎和Packing/多模态数据强相关。

在8*910B上测试
使用的镜像是swift官方提供的swift4.3.0-910B镜像 自己加上了deepspeed的zero3补丁:https://github.com/modelscope/ms-swift/issues/9657

会在这里死锁:

Image Image

键盘中断后调用栈

Image
How to Reproduce / 如何复现

我用的训练命令:
swift sft
--model /tmp/Qwen3.6-35B-A3B
--dataset /tmp/final.jsonl \ #这是我自己制作的一个多模态数据集,Agent数据每个个包含1-3张图片
--split_dataset_ratio 0.5
--torch_dtype bfloat16
--tuner_type lora
--target_modules all-linear
--freeze_vit true
--freeze_aligner true
--lora_rank 8
--lora_alpha 32
--num_train_epochs 16
--packing true \ #这个会导致死锁 CPU占用率为0
--per_device_train_batch_size 1
--per_device_eval_batch_size 1
--gradient_accumulation_steps 2
--learning_rate 5e-5
--max_length 40960
--save_steps 100
--eval_steps 100
--save_total_limit 2
--logging_steps 2
--deepspeed zero3_offload
--sequence_parallel_size 8
--padding_free true
--attn_impl flash_attn
--output_dir /tmp/result

具体卡在预处理的这里
https://github.com/modelscope/ms-swift/blob/v4.3.0/swift/dataset/preprocessor/core.py#L353
看不到是卡在哪个数据上了
https://github.com/modelscope/ms-swift/blob/v4.3.0/swift/dataset/preprocessor/core.py#L325
如果把这里的num_proc设置为None,就不会死锁在数据预处理阶段,但是会死锁在Train 0/100

如果关闭packing或者不使用多模态数据,就一切正常

Additional Information / 补充信息

No response

Lingua principale
Python
Stelle
16k
Fork
1.8k
Merge medio
2g 3h
PR unite (30g)
74

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di modelscope/ms-swift

Tutte le issue di modelscope/ms-swift

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.