zero3_offload模式下,DataLoader进程由于Fork + COW 机制导致大量内存消耗并OOM
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
- 42/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
Direzione di ricerca
Inizia individuando la costruzione di DataLoader e il percorso di configurazione di zero3_offload, quindi riproduci il comportamento segnalato con Python 3.12, DeepSpeed ZeRO-3, torchrun su 8 GPUs e il modello Qwen3.6-27B. Confronta il comportamento fork predefinito con persistent workers e lo spawn mode proposto. Il lavoro è completato quando la riproduzione non causa più la crescita della memoria e l’OOM segnalati, con una copertura per la configurazione interessata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Checklist / 检查清单
- I have searched existing issues, and this is a new bug report. / 我已经搜索过现有的 issues,确认这是一个新的 bug report。
Bug Description / Bug 描述
zero3_offload模式下,DataLoader默认使用fork模式创建进程,此时父进程已offloadd到内存大量数据,由于Fork + COW 机制的原因,在epoch完成后重启DataLoader的时机会消耗大量内并导致OOM。
此issue也提到类似问题 #9649 。
解决办法:
1、开启dataloader_persistent_workers选项能够有一定程度缓解,但还是有大量额外内占用
2、使用spawn模式创建DataLoader进程规避Fork + COW带来的问题(还未验证)
How to Reproduce / 如何复现
ms-swift 版本: 4.3.2
Python: 3.12
触发条件: DeepSpeed ZeRO-3 + torchrun (8 GPU)
模型: Qwen3.6-27B
Additional Information / 补充信息
No response
- Lingua principale
- Python
- Stelle
- 16k
- Fork
- 1.8k
- Merge medio
- 2g 3h
- PR unite (30g)
- 70
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di modelscope/ms-swift
-
[Docs] Align Ascend NPU naming with the existing "Huawei Ascend NPU" wordingForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
modelscope/ms-swift#10477 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] `get_seed` consumes a draw from the shared RandomState even when decision augmentation is disabled, changing the train/val split and dataset shuffleForse già presa @ryznren l’ha presa 4 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
modelscope/ms-swift#10466 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] `swift --help` raises KeyError instead of showing CLI helpForse già presa @haahy l’ha presa 30 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
modelscope/ms-swift#10287 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] find_free_port() reports the last busy port as free when its scan window is exhaustedForse già presa @Lesereingrape l’ha presa 34 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
modelscope/ms-swift#10263 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
modelscope/ms-swift#10095 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di modelscope/ms-swift
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
aws/sagemaker-python-sdk#6554 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
huggingface/diffusers#15170 ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] LLM conflict check ignores MNEMOSYNE_LLM_MAX_TOKENS, so reasoning models return empty repliesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
mnemosyne-oss/mnemosyne#1325 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement meshtastic-2.8
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
pskillen/meshflow-api#459 ·