การจัดการข้อมูลด้วย LightningDataModule

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

Sergiy Tkachuk

Director, GenAI Productivity

การเตรียมข้อมูลสำหรับการฝึกโมเดล

  • การเตรียมข้อมูลที่ไม่ดีทำให้เกิดปัญหาในการฝึก
    • การฝึกช้า
    • หยุดชะงักบ่อย
    • โมเดลไม่ลู่เข้า

การเตรียมข้อมูลสำหรับการฝึก

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

ทำไมต้องใช้ LightningDataModule?

$$

  • 📂 รวมการจัดการชุดข้อมูลไว้ในที่เดียว

$$

  • 📊 สร้างมาตรฐานขั้นตอนการเตรียมข้อมูล

$$

  • 🚀 ลดความซับซ้อนของขั้นตอนการฝึกและการประเมินผล
AI Models แบบ Scalable ด้วย PyTorch Lightning

การจัดการข้อมูลด้วย LightningDataModule

เมธอดหลัก:

  • prepare_data: ดาวน์โหลดและตั้งค่าข้อมูล
  • setup: แบ่งข้อมูลเป็นชุด train, validation และ test
class ImageDataModule(pl.LightningDataModule):
    def __init__(self, data_dir="./data", batch_size=32):
        super().__init__()
        ...

def prepare_data(self): datasets.MNIST(self.data_dir, train=True, download=True)
def setup(self, stage=None): dataset = datasets.MNIST(self.data_dir, train=True, transform=self.transform) self.train_data, self.val_data = random_split(dataset, [55000, 5000]) self.test_data = datasets.MNIST(self.data_dir, train=False, transform=self.transform)
AI Models แบบ Scalable ด้วย PyTorch Lightning

สร้าง train DataLoader

$$

  • จัดส่งข้อมูล batch สำหรับการฝึก
  • ช่วยเพิ่มประสิทธิภาพการใช้งาน GPU
  • รองรับการวนซ้ำบนชุดข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพ
def train_dataloader(self):
    return DataLoader(self.train_data, batch_size=self.batch_size, shuffle=True)
AI Models แบบ Scalable ด้วย PyTorch Lightning

สร้าง validation DataLoader

$$

  • จัดส่งข้อมูลสำหรับการตรวจสอบโมเดล
  • ช่วยติดตามความสามารถในการ generalize
  • รับประกันความสม่ำเสมอในแต่ละรอบการประเมินผล
def val_dataloader(self):
    return DataLoader(self.val_data, batch_size=self.batch_size)
AI Models แบบ Scalable ด้วย PyTorch Lightning

สร้าง test DataLoader

$$

  • จัดส่งข้อมูลสำหรับการประเมินโมเดลขั้นสุดท้ายหลังฝึกเสร็จสิ้น
  • จำลองการวัดประสิทธิภาพในสภาพแวดล้อมจริง
  • รับประกันการวัดผลที่ไม่มีอคติ
def test_dataloader(self):
    return DataLoader(self.test_data, batch_size=self.batch_size)
AI Models แบบ Scalable ด้วย PyTorch Lightning

เชื่อมต่อ DataModule กับ LightningModule

  • การออกแบบแบบ modular แยกโลจิกข้อมูลและโมเดลออกจากกัน

แผนภาพ PyTorch Lightning

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

เชื่อมต่อ DataModule กับ LightningModule

  • การออกแบบแบบ modular แยกโลจิกข้อมูลและโมเดลออกจากกัน
  • LightningDataModule ทำงานคู่กับ LightningModule
  • ขั้นตอนที่เป็นมาตรฐานช่วยเพิ่มความสามารถในการทำซ้ำ

แผนภาพ PyTorch Lightning พร้อม DataModule และ LightningModule

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

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

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

Preparing Video For Download...