Prétraiter le texte pour l’entraînement

Entraîner efficacement des modèles d’IA avec PyTorch

Dennis Lee

Data Engineer, Amazon

Transformation de texte : préparer les données pour la maîtrise du modèle

  • Résumer des textes de documents
  • Identifier des paraphrases
  • Dataset MRPC : paires de phrases avec labels

Grande pile de documents à examiner.

Entraîner efficacement des modèles d’IA avec PyTorch

Structure du dataset

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'],
    })
})
Entraîner efficacement des modèles d’IA avec PyTorch

Manipuler le dataset texte

  • Dictionnaire imbriqué des splits train/validation/test
  • Exemple d’accès au split train :
dataset["train"]
  • Accéder aux features spécifiques d’un split
  • Features MRPC : sentence1, sentence2, label
dataset["train"]["sentence1"]
  • Charger un tokenizer pré-entraîné
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-cased")
Entraîner efficacement des modèles d’IA avec PyTorch

Définir une fonction d’encodage

  • Définir une fonction pour encoder les exemples du dataset
  • Appeler le tokenizer ; extraire sentence1 et sentence2 de l’exemple d’entraînement
  • truncation : tronquer si plus long que la longueur max (512 tokens)
  • padding : compléter avec des zéros pour des longueurs identiques
def encode(example):

return tokenizer( example["sentence1"], example["sentence2"],
truncation=True,
padding="max_length", )
Entraîner efficacement des modèles d’IA avec PyTorch

Formater les noms de colonnes

  • Appliquer encode à chaque exemple du split train avec map
train_dataset = dataset["train"].map(encode, batched=True)
  • Renommer label en labels
train_dataset = train_dataset.map(
    lambda examples: {"labels": examples["label"]}, batched=True
)
  • Vérifier dans la doc Hugging Face les colonnes requises par le modèle
Entraîner efficacement des modèles d’IA avec PyTorch

Enregistrer et charger des checkpoints

  • Placer le dataset sur les GPU disponibles
dataloader = DataLoader(train_dataset, batch_size=32, shuffle=True)
dataloader = accelerator.prepare(dataloader)
  • Fonctionne avec tout dataset PyTorch (torch.utils.data.Dataset) dans un DataLoader
  • Sauvegarder l’état du texte prétraité (checkpoint)
checkpoint_dir = Path("preprocess_checkpoint")
accelerator.save_state(checkpoint_dir)
  • Charger le checkpoint pour reprendre l’entraînement
accelerator.load_state(checkpoint_dir)
Entraîner efficacement des modèles d’IA avec PyTorch

Passons à la pratique !

Entraîner efficacement des modèles d’IA avec PyTorch

Preparing Video For Download...