Тысячи простых ядер, сгруппированных в мультипроцессоры, и иерархия памяти, в которую упирается почти любое ускорение.
Ключевые тезисы
- Потоки исполняются варпами по 32: расхождение ветвлений внутри варпа сериализует выполнение.
- Разделяемая память (shared memory) — быстрая on-chip SRAM внутри SM, общая для всех потоков блока; в ней держат тайлы .
- Tensor Cores считают матричное умножение блоками в пониженной точности — ради них и нужен FP16/BF16.
Подробный разбор
| Уровень | Кому доступна | Для чего | |
|---|---|---|---|
| Регистры | одному потоку | ~1 такт | локальные переменные |
| Разделяемая память (shared) | всем потокам блока | единицы тактов | тайлы , обмен внутри блока |
| L2-кеш | всему кристаллу | десятки тактов | повторные обращения |
| Глобальная память (HBM) | всем и хосту | сотни тактов | веса, , данные |
Разделяемая память — это программируемый кеш внутри потокового мультипроцессора (SM). Классический приём умножения : загрузить тайл A и тайл B в shared memory один раз, а затем переиспользовать их всеми потоками блока, вместо того чтобы каждый поток ходил в глобальную память за теми же числами.
Почти любая оптимизация ядра на — это борьба за то, чтобы данные читались из глобальной памяти один раз. Отсюда и тайлинг, и слияние операций (fusion), и FlashAttention, который считает , не материализуя .
- Потоки исполняются варпами по 32 в модели SIMT: одна инструкция на всю группу.
- Если внутри варпа ветвление пошло по-разному, ветки выполняются последовательно — расхождение стоит времени.
- Occupancy — доля активных варпов на SM; она ограничена регистрами и разделяемой памятью на блок.
- Tensor Cores выполняют операцию «умножить блок на блок и накопить» в FP16/BF16/FP8 — ради них и включают смешанную точность.
Высокая occupancy сама по себе не цель. Часто быстрее ядро с меньшей загрузкой, но с хорошим переиспользованием данных в разделяемой памяти.
Видеолекции
Записи университетских курсов, где эта тема звучит. Ссылка открывает запись с той секунды, где о ней говорят, — искать по трёхчасовой лекции не нужно.
Связанные темы
Обучение на GPU
AI Accelerators85%
Ускорители: GPU, TPU, NPU · Вычислительная инфраструктураЧем специализированный чип отличается от универсальной видеокарты и когда эта разница окупается.
GPU in PyTorch85%
GPU в PyTorch · Вычислительная инфраструктураКак проверить доступность ускорителя, разложить тензоры по устройствам и понять, куда ушла видеопамять.
Distributed Training85%
Распределённое обучение · Вычислительная инфраструктураКак разложить обучение на несколько GPU: копиями модели по данным, шардами состояния или разрезанием самой модели.
Collective Operations85%
Коллективные операции · Вычислительная инфраструктураAllReduce, Broadcast, AllGather — примитивы, которыми процессы обучения обмениваются тензорами.
Cluster Networking85%
Сеть кластера · Вычислительная инфраструктураТопология соединений и скорость обмена, которые определяют, доедет ли обучение до линейного ускорения.
Training Throughput85%
Ускорение обучения · Вычислительная инфраструктураЧто делать, когда число GPU фиксировано: снизить точность, накопить градиент, пересчитать активации, разгрузить загрузчик данных.
Mixed Precision85%
Смешанная точность · Оптимизация обученияОбучение в fp16 или bf16 при накоплении в fp32: двукратная экономия памяти и заметное ускорение.
Batch size85%
Размер батча · Оптимизация обученияЧисло объектов на одно обновление весов: влияет на скорость, память и качество обобщения.
Профильная компетенция для роли: MLOps-инженер.
Усиливает профиль: ML Engineer, NLP-инженер, LLM-инженер, CV-инженер, Исследователь, Инженер речи.
Спрашивают на собеседовании: YADRO — Инфраструктура обучения.
Разбор архитектуры, где эта тема — один из кирпичей: требования, развилки, цифры и режимы отказа.
Глава «Вычислительная инфраструктура» последний раз правилась . Нашли ошибку — напишите.