Accelerator के साथ मॉडल ट्रेन करें

PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

Dennis Lee

Data Engineer, Amazon

Trainer और Accelerator

Accelerator और Trainer के लिए उपयोग-सहजता बनाम कस्टमाइज़ेशन क्षमता का चार्ट।

PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

कस्टम ट्रेनिंग लूप्स

  • Trainer: कस्टम ट्रेनिंग लूप नहीं
  • जेनरेटिव AI के कुछ उन्नत कार्यों में दो नेटवर्क लगते हैं

जनरेटिव एडवर्सेरियल नेटवर्क की छवि।

1 https://www.aitude.com/basics-of-generative-adversarial-network-model/
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

Trainer और Accelerator

Accelerator और Trainer के लिए उपयोग-सहजता बनाम कस्टमाइज़ेशन क्षमता का चार्ट।

PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

बेसिक ट्रेनिंग लूप में बदलाव

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch inputs = inputs.to(device) targets = targets.to(device)
outputs = model(inputs)
loss = outputs.loss
loss.backward()
optimizer.step() scheduler.step()

 

  • ग्रेडिएंट शून्य करें
  • डेटा को चुने हुए डिवाइस पर भेजें: .to(device)
  • फॉरवर्ड पास करें
  • क्रॉस-एंट्रॉपी लॉस गणना करें
  • बैकवर्ड पास में ग्रेडिएंट्स निकालें
  • मॉडल पैरामीटर और लर्निंग रेट अपडेट करें
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

Accelerator ऑब्जेक्ट बनाएँ

  • Accelerator वितरित प्रशिक्षण के लिए एक इंटरफ़ेस देता है
from accelerate import Accelerator
accelerator = Accelerator(
    device_placement=True
)
  • device_placement (bool, डिफ़ॉल्ट True): डिवाइस प्लेसमेंट स्वतः सँभाले
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

मॉडल और ऑप्टिमाइज़र परिभाषित करें

  • प्री-ट्रेंड मॉडल लोड करें
from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained(
    "distilbert-base-cased", return_dict=True)
  • Adam से मॉडल पैरामीटर ऑप्टिमाइज़ करें
from torch.optim import Adam

optimizer = Adam(params=model.parameters(), lr=2e-5)
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

शेड्यूलर परिभाषित करें

from transformers import get_linear_schedule_with_warmup

lr_scheduler = get_linear_schedule_with_warmup(
      optimizer=optimizer,

num_warmup_steps=num_warmup_steps,
num_training_steps=num_training_steps)
  • optimizer (obj): PyTorch ऑप्टिमाइज़र, जैसे Adam
  • num_warmup_steps (int): lr को रैखिक रूप से बढ़ाने के स्टेप; सेट करें int(num_training_steps * 0.1)
  • num_training_steps (int): कुल प्रशिक्षण स्टेप; सेट करें len(train_dataloader) * num_epochs
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

कुशल प्रशिक्षण के लिए मॉडल तैयार करें

  • prepare मेथड डिवाइस प्लेसमेंट सँभालता है
model, optimizer, dataloader, lr_scheduler = \
    accelerator.prepare(model,

optimizer,
dataloader,
lr_scheduler)
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

Accelerator के साथ ट्रेनिंग लूप बनाना

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch inputs = inputs.to(device) targets = targets.to(device)
  • ग्रेडिएंट शून्य करें
  • पहले ही डेटा डिवाइस पर भेजा गया
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

Accelerator के साथ ट्रेनिंग लूप बनाना

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch
  • ग्रेडिएंट शून्य करें
  • पहले ही डेटा डिवाइस पर भेजा गया
  • मैन्युअल डेटा मूव वाली पंक्तियाँ हटाएँ
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

Accelerator के साथ ट्रेनिंग लूप बनाना

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch
outputs = model(inputs)
loss = outputs.loss loss.backward()
  • ग्रेडिएंट शून्य करें
  • पहले ही डेटा डिवाइस पर भेजा गया
  • मैन्युअल डेटा मूव वाली पंक्तियाँ हटाएँ
  • फॉरवर्ड पास करें
  • क्रॉस-एंट्रॉपी लॉस और ग्रेडिएंट्स गणना करें
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

Accelerator के साथ ट्रेनिंग लूप बनाना

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch
outputs = model(inputs) loss = outputs.loss
accelerator.backward(loss)
optimizer.step() scheduler.step()
  • ग्रेडिएंट शून्य करें
  • पहले ही डेटा डिवाइस पर भेजा गया
  • मैन्युअल डेटा मूव वाली पंक्तियाँ हटाएँ
  • फॉरवर्ड पास करें
  • क्रॉस-एंट्रॉपी लॉस और ग्रेडिएंट्स गणना करें
  • loss.backward को accelerator से बदलें
  • मॉडल पैरामीटर और लर्निंग रेट अपडेट करें
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

परिवर्तनों का सारांश

Accelerator से पहले

  • डेटा को डिवाइस पर मैन्युअल भेजना पड़ता था
    • inputs.to(device)
    • targets.to(device)
  • loss.backward() से ग्रेडिएंट निकालते थे

Accelerator के बाद

  • स्वतः डिवाइस प्लेसमेंट और डेटा पैरेललिज़्म
    • accelerator.prepare(model)
    • accelerator.prepare(dataloader)
  • accelerator.backward(loss) से ग्रेडिएंट सिंक संभले
  • कस्टमाइज़ेबल लूप
  • उपयोगकर्ता-अनुकूल, हार्डवेयर-अज्ञेय, स्केलेबल, मेंटेन करने में सरल
PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

¡Vamos a practicar!

PyTorch के साथ कुशल AI मॉडल प्रशिक्षण

Preparing Video For Download...