検証とテストの導入

PyTorch Lightning によるスケーラブルな AI モデルの構築

Sergiy Tkachuk

Director, GenAI Productivity

なぜ検証とテストが必要なのか?

  • 検証
    • モデルの性能問題を早期に発見
    • 過学習と未学習を防止
  • テスト
    • 未知データでの性能評価

検証とテストの図

PyTorch Lightning によるスケーラブルな AI モデルの構築

検証を実装する

  • 各エポックでモデルの性能を評価
  • 指標を集約してより安定した評価を取得
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 に集約

  • train/val/test のデータ分割を一貫して管理

  • 検証指標を自動的にログ記録

  • 準備からレポートまで再現可能なパイプライン

DataModule、検証、テストの図

PyTorch Lightning によるスケーラブルな AI モデルの構築

練習しましょう!

PyTorch Lightning によるスケーラブルな AI モデルの構築

Preparing Video For Download...