मशीन लर्निंग इंजीनियर इंटरव्यू सवाल

आपका training run CUDA out of memory error के साथ क्रैश हो जाता है। बताइए आप क्या क्या जांचेंगे।

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

मेमोरी खाने वालों को क्रम से देखिए: batch size और sequence length, backward pass के लिए रखी गई activations, optimizer state, और बदलते shapes से आया fragmentation। जल्दी वाले इलाज हैं छोटा batch और effective batch बचाने के लिए gradient accumulation, gradient checkpointing, bf16, और मेमोरी के लिहाज से किफायती optimizer। यह भी जांचिए कि आप ऐसे tensors तो जमा नहीं कर रहे जो अब भी computation graph ढो रहे हैं।

इंटरव्यूअर यह क्यों पूछते हैं

मॉडल ट्रेन करने वाले किसी भी इंसान के लिए यह रोज की हकीकत है, इसलिए इंटरव्यूअर ऐसे तरीके की तलाश में हैं जो व्यवस्थित हो, न कि बेतरतीब flags पलटना। जो ब्योरा अनुभव की पहचान कराता है वह है यह जानना कि आम तौर पर weights नहीं बल्कि activations हावी होती हैं, और वह क्लासिक बग कि हर step पर loss tensor किसी list में जोड़ते रहना, जो पूरा graph रोक लेता है और iterations के आर पार मेमोरी लीक करता है।

अपना जवाब कैसे स्ट्रक्चर करें

  • मेमोरी खाने वालों को मोटे तौर पर आकार के क्रम में गिनाएं।
  • क्षमता की समस्या को उस लीक से अलग करें जो steps के साथ बढ़ती है।
  • सस्ते इलाज दें: accumulation, checkpointing, bf16।
  • रुके हुए graph वाले बग का नाम लें और बताएं कि आप उसे कैसे पकड़ते हैं।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

सबसे पहले मैं देखता हूं कि वह तुरंत मरता है या कुछ सौ steps के बाद, क्योंकि ये अलग बग हैं। तुरंत मरना क्षमता की समस्या है, बढ़ता जाना लीक है। क्षमता के लिए मैं तोड़कर देखता हूं कि असल में क्या टिका हुआ है: weights, gradients, optimizer state (Adam के साथ वह दो अतिरिक्त copies हैं), और backward pass के लिए सहेजी गई activations। transformer पर आम तौर पर activations हावी होती हैं, और वे batch size गुणा sequence length के हिसाब से बढ़ती हैं, तो पहले वही knobs हैं। मैं batch घटाता हूं और effective batch वही रखने के लिए gradient accumulation इस्तेमाल करता हूं, जिसकी कीमत wall clock में है, और कुछ नहीं। फिर gradient checkpointing, जो backward के दौरान activations दोबारा निकालता है और मोटे तौर पर तीस प्रतिशत ज्यादा compute देकर बड़ी मेमोरी बचत लेता है। उस पर bf16 activation का आकार आधा कर देता है। अगर वह steps के साथ बढ़ता है तो कोई चीज graph पकड़े हुए है। क्लासिक है logging के लिए कच्चा loss tensor किसी list में जोड़ना, जो हर step का computation graph जिंदा रखता है, और इलाज है उस पर item बुलाना। मैं हर सौ steps पर allocated और reserved memory प्रिंट करके पुष्टि करता हूं, क्योंकि ऊपर चढ़ती साफ सीढ़ी ही पहचान है।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • allocator में allocated और reserved memory में क्या फर्क है?
  • बदलती लंबाई वाले inputs के साथ memory fragmentation कैसे होता है?
  • batch छोटा करने की जगह CPU offloading आप कब इस्तेमाल करेंगे?

मशीन लर्निंग इंजीनियर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं