6.1.8 · HinglishScaling & Efficient Architectures

Data parallelism and ZeRO optimization

3,034 words14 min readRead in English

6.1.8 · AI-ML › Scaling & Efficient Architectures

What is Data Parallelism?

How Standard Data Parallelism Works

Har GPU (rank ) par training loop:

  1. Forward pass: Local model copy se mini-batch process karo
  2. Backward pass: Local gradients compute karo
  3. AllReduce: Sabhi GPUs mein gradients synchronize karo:
  4. Update: Optimizer apply karo:
  5. Broadcast: Ab sabhi GPUs ke paas identical updated parameters hain

YE KAAM KYU KARTA HAI? Kyunki full dataset ka gradient, har subset ke gradients ka average hota hai (linearity of expectation). Har GPU true gradient ka ek noisy estimate compute karta hai, aur averaging se variance reduce hoti hai.

Memory Consumption Analysis

The ZeRO Optimization

ZeRO Stages: Progressive Partitioning

ZeRO-1: Optimizer State Partitioning

Kya hai: Har GPU sirf optimizer states store karta hai.

Kaise:

  1. Parameters ko groups mein partition karo:
  2. GPU sirf partition ke liye optimizer states store karta hai
  3. Gradients ke AllReduce ke baad, GPU sirf ko apne local optimizer states use karke update karta hai
  4. Sabhi GPUs ke paas full model ho iske liye updated parameters AllGather karo

Memory savings:

YE KYU KAAM KARTA HAI? Parameter ke optimizer states (momentum, variance) sirf gradient par depend karte hain, doosre parameters par nahi. Isliye GPU apna assigned partition independently update kar sakta hai.

ZeRO-2: Gradient Partitioning

Kya hai: Additionally gradients bhi partition karo—har GPU sirf gradients store karta hai.

Kaise:

  1. Backward pass ke dauran, har GPU full local gradients compute karta hai
  2. AllReduce ki jagah ReduceScatter use karo: GPU ko sirf partition ke liye averaged gradient milta hai
  3. GPU update karta hai, phir AllGather

Memory savings:

ReduceScatter KYU? Ye AllReduce + partition ek hi operation mein hai. Iske bajaye ki har GPU ko full averaged gradient mile (AllReduce), har GPU ko averaged gradient ka sirf apna assigned slice milta hai.

ZeRO-3: Parameter Partitioning

Kya hai: Ultimate step—model parameters bhi partition karo. Har GPU sirf parameters store karta hai.

Kaise:

  1. Forward pass: GPU ko layer ke parameters chahiye
    • Agar GPU par hai: directly use karo
    • Warna: owner GPU se AllGather karo, compute karo, phir discard karo
  2. Backward pass: Gradient computation ke liye jab zaroorat ho tab parameters phir AllGather karo
  3. Update: ZeRO-2 jaisa hi (ReduceScatter gradients, local update, AllGather updated params)

Memory savings:

Ye hai reduction! Sabhi model state components partition hain.

Advanced: ZeRO-Infinity and ZeRO-Offload

Memory hierarchy:

Strategy: GPU par sirf currently-computed layer ke parameters rakho. Current layer compute karte waqt next layer ke parameters CPU se prefetch karo.

Recall Ek 12-saal ke bache ko explain karo

Socho tum aur 7 dost identical LEGO castles bana rahe ho (wo hai tumhara neural network). Tumhe sab ko instruction manual chahiye (model parameters), aur tum alag-alag rooms bana rahe ho (alag data batches process kar rahe ho).

Standard tarika: Har kisi ke paas 1000-page manual ki apni full copy hai. Jab tum sab ek room finish karte ho, notes compare karte ho: "Mujhe lagta hai tower 10 blocks oonchi honi chahiye," "Mujhe 11 lagti hai," etc. Tum suggestions average karte ho aur sabhi apna manual update karte hain "10.5 blocks." Ye kaam karta hai, lekin tumne total 8,000 pages print ki hain!

ZeRO tarika:

  • ZeRO-1: Har dost changes karne ke liye sirf manual ka 1/8 (125 pages) rakhta hai, lekin sabhi ke paas abhi bhi ek full read-only copy hai.
  • ZeRO-2: Suggestions share karte waqt, har dost sirf apne 125-page section ke liye suggestions likhta hai.
  • ZeRO-3: Har dost ke paas sirf 125 pages hain, bas. Jab tower banana ho, tum chillate ho "Kiske paas tower pages hain?" aur woh dost sabko unhe parhta hai. Tum banate ho, phir woh instructions bhool jaate ho.

ZeRO-3 ka matlab hai tumne total sirf 1,000 pages print ki (8× savings!), lekin ab dosto se pages padhwaane mein time lagta hai. Yahi trade-off hai: kam paper (memory), zyada baat (communication).

Practical Considerations

When to Use Each ZeRO Stage

Communication Efficiency Requirements

ZeRO-3 ki efficiency depend karti hai:

jahan

75% efficiency ke liye (reasonable target):

Connections

  • Model Parallelism: ZeRO ka complement hai—model layers ko GPUs ke across split karta hai (replicate karne ki jagah)
  • Pipeline Parallelism: Model parallelism ka ek aur form; ZeRO ko pipelines ke saath combine kiya ja sakta hai
  • Mixed Precision Training: ZeRO inherently mixed precision use karta hai (fp16 compute, fp32 optimizer)
  • Gradient Accumulation: ZeRO ke saath combine karke larger effective batch sizes handle kar sakte hain
  • Activation Checkpointing: term reduce karta hai, jisse ZeRO-3 ki jagah ZeRO-2 feasible ban jaata hai
  • AllReduce and Collective Communication: Core primitives; ZeRO AllReduce ko ReduceScatter + AllGather se replace karta hai
  • Large Language Models Training: ZeRO GPT-3, LLaMA, PaLM scale models train karne ke liye essential hai
  • Memory-Efficient Optimizers: Adafactor, 8-bit Adam optimizer term reduce karte hain

#flashcards/ai-ml

Distributed training mein data parallelism kya hota hai? :: Ek strategy jisme har GPU ke paas model ki complete copy hoti hai, wo parallel mein alag data batches process karta hai, aur sabhi replicas ko identically update karne ke liye AllReduce se gradients synchronize karta hai.

Standard data parallelism mein mixed precision aur Adam optimizer ke saath memory consumption ka formula kya hai?
bytes jahan parameters ki number hai. Breakdown: 2Φ params (fp16) + 2Φ gradients + 12Φ optimizer states (fp32 momentum, variance, master weights).
ZeRO ka full form kya hai aur ye kya optimize karta hai?
Zero Redundancy Optimizer. Ye data parallelism mein memory redundancy eliminate karta hai—model states (optimizer states, gradients, parameters) ko replicate karne ki jagah GPUs ke across partition karta hai.
Teen ZeRO stages kya hain aur har ek kya partition karta hai?
ZeRO-1: sirf optimizer states partition karta hai. ZeRO-2: optimizer states + gradients partition karta hai. ZeRO-3: optimizer states + gradients + parameters partition karta hai.
N GPUs ke saath ZeRO-3 mein memory per GPU ka formula kya hai?
— sabhi model state components (params, gradients, optimizer states) N ways partition hote hain, N× memory reduction achieve hota hai.
ZeRO-2 AllReduce ki jagah kaun sa communication primitive use karta hai aur kyun?
ReduceScatter. Ye AllReduce aur partitioning ko ek hi operation mein combine karta hai—har GPU ko sirf apne assigned parameter partition ke liye averaged gradient milta hai, gradient memory bachata hai aur correctness maintain karta hai.

Standard data parallelism se compare karte hue ZeRO-3 use karne mein main trade-off kya hai? :: Memory vs. communication. ZeRO-3 N× memory savings achieve karta hai lekin 3× zyada communication volume chahiye (AllGather parameters do baar per step + ReduceScatter gradients ek baar, vs. standard DP mein ek AllReduce).

ZeRO-Infinity kya hai aur kab use hota hai?
ZeRO-3 ka ek extension jo partitioned model states ko CPU RAM aur NVMe SSD par offload karta hai, bandwidth-aware prefetching use karta hai. Tab use hota hai jab trillion-parameter models available GPUs ke saath ZeRO-3 mein bhi fit nahi hote.
ZeRO-3 ko efficient rehne ke liye high-bandwidth interconnects kyun chahiye?
Kyunki isse forward aur backward passes ke dauran parameters AllGather karne padte hain. 75% compute efficiency ke liye, network bandwidth satisfy karna chahiye . Low bandwidth se communication overhead dominant ho jaata hai.
ZeRO-3 available hone ke bawajood kab use NAHI karna chahiye?
Jab tumhara model standard DP ya ZeRO-2 ke saath GPU memory mein fit ho jaata ho. ZeRO-3 ka 3× communication overhead training slow kar deta hai agar memory bottleneck nahi hai. Minimum ZeRO stage use karo jo tumhara model fit kare.

Concept Map

each GPU holds

processes

forward-backward

produces

drives

causes

solved by

works by

eliminates

enables

Data Parallelism

Full model copy per GPU

Different data batches

AllReduce gradient sync

Averaged gradient

Optimizer update

Redundant memory 16Phi per GPU

ZeRO Zero Redundancy Optimizer

Shard states across GPUs

Train 100B models