แนะนำ PyTorch Lightning

AI Models แบบ Scalable ด้วย PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

PyTorch & PyTorch Lightning

$$

PyTorch แบบมาตรฐาน:

  • ต้องทำงานเองหลายขั้นตอน
  • เขียน training loop อย่างละเอียด
  • จัดการ GPU/TPU, logging และ checkpointing เอง

coder.gif

AI Models แบบ Scalable ด้วย PyTorch Lightning

PyTorch & PyTorch Lightning

PyTorch Lightning:

  • สร้างบน PyTorch
  • อัตโนมัติ:
    • Training
    • Checkpointing
    • Logging
  • ลด boilerplate
  • เพิ่ม scalability และ reproducibility

โลโก้ PyTorch Lightning

AI Models แบบ Scalable ด้วย PyTorch Lightning

ภาพรวมของ PyTorch Lightning

  • ตัวอย่าง: อีคอมเมิร์ซระดับโลกที่ปรับปรุงกระบวนการทำงาน
    • พัฒนาโมเดล visual search
    • ทำ training loop อัตโนมัติ
    • ทดสอบซ้ำได้รวดเร็วด้วย boilerplate น้อย

$$

  • ส่วนประกอบหลัก: LightningModule และ Trainer
    from lightning.pytorch import LightningModule
    from lightning.pytorch import Trainer
    
AI Models แบบ Scalable ด้วย PyTorch Lightning

โครงสร้างของ Lightning

ส่วนประกอบหลัก:

  • LightningModule: logic หลักของโมเดล

หลอดไฟแทน logic

AI Models แบบ Scalable ด้วย PyTorch Lightning

โครงสร้างของ Lightning

ส่วนประกอบหลัก:

  • LightningModule: logic หลักของโมเดล
  • Lightning Trainer: ควบคุมการ training

หลอดไฟแทน logic และเฟืองแทนการทำงาน

AI Models แบบ Scalable ด้วย PyTorch Lightning

โครงสร้างของ Lightning

ส่วนประกอบหลัก:

  • LightningModule: logic หลักของโมเดล
  • Lightning Trainer: ควบคุมการ training
  • DataModule: จัดการ data pipeline
  • Callbacks: ทำงานอัตโนมัติเมื่อเกิด event
  • Logger: ติดตาม experiment

หลอดไฟแทน logic และเฟืองแทนการทำงาน

AI Models แบบ Scalable ด้วย PyTorch Lightning

LightningModule ในทางปฏิบัติ

จุดสำคัญ:

  • __init__: กำหนดสถาปัตยกรรมของโมเดล
  • forward(): ส่งข้อมูลผ่านโมเดล
  • training_step(): กำหนดขั้นตอนการ training
  • มี custom hooks ให้ใช้งาน
import lightning.pytorch as pl

class LightClassifier(pl.LightningModule):
    def __init__(self, model, criterion, optimizer):

super().__init__() self.model = model self.criterion = criterion self.optimizer = optimizer
def forward(self, x): return self.model(x)
def training_step(self, batch, batch_idx): x, y = batch logits = self(x) loss = self.criterion(logits, y) return loss
AI Models แบบ Scalable ด้วย PyTorch Lightning

Lightning Trainer ในทางปฏิบัติ

จุดสำคัญ:

  • จัดการ training loop
  • รองรับ distributed training
  • จัดการ callbacks และ logging
  • ใช้ทรัพยากรได้อย่างมีประสิทธิภาพ
model = LightClassifier()


trainer = Trainer(max_epochs=10, accelerator="gpu", devices=1) trainer.fit(model, train_dataloader, val_dataloader)
AI Models แบบ Scalable ด้วย PyTorch Lightning

แนะนำชุดข้อมูล Afro-MNIST

ชุดข้อมูลสไตล์ MNIST แบบสังเคราะห์สำหรับอักษร 4 ระบบที่ใช้ในภาษากลุ่ม Afro-Asiatic และ Niger-Congo ได้แก่ Ge'ez (Ethiopic), Vai, Osmanya และ N'Ko

dataset-cover.png

1 Wu, Daniel J., Andrew C. Yang, and Vinay U. Prabhu. "Afro-MNIST: Synthetic generation of MNIST-style datasets for low-resource languages." arXiv preprint arXiv:2009.13509 (2020).
AI Models แบบ Scalable ด้วย PyTorch Lightning

สรุป PyTorch Lightning

แผนภาพ PyTorch Lightning

AI Models แบบ Scalable ด้วย PyTorch Lightning

มาฝึกกันเถอะ!

AI Models แบบ Scalable ด้วย PyTorch Lightning

Preparing Video For Download...