НачатьНачать бесплатно

Обучение со смешанной точностью с использованием базового 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()
Редактировать и запускать код