トレーニング用の画像と音声の前処理

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

Dennis Lee

Data Engineer, Amazon

画像と音声の準備

画像アプリケーション

  • 物体認識のための画像分類
  • データシャーディング

 

街路上の車を映した物体検出アプリの画面。スマートフォンを手に持ち、街路の風景を撮影している。

音声アプリケーション

  • 音声コマンドの提供
  • 例:「音量を下げて」

 

視覚障害者が音声コマンドでスマートフォンを操作する音声補助技術の画像。

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

サンプル画像データセットの操作

print(dataset)
Dataset({
    features: ['img', 'label'],
    num_rows: 1000
})
print(dataset[0]["img"])
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=720x480>
PyTorch による効率的な AI モデルトレーニング

画像フォーマットの標準化

  • 画像フォーマット:幅・高さ
  • ピクセル値の標準化:平均・標準偏差
  • AutoImageProcessor がすべての前処理ステップを読み込む
from transformers import AutoImageProcessor
model = "microsoft/swin-tiny-patch4-window7-224"

image_processor = AutoImageProcessor.from_pretrained(model)
PyTorch による効率的な AI モデルトレーニング

画像フォーマットの標準化

dataset = dataset.map(
    lambda examples: {

"pixel_values": [
image_processor(image, return_tensors="pt").pixel_values for image in examples["img"] ]}, batched=True)
print(dataset)
Dataset({
    features: ['img', 'label', 'pixel_values'],
    num_rows: 1000
})
PyTorch による効率的な AI モデルトレーニング

サンプル音声データセットの操作

print(dataset)
DatasetDict({
    train: Dataset({

features: ['file', 'audio',
'label'], num_rows: 1000 }), ... })
PyTorch による効率的な AI モデルトレーニング

音声フォーマットの標準化

  • サンプル数の統一
  • サンプリングレート:1秒あたりのサンプル数
  • 最大継続時間:音声の秒数
sampling_rate = 16000  # 16 kHz

max_duration = 1 # 1 second
max_length = sampling_rate * max_duration
print(f"max_length = {max_length:,} samples")
max_length = 16,000 samples
PyTorch による効率的な AI モデルトレーニング

音声フォーマットの標準化

from transformers import AutoFeatureExtractor

model = "facebook/wav2vec2-base"
feature_extractor = AutoFeatureExtractor.from_pretrained(model)


def preprocess_function(split_data):
audio_arrays = [x["array"] for x in split_data["audio"]]
inputs = feature_extractor(audio_arrays,
sampling_rate=feature_extractor.sampling_rate, max_length=int(feature_extractor.sampling_rate * max_duration),
truncation=True) return inputs
PyTorch による効率的な AI モデルトレーニング

前処理関数の適用

  • preprocess_functiondataset にマッピング
  • remove_columnsaudiofile 列を削除
  • batcheddataset のサンプルをバッチ処理
dataset = dataset["train"].map(preprocess_function,

remove_columns=["audio", "file"],
batched=True)
PyTorch による効率的な AI モデルトレーニング

前処理関数の適用

print(dataset)
DatasetDict({
    train: Dataset({
        features: ['label', 'input_values'],
        num_rows: 1000
    })
PyTorch による効率的な AI モデルトレーニング

分散トレーニング用データの準備

  • DataLoader:トレーニング中にデータの読み込みと反復処理を準備
  • accelerator.prepare():利用可能なCPUまたはGPUにデータを配置
  • データシャーディング:各GPUがトレーニングデータの一部を処理(ピザのスライスを分けるようなイメージ)
  • accelerator.prepare() はPyTorchのDataLoader(torch.utils.data.DataLoader)と連携
from accelerate import Accelerator
from torch.utils.data import DataLoader

dataloader = DataLoader(dataset, batch_size=32, shuffle=True)


accelerator = Accelerator() dataloader = accelerator.prepare(dataloader)
PyTorch による効率的な AI モデルトレーニング

練習しましょう!

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

Preparing Video For Download...