Тип float16
Тип float16 (или torch.float16) представляет собой 16-битное число с плавающей точкой,
соответствующее стандарту IEEE 754. Этот тип данных занимает 2 байта памяти и состоит из 1 бита знака,
5 бит экспоненты и 10 бит мантиссы. float16 позволяет существенно экономить память
и ускорять вычисления на современных GPU, поддерживающих тензорные ядра.
Синтаксис
Для указания типа float16 при создании тензора используется параметр dtype:
torch.tensor(data, dtype=torch.float16)
Также можно преобразовать существующий тензор в тип float16 с помощью метода to:
tensor.to(torch.float16)
Пример
Давайте создадим тензор типа float16 из списка чисел:
import torch
t = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float16)
print(t)
print(t.dtype)
Результат выполнения кода:
tensor([1., 2., 3., 4., 5.], dtype=torch.float16)
torch.float16
Пример
Преобразуем существующий тензор в тип float16:
import torch
t = torch.tensor([1.5, 2.7, 3.2])
t16 = t.to(torch.float16)
print(t16)
print(t16.dtype)
Результат выполнения кода:
tensor([1.5000, 2.6992, 3.1992], dtype=torch.float16)
torch.float16
Пример
Использование типа float16 для экономии памяти при создании больших тензоров:
import torch
t = torch.randn(1000, 1000, dtype=torch.float16)
memory = t.element_size() * t.numel()
print(f"Memory: {memory} bytes")
print(t.shape)
print(t.dtype)
Результат выполнения кода:
Memory: 2000000 bytes
torch.Size([1000, 1000])
torch.float16
Пример
Сравнение точности вычислений между типами float32 и float16 на примере сложения:
import torch
a32 = torch.tensor([0.1], dtype=torch.float32)
b32 = torch.tensor([0.2], dtype=torch.float32)
res32 = a32 + b32
a16 = torch.tensor([0.1], dtype=torch.float16)
b16 = torch.tensor([0.2], dtype=torch.float16)
res16 = a16 + b16
print(f"float32 result: {res32.item()}")
print(f"float16 result: {res16.item()}")
print(f"Difference: {abs(res32.item() - res16.item())}")
Результат выполнения кода:
float32 result: 0.30000001192092896
float16 result: 0.300048828125
Difference: 4.881620407104492e-05
Смотрите также
-
тип
float32,
стандартный тип чисел с плавающей точкой в PyTorch -
тип
float64,
тип для вычислений с двойной точностью -
тип
bfloat16,
альтернативный 16-битный тип с большим диапазоном значений -
функцию
set_default_dtype,
которая устанавливает тип по умолчанию для новых тензоров