ÎncepețiÎncepe gratuit

Antrenament cu precizie mixtă folosind PyTorch de bază

Vei folosi tipuri de date în virgulă mobilă de precizie redusă pentru a accelera antrenamentul modelului tău de traducere a limbajului. De exemplu, tipurile de date în virgulă mobilă pe 16 biți (float16) ocupă doar jumătate din spațiul celor pe 32 de biți (float32). Acest lucru accelerează calculele pentru înmulțirile de matrice și convoluții. Reține că acest proces implică scalarea gradienților și conversia operațiilor la virgulă mobilă pe 16 biți.

Unele obiecte au fost preîncărcate: dataset, model, dataloader și optimizer.

Acest exercițiu face parte din cursul

Antrenament eficient al modelelor AI cu PyTorch

Vezi cursul

Instrucțiuni pentru exercițiu

  • Înainte de buclă, definește un scaler pentru gradienți folosind torch.amp.GradScaler.
  • În buclă, convertește operațiile la tipul de date în virgulă mobilă pe 16 biți folosind torch.autocast ca manager de context.
  • În buclă, scalează pierderea și apelează .backward() pentru a genera gradienți scalați.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
    scaler.____(loss).backward()
    scaler.step(optimizer)
    scaler.update()
    optimizer.zero_grad()
Editează și rulează codul