Accelerator के साथ Local SGD
आपने अपने लैंग्वेज ट्रांसलेशन मॉडल के लिए मेमोरी उपयोग को बेहतर बनाने हेतु gradient accumulation और gradient checkpointing लागू कर ली है। ट्रेनिंग अभी भी थोड़ी धीमी है, इसलिए आप डिवाइसों के बीच कम्युनिकेशन की दक्षता बढ़ाने के लिए अपने ट्रेनिंग लूप में local SGD जोड़ने का निर्णय लेते हैं। local SGD के साथ ट्रेनिंग लूप बनाइए!
model, train_dataloader, और accelerator पहले से परिभाषित हैं, और LocalSGD इंपोर्ट किया जा चुका है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण
अभ्यास निर्देश
local_sgd_stepsसेट करें ताकि हर आठ स्टेप पर gradients सिंक्रोनाइज़ हों.- local SGD कॉन्टेक्स्ट मैनेजर को step करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Set up a context manager to synchronize gradients every eight steps
with LocalSGD(accelerator=accelerator, model=model, local_sgd_steps=____, enabled=True) as local_sgd:
for batch in train_dataloader:
with accelerator.accumulate(model):
inputs, targets = batch["input_ids"], batch["labels"]
outputs = model(inputs, labels=targets)
loss = outputs.loss
accelerator.backward(loss)
optimizer.step()
lr_scheduler.step()
optimizer.zero_grad()
# Step the local SGD context manager
local_sgd.____()