引入验证与测试

使用 PyTorch Lightning 构建可扩展 AI 模型

Sergiy Tkachuk

Director, GenAI Productivity

为何引入验证与测试?

  • 验证
    • 及早发现模型性能问题
    • 防止过拟合与欠拟合
  • 测试
    • 评估在未见数据上的表现

验证与测试示意图

使用 PyTorch Lightning 构建可扩展 AI 模型

实现验证

  • 在每个 epoch 评估模型表现
  • 聚合指标以获得更稳定视图
def validation_step(self, batch, batch_idx):
  x, y = batch
  preds = self(x)
  loss = F.cross_entropy(preds, y)
  self.log('val_loss', loss)


def validation_epoch_end(self, outputs): avg_loss = torch.stack([x['loss'] for x in outputs]).mean() self.log('avg_val_loss', avg_loss)
使用 PyTorch Lightning 构建可扩展 AI 模型

实现测试

  • 评估模型在未见数据上的最终表现
  • 衡量真实环境有效性
  • 为部署提供指标
def test_step(self, batch, batch_idx):
  x, y = batch
  y_hat = self(x)
  loss = F.cross_entropy(y_hat, y)
  self.log('test_loss', loss)


def test_epoch_end(self, outputs): avg_loss = torch.stack([x['loss'] for x in outputs]).mean() self.log('avg_test_loss', avg_loss)
使用 PyTorch Lightning 构建可扩展 AI 模型

使用 Torchmetrics 评估

$$

  • 监控准确率等指标
  • 轻松集成到 Lightning 工作流
  • 初始化准确率
  • 在每个验证步骤计算准确率
from torchmetrics import Accuracy

class BaseModel(pl.LightningModule):
    def __init__(self):
        super().__init__()
        self.accuracy = Accuracy()

def validation_step(self, batch, batch_idx): x, y = batch preds = self(x) acc = self.accuracy(preds, y) self.log('val_acc', acc)
使用 PyTorch Lightning 构建可扩展 AI 模型

连接 DataModule、验证与测试

  • 将数据逻辑集中在 DataModule 中

  • 统一的训练/验证/测试划分

  • 自动记录验证指标

  • 从准备到报告的可复现实验流程

DataModule、验证和测试示意图

使用 PyTorch Lightning 构建可扩展 AI 模型

Ayo berlatih!

使用 PyTorch Lightning 构建可扩展 AI 模型

Preparing Video For Download...