Preelabora immagini e audio per l’addestramento

Efficient AI Model Training with PyTorch

Dennis Lee

Data Engineer, Amazon

Preparare immagini e audio

Applicazione immagini

  • Classificazione immagini per identificare oggetti
  • Suddivisione dei dati (sharding)

 

Immagine di un’app di object detection che mostra auto in strada. L’app gira su un telefono tenuto davanti alla scena.

Applicazione audio

  • Fornire comandi vocali
  • Esempio: "Abbassa il volume"

 

Immagine di tecnologia assistiva basata su audio per persone ipovedenti per usare comandi vocali sul telefono.

Efficient AI Model Training with PyTorch

Manipolare un dataset di immagini di esempio

print(dataset)
Dataset({
    features: ['img', 'label'],
    num_rows: 1000
})
print(dataset[0]["img"])
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=720x480>
Efficient AI Model Training with PyTorch

Standardizza il formato immagine

  • Formatta immagini: larghezza, altezza
  • Standardizza i pixel: media, deviazione standard
  • AutoImageProcessor carica tutti i passaggi di preprocessing
from transformers import AutoImageProcessor
model = "microsoft/swin-tiny-patch4-window7-224"

image_processor = AutoImageProcessor.from_pretrained(model)
Efficient AI Model Training with PyTorch

Standardizza il formato immagine

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
})
Efficient AI Model Training with PyTorch

Manipolare un dataset audio di esempio

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

features: ['file', 'audio',
'label'], num_rows: 1000 }), ... })
Efficient AI Model Training with PyTorch

Standardizza il formato audio

  • Standardizza il numero di campioni
  • Frequenza di campionamento: campioni al secondo
  • Durata max: secondi di audio
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
Efficient AI Model Training with PyTorch

Standardizza il formato audio

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
Efficient AI Model Training with PyTorch

Applica la funzione di preprocessing

  • Applica preprocess_function al dataset
  • remove_columns: rimuove le colonne audio e file
  • batched: elabora il dataset in batch
dataset = dataset["train"].map(preprocess_function,

remove_columns=["audio", "file"],
batched=True)
Efficient AI Model Training with PyTorch

Applica la funzione di preprocessing

print(dataset)
DatasetDict({
    train: Dataset({
        features: ['label', 'input_values'],
        num_rows: 1000
    })
Efficient AI Model Training with PyTorch

Prepara i dati per il training distribuito

  • DataLoader: prepara i dati per il caricamento e l’iterazione in training
  • accelerator.prepare(): mette i dati su CPU o GPU se disponibili
  • Data sharding: ogni GPU elabora un sottoinsieme, come dividere una pizza
  • accelerator.prepare() funziona con i DataLoader PyTorch (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)
Efficient AI Model Training with PyTorch

Ayo berlatih!

Efficient AI Model Training with PyTorch

Preparing Video For Download...