We bought the whole GPU, so we're damn well going to use the whole GPU 🔥 Горячее
Исследователи из Hazy Research разработали высокопроизводительный мегаядро для тензорно-параллельного вывода Llama-70B на H100, которое агрессивно перекрывает вычисления, работу с памятью и коммуникацию между GPU. Это позволяет одновременно задействовать различные аппаратные ресурсы: тензорные ядра, модули для нетензорных операций, пропускную способность HBM и NVLink. В интеграции с движком Tokasaurus их решение превосходит SGLang на >22% по общей пропускной способности при обработке 65 536 промптов из ShareGPT.
Ключевая идея — использование интерпретатора инструкций, работающего на каждом SM, который позволяет гибко планировать выполнение разнородных операций. Это обеспечивает перекрытие на нескольких уровнях: внутри SM (память и вычисления), между SM (матричные умножения и нормирование) и между GPU (скрытие задержек связи за счёт специальных потоков). Особенно отмечается простота реализации сложных трансформаций данных между GPU прямо после attention-слоя, что трудно выразить стандартными средствами коммуникации.
Комментарии (94)
- Обсуждение эффективности использования GPU: использование всех блоков (NVDEC, NVJPG, RT и тензорные ядра) для декомпрессии весов и вычислений, аналогии с оптимизацией под консоли.
- Проблемы инструментов и драйверов: отставание языков, библиотек и драйверов от возможностей современного железа, сложности компиляторов для гетерогенных систем.
- Виртуализация и разделение ресурсов GPU: обсуждение MIG, MPS для многопользовательского использования, риски утечки данных и ограничения этих технологий.
- Сравнение с другими платформами: упоминание Apple Metal и открытости драйверов, потенциал использования GPU для аудиообработки и сигналов.
- Критика и ирония: сравнение стиля статьи с "Трансгрессия границ", комментарии о "коде, который не предназначен для поддержки" и неожиданно доступных оптимизациях в крупных лабораториях.
Комментарии (102)
- Критика сборки ПК с двумя видеокартами RTX 3090 для локального ИИ: проблемы с совместимостью компонентов, перегревом и выбором материнской платы.
- Обсуждение практичности локального запуска LLM: модели уступают облачным в качестве, но ценны для офлайн-среды, хотя требуют больших затрат на электроэнергию.
- Сравнение вариантов железа для ИИ: обсуждаются плюсы 3090 (NVLink, VRAM), альтернативы (RTX 4090 48GB, RTX 6000 ADA, AMD MI50) и их стоимость.
- Отмечаются технические проблемы со статьей: заблокировано копирование текста, ссылки ведут на ошибку 403.
- Делается вывод, что подобные сборки не новы и могут быть нецелесообразны для начинающих или для тренировки моделей.
How to Think About GPUs 🔥 Горячее
Что такое GPU
Современная ML-GPU (H100/B200) — это ~100–150 независимых вычислительных блоков (SM), каждый из которых содержит матричное ядро Tensor Core, векторные ALU (CUDA-ядра) и 256 КБ кэш SMEM. Все SM делят общий L2 и HBM3-память. SM разбит на 4 подблока; каждый подблок выполняет 32 SIMD-операции за такт. GPU-ядро менее мощное, чем TPU TensorCore, но их много, поэтому общая гибкость выше.
Память
H100: 80 ГБ HBM3, 3 ТБ/с. B200: 192 ГБ, 8 ТБ/с. L2 кэш 50 МБ (H100) / 128 МБ (B200). SMEM даёт 256 КБ на SM.
GPU vs TPU на уровне чипа
TPU: 1–2 больших MXU, жёсткая синхронизация, векторная часть слабее. GPU: 100+ мелких ядер, независимые SM, но общий L2 ограничивает масштаб. GPU лучше для разнородных задач, TPU — для чистых матмул.
Сеть внутри узла
Узел = 8 GPU + 2 CPU. GPU соединены NVLink/NVSwitch (900 ГБ/с между любыми двумя). CPU-GPU идут через PCIe 5.0 (64 ГБ/с). NVSwitch-кроссбар внутри узла = полносвязная сеть.
Сеть за пределами узла
InfiniBand HDR/NDR (до 400 Гб/с) или Ethernet RoCE. GPUDirect RDMA позволяет GPU читать/писать память соседнего узла без участия CPU.
Коллективные операции
Intra-node: NCCL использует NVLink; all-reduce 8×H100 за ~3 мкс.
Cross-node: кольцо IB + NVLink; latency ~10 мкс, bandwidth лимит IB.
Roofline-модель для LLM
- Data Parallelism: ограничен IB; эффективен при малых моделях.
- Tensor Parallelism: ограничен NVLink; лучше внутри узла.
- Expert/ Pipeline Parallelism: комбинируем; pipeline глубже → меньше bubble, но больше весов на каждом GPU.
- TLDR: держи параллелизм так, чтобы IB не стал bottleneck; используй NVLink для tensor-parallel, IB для data-parallel.
Итого
GPU — это масса мелких, независимых SM, связанных быстрым NVLink внутри узла и медленным IB между узлами. Для LLM выбирай параллелизм, который минимизирует IB-трафик и максимально использует NVLink.
Комментарии (107)
- Критика точности: документация местами неточна, особенно в определении «CUDA-core».
- Открытость и вендор-лок: ряд участников считают инвестиции в проприетарную экосистему NVIDIA рискованной ставкой.
- Ошибка в расчётах: Quiz 2 преувеличивает пропускную способность; реальные 3,2 ТБ/с ограничены портами NIC.
- Похвала и польза: серия всё же хорошо объясняет принципы параллелизма, применимые и к другим устройствам.
- Сравнение TPU и GPU: TPU проще масштабировать, но закрыт для продажи; GPU NVIDIA гибче, но сложнее в программировании.
- Дефицит официальных данных: NVIDIA не раскрывает полную архитектуру, поэтому полезные модели приходится собирать из сторонних источников.