zero3_offload模式下,DataLoader进程由于Fork + COW 机制导致大量内存消耗并OOM

Chiusa
#9,687 0 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
42/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Tranquilla
Stack tecnologico
python, pytorch

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

bug
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

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.