Adam प्रति parameter दो moving averages बनाए रखता है: पहला moment (gradients का mean — momentum) और दूसरा moment (squared gradients का mean — adaptive scaling)। Update नियम: parameter -= lr × m̂ / (√v̂ + ε), जहाँ m̂ और v̂ bias-corrected moments हैं। लगातार बड़े gradients वाले parameters को छोटे updates मिलते हैं (वे पहले से ही अच्छी तरह calibrated हैं)। छोटे, noisy gradients वाले parameters को बड़े updates मिलते हैं (उन्हें अधिक आक्रामक movement की आवश्यकता है)।
मूल Adam ने moments की गणना करने से पहले gradient में weight decay जोड़कर लागू किया, जिससे decay adaptive learning rate द्वारा scale हो जाता था — जो आप नहीं चाहते। AdamW (Loshchilov & Hutter, 2017) weight decay को gradient update से decouple करता है, इसे सीधे parameters पर लागू करता है। यह एक मामूली fix लगता है लेकिन generalization में महत्वपूर्ण सुधार करता है। सभी आधुनिक LLM training AdamW का उपयोग करते हैं।
Adam प्रति parameter दो अतिरिक्त values (पहले और दूसरे moments) store करता है, optimizer state के लिए आवश्यक memory को तीन गुना करता है: एक 70B मॉडल को weights के लिए ~140 GB (FP16) plus Adam states के लिए ~280 GB (FP32) की आवश्यकता होती है, कुल ~420 GB। यही कारण है कि optimizer state sharding (DeepSpeed ZeRO, FSDP) बड़े मॉडल training के लिए आवश्यक है। कुछ नए optimizers (Adafactor, CAME, Lion) stability की कुछ कीमत पर इस memory overhead को कम करते हैं।