Tensor Core
Специализированные вычислительные блоки GPU NVIDIA для ускоренных матричных умножений.
Что такое Tensor Core
Tensor Cores — специализированные аппаратные блоки внутри GPU NVIDIA, оптимизированные для выполнения операций вида D = A × B + C (умножение матриц с накоплением) за один такт. Введены в архитектуре Volta (V100) в 2017 году.
Обычные CUDA-ядра выполняют скалярные FP32-операции. Tensor Cores работают с матрицами 4×4 (или 8×8/16×16 в зависимости от поколения), выполняя умножение целой матрицы за один шаг — это ключевое ускорение для трансформеров, где 90%+ времени уходит на матричные умножения.
Поколения и поддерживаемые форматы
| Архитектура | GPU | Поколение TC | Форматы |
|---|---|---|---|
| Volta | V100 | 1st gen | FP16 |
| Turing | T4, RTX 20xx | 2nd gen | FP16, INT8, INT4 |
| Ampere | A100, RTX 30xx | 3rd gen | FP16, BF16, TF32, INT8 |
| Hopper | H100 | 4th gen | FP8, FP16, BF16, TF32 |
| Ada | RTX 40xx, L40S | 4th gen | FP8, FP16, BF16 |
Практическое значение
Один H100 содержит 528 Tensor Cores 4-го поколения. При вычислениях в BF16 они обеспечивают 1979 TFLOPS — против ~60 TFLOPS для FP32 на обычных ядрах. То есть Tensor Cores дают ~33× ускорение для матричных операций.
Чтобы использовать Tensor Cores эффективно, нужно:
- Использовать подходящие типы данных (BF16/FP16, не FP32)
- Выравнивать размерности матриц по 16 или 8 (в зависимости от формата)
- Включить
torch.backends.cuda.matmul.allow_tf32 = Trueдля TF32
import torch
# Включить TF32 для матричных умножений (рекомендуется для обучения)
torch.backends.cuda.matmul.allow_tf32 = True
torch.backends.cudnn.allow_tf32 = True
# Убедиться, что тензоры в BF16 (задействует Tensor Cores)
x = torch.randn(1024, 1024, dtype=torch.bfloat16, device='cuda')
Связанные термины
- CUDA — платформа, через которую используются Tensor Cores
- BF16 — основной формат для эффективного использования Tensor Cores
- FP8 — новый формат 4-го поколения Tensor Cores
- NVIDIA H100 — GPU с 4-м поколением Tensor Cores
Готовы запустить GPU-задачу?
Запустить GPU-сервер