学習用テキストの前処理

PyTorch による効率的な AI モデルトレーニング

Dennis Lee

Data Engineer, Amazon

テキスト変換:モデル学習のためのデータ準備

  • 文書のテキスト要約
  • 言い換え識別
  • MRPCデータセット:ラベル付きの文ペア

確認が必要な書類の高い山。

PyTorch による効率的な AI モデルトレーニング

データセットの構造

from datasets import load_dataset
dataset = load_dataset("glue", "mrpc")
print(dataset)
DatasetDict({
    train: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
    validation: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
    test: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
})
PyTorch による効率的な AI モデルトレーニング

テキストデータセットの操作

  • 訓練・検証・テストの分割を含むネストされた辞書
  • 訓練データへのアクセス例:
dataset["train"]
  • 分割内のデータセット固有の特徴量にアクセスする
  • MRPCデータセットの特徴量:sentence1sentence2label
dataset["train"]["sentence1"]
  • 事前学習済みトークナイザーを読み込む
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-cased")
PyTorch による効率的な AI モデルトレーニング

エンコード関数の定義

  • データセットのサンプルをエンコードする関数を定義する
  • トークナイザーを呼び出し、学習サンプルからsentence1sentence2を取得する
  • truncation:最大長(512トークン)を超える入力を切り捨てる
  • padding:短いシーケンスをゼロでパディングし、入力長を統一する
def encode(example):

return tokenizer( example["sentence1"], example["sentence2"],
truncation=True,
padding="max_length", )
PyTorch による効率的な AI モデルトレーニング

列名のフォーマット

  • mapを使用して、訓練データの各サンプルにencodeを適用する
train_dataset = dataset["train"].map(encode, batched=True)
  • labellabelsにリネームする
train_dataset = train_dataset.map(
    lambda examples: {"labels": examples["label"]}, batched=True
)
  • Hugging Faceドキュメントでモデルの列要件を確認する
PyTorch による効率的な AI モデルトレーニング

チェックポイントの保存と読み込み

  • 利用可能なGPUにデータセットを配置する
dataloader = DataLoader(train_dataset, batch_size=32, shuffle=True)
dataloader = accelerator.prepare(dataloader)
  • DataLoader内の任意のPyTorchデータセット(torch.utils.data.Dataset)に対応
  • 前処理済みテキストの状態をチェックポイントとして保存する
checkpoint_dir = Path("preprocess_checkpoint")
accelerator.save_state(checkpoint_dir)
  • 学習を再開する際にチェックポイントを読み込む
accelerator.load_state(checkpoint_dir)
PyTorch による効率的な AI モデルトレーニング

では、練習しましょう!

PyTorch による効率的な AI モデルトレーニング

Preparing Video For Download...