Половинная точность в PyTorch
Контекст autocast на время
блока выбирает тип для ряда
операций. На видеокарте часто
получают половинную точность
и экономят память.
На процессоре тип устройства в блоке задают как процессор. Умножим два дробных тензора внутри контекста и выведем тип результата:
import torch
with torch.autocast(device_type="cpu"):
left = torch.tensor([1.0])
right = torch.tensor([2.0])
product = left * right
print(product.dtype) # выведет torch.float32
На этой машине внутри блока
тип остаётся float32:
процессор не переключает
умножение на float16.
На карте картина может
быть другой.
Внутри контекста для
процессора сложите
тензоры 1.0 и 2.0
и выведите тип суммы.
Вне контекста умножьте
3.0 на 4.0,
затем повторите умножение
внутри блока для процессора
и выведите оба типа
результата через пробел.
Соберите ряд из 0.5
и 1.5, внутри
контекста для процессора
сложите его с единицей
и выведите тип итога.