AMP के साथ Mixed Precision प्रशिक्षण
torch.cuda.amp.autocast(), GradScaler, FP16 बनाम BF16, मेमोरी बचत और गति में वृद्धि।
AMP के साथ Mixed Precision प्रशिक्षण, CoddyKit पर पाइथन के साथ एआई सीखें का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह पाइथन के साथ एआई सीखें सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। पाइथन के साथ एआई सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
मिश्रित परिशुद्धता क्या है
मिश्रित परिशुद्धता प्रशिक्षण में अधिकांश संचालन 32-बिट (FP32) के बजाय 16-बिट फ़्लोटिंग-पॉइंट (FP16) में चलते हैं। FP16 आधी मेमोरी का उपयोग करता है और आधुनिक GPU टेन्सर कोर पर तेज़ चलता है, जबकि स्थिरता के लिए कुछ संवेदनशील संचालन FP32 में ही रहते हैं।
लाभ
मिश्रित परिशुद्धता से आपको ये लाभ मिलते हैं:
- लगभग 2 गुना मेमोरी की बचत, जिससे बड़े बैच या मॉडल संभव होते हैं
- टेन्सर कोर पर तेज़ मैट्रिक्स गुणन
- सही ढंग से करने पर अंतिम मॉडल की सटीकता में बहुत कम या कोई कमी नहीं
FP16 अंडरफ़्लो की समस्या
FP16 की सीमा संकीर्ण होती है। छोटे ग्रेडिएंट मान अंडरफ़्लो होकर शून्य बन सकते हैं और सीखने की प्रक्रिया को बिना किसी सूचना के रोक सकते हैं। यही वह मुख्य चुनौती है जिसे मिश्रित परिशुद्धता को हल करना होता है और इसी कारण हम हर चीज़ को केवल FP16 में परिवर्तित नहीं कर सकते।
torch.cuda.amp
PyTorch का स्वचालित मिश्रित परिशुद्धता (AMP) दो टूल के साथ इन विवरणों को संभालता है: autocast प्रत्येक संचालन के लिए परिशुद्धता चुनता है और GradScaler ग्रेडिएंट अंडरफ़्लो को रोकता है।
import torch
from torch.cuda.amp import autocast, GradScalerautocast संदर्भ
फॉरवर्ड पास को autocast() में लपेटिए। इसके भीतर PyTorch प्रत्येक संचालन को अपने-आप सबसे सुरक्षित परिशुद्धता में चलाता है: मैट्रिक्स गुणन FP16 में और सॉफ्टमैक्स तथा हानि जैसे रिडक्शन FP32 में।
with autocast():
output = model(x)
loss = criterion(output, y)GradScaler का परिचय
GradScaler बैकप्रोपेगेशन से पहले हानि को बड़े स्केल गुणक से गुणा करके अंडरफ़्लो से लड़ता है। इससे छोटे ग्रेडिएंट FP16 की प्रतिनिधित्व योग्य सीमा में आ जाते हैं; ऑप्टिमाइज़र step से पहले यह स्केल हटा दिया जाता है।
scaler = GradScaler()हानि को स्केल करना
scaler.scale(loss).backward() हानि को बढ़ाकर स्केल करता है और फिर बैकप्रोपेगेशन चलाता है। परिणामस्वरूप ग्रेडिएंट भी स्केल हो जाते हैं, जिससे छोटे मान गायब होने से बचते हैं।
scaler.scale(loss).backward()scaler.step
scaler.step(optimizer) पहले ग्रेडिएंट को वास्तविक परिमाण में वापस अनस्केल करता है, फिर optimizer.step() कॉल करता है, लेकिन केवल तब जब कोई अनंत मान या NaNs दिखाई न दिए हों। यदि ग्रेडिएंट ओवरफ़्लो हो गए हों, तो step छोड़ दिया जाता है।
scaler.step(optimizer)scaler.update
scaler.update() अगले पुनरावृत्ति के लिए स्केल गुणक को समायोजित करता है: सफल step होने पर यह स्केल बढ़ाता है और ओवरफ़्लो के बाद घटाता है। यह अनुकूली स्केलिंग प्रशिक्षण को अपने-आप स्थिर रखती है।
scaler.update()पूरा AMP लूप
इन सभी हिस्सों को जोड़ने पर मिश्रित-परिशुद्धता प्रशिक्षण का एक पूरा step मिलता है।
scaler = GradScaler()
for x, y in loader:
x, y = x.cuda(), y.cuda()
optimizer.zero_grad()
with autocast():
out = model(x)
loss = criterion(out, y)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()व्यावहारिक सुझाव
इन बातों का ध्यान रखिए:
- स्केल की गई हानि पर ही
backward()कॉल कीजिए - autocast केवल फॉरवर्ड पास को लपेटता है, बैकवर्ड या ऑप्टिमाइज़र step को नहीं
- टेन्सर-कोर वाले GPU पर AMP सबसे अधिक लाभ देता है; पुराने हार्डवेयर पर लाभ कम होते हैं
त्वरित जाँच
AMP के बारे में अपने ज्ञान की जाँच कीजिए।
पुनरावलोकन
आपने AMP के साथ मिश्रित परिशुद्धता प्रशिक्षण सीखा:
- फॉरवर्ड पास में
autocast()प्रत्येक संचालन के लिए FP16 या FP32 चुनता है - GradScaler ग्रेडिएंट अंडरफ़्लो से बचने के लिए हानि को स्केल करता है
- चक्र है:
scaler.scale(loss).backward(),scaler.step(optimizer),scaler.update() - परिणाम: लगभग 2 गुना मेमोरी की बचत और तेज़ प्रशिक्षण
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 53
- पाठ
- 225
अक्सर पूछे जाने वाले प्रश्न
क्या “AMP के साथ Mixed Precision प्रशिक्षण” पाठ निःशुल्क है?
हाँ — पाइथन के साथ एआई सीखें अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “AMP के साथ Mixed Precision प्रशिक्षण” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। पाइथन के साथ एआई सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“AMP के साथ Mixed Precision प्रशिक्षण” में मैं क्या सीखूँगा?
torch.cuda.amp.autocast(), GradScaler, FP16 बनाम BF16, मेमोरी बचत और गति में वृद्धि। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ पाइथन के साथ एआई सीखें का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या पाइथन के साथ एआई सीखें शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर पाइथन के साथ एआई सीखें शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“AMP के साथ Mixed Precision प्रशिक्षण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस पाइथन के साथ एआई सीखें पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर पाइथन के साथ एआई सीखें पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- DataParallel के साथ मल्टी-GPU प्रशिक्षण
- DistributedDataParallel (DDP)
- AMP के साथ Mixed Precision प्रशिक्षण
- Hugging Face Accelerate के साथ कुशल प्रशिक्षण