CommencerCommencer gratuitement

Entraînement en précision mixte avec PyTorch de base

Vous allez utiliser des types de nombres flottants en faible précision pour accélérer l’entraînement de votre modèle de traduction automatique. Par exemple, les types flottants 16 bits (float16) ne font que la moitié de la taille de leurs équivalents 32 bits (float32). Cela accélère les multiplications de matrices et les convolutions. Rappelez-vous que cela implique de mettre à l’échelle les gradients et de caster les opérations en flottant 16 bits.

Certains objets ont été préchargés : dataset, model, dataloader et optimizer.

Cet exercice fait partie du cours

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

Afficher le cours

Instructions

  • Avant la boucle, définissez un scaler pour les gradients en utilisant une classe de la bibliothèque torch.
  • Dans la boucle, castez les opérations en type flottant 16 bits à l’aide d’un gestionnaire de contexte de la bibliothèque torch.
  • Dans la boucle, mettez à l’échelle la perte et appelez .backward() pour créer des gradients mis à l’échelle.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Define a scaler for the gradients
scaler = torch.amp.____()
for batch in train_dataloader:
    inputs, targets = batch["input_ids"], batch["labels"]
    # Casts operations to mixed precision
    with torch.____(device_type="cpu", dtype=torch.____):
        outputs = model(inputs, labels=targets)
        loss = outputs.loss
    # Compute scaled gradients
    ____.____(loss).____()
    scaler.step(optimizer)
    scaler.update()
    optimizer.zero_grad()
Modifier et exécuter le code