РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
701 of 769 menu

Функция autocast

Функция autocast применяется в виде контекстного менеджера для автоматического подбора типов данных (FP16 или FP32) в процессе выполнения операций на CUDA. Это позволяет ускорить обучение и снизить потребление видеопамяти без потери качества модели. Функция доступна в модуле torch.cuda.amp.

Синтаксис

torch.cuda.amp.autocast(enabled=True, dtype=torch.float16, cache_enabled=True)

Параметр enabled управляет включением автоматического смешанного обучения. Параметр dtype задаёт тип данных для пониженной точности. Параметр cache_enabled включает кеширование автокаста для ускорения.

Пример

Давайте выполним простые операции в контексте автокаста:

import torch # Создаём тензор на GPU t = torch.tensor([1., 2., 3., 4., 5.], device='cuda') # Включаем автокаст with torch.cuda.amp.autocast(): res = t * 2 print(res)

Результат выполнения кода:

tensor([2., 4., 6., 8., 10.], device='cuda:0')

Пример

Теперь выполним матричное умножение с автокастом:

import torch torch.manual_seed(0) t1 = torch.randn(3, 4, device='cuda') t2 = torch.randn(4, 5, device='cuda') with torch.cuda.amp.autocast(): res = torch.matmul(t1, t2) print(res.shape) print(res.dtype)

Результат выполнения кода:

torch.Size([3, 5]) torch.float16

Пример

Продемонстрируем отключение автокаста для отдельных участков кода:

import torch t = torch.tensor([1., 2., 3., 4., 5.], device='cuda') with torch.cuda.amp.autocast(): res1 = t * 2 # Отключаем автокаст для этого блока with torch.cuda.amp.autocast(enabled=False): res2 = t * 3 print(res1.dtype) print(res2.dtype)

Результат выполнения кода:

torch.float16 torch.float32

Смотрите также

  • функцию is_available,
    которая проверяет доступность CUDA
  • функцию device_count,
    которая возвращает количество доступных GPU
  • функцию current_device,
    которая возвращает индекс текущего устройства
  • функцию synchronize,
    которая синхронизирует все операции на устройстве
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить