ПочатиПочніть безкоштовно

Навчання зі змішаною точністю в базовому PyTorch

Ви використаєте типи даних з нижчою точністю з плаваючою комою, щоб пришвидшити навчання вашої моделі перекладу. Наприклад, 16-бітні типи з плаваючою комою (float16) займають лише половину пам’яті порівняно з 32-бітними (float32). Це прискорює обчислення множень матриць і згорток. Пригадайте, що для цього потрібно масштабувати градієнти та приводити операції до 16-бітного типу з плаваючою комою.

Деякі об’єкти вже завантажено: dataset, model, dataloader і optimizer.

Ця вправа є частиною курсу

Ефективне тренування моделей ШІ з PyTorch

Переглянути курс

Інструкції до вправи

  • Перед циклом визначте скейлер для градієнтів за допомогою torch.amp.GradScaler.
  • У циклі приведіть операції до 16-бітного типу з плаваючою комою, використовуючи torch.autocast як менеджер контексту.
  • У циклі масштабуйте втрати та викличте .backward(), щоб створити масштабовані градієнти.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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()
Редагувати та запускати код