Comments 7
Спасибо за обзор. Хотелось бы задать несколько вопросов:
CPU должен быть топовым: минимум 3.5 ГГц, лучше 4+ ГГц. Процессоры ниже 3 ГГц сильно снижают эффективность даже RTX 4090, так как не успевают готовить данные для GPU.
Вы сами ранее писали, что данные нужно готовить заранее. И если подготовка оных требует мощностей цпу, то готовить их надо, наверное, не на гпу-сервере, а на соответствующей машине с нужными цпу. Или нет? Вообще, подготовка и упаковка данных для обучения- это как-то по умолчанию маст хэв, даже говорить об этом странно.
Убедитесь, что GPU и NVMe-диски подключены к разным PCI-E портам, чтобы не делить пропускную способность
Несколько неправильно написано: нет никаких "PCI-E портов", есть ограниченное процессором и чипсетом количество линий PCI-E; пропускная способность на конкретное устройство складывается из пропускной способности этих линий, задействованных при подключении этого устройства- понятно, что х16 будет быстрее чем х1. И при проектировании гпу-машины мы должны решить, как оптимальнее эти линии потратить- нужно подключить ссд, много гпу, и возможно смарт сетевуху. Что бы подольше не упираться в построение гпу-кластера и распределенными между машинами процессами, хочется поставить побольше гпу в одну. При этом проблема выглядит так: или N карт с подключением х16 или 2N карт с подключением х8 или 4N карт с подключением х4. В общем, наверное, это зависит от задач машинного обучения, которые предполагается гонять на этой машине. А вот о конкретных решениях хотелось бы услышать от вас- расскажите пожалуйста, насколько (и на каких задачах) подключение х4 хуже х8 и х16, какая практика у вас?
Видим, что вы уже с практикой ) Напишем про нашу архитектуру. Наши хосты под GPU адаптеры, в настоящий момент стандартные x86 2U хосты Dell R7625 с EPYC 9374F. Так, к примеру, сейчас у нас карты L40S работают парой в таких хостах, соот-но это x16. Больше их просто не поставить ввиду ограничений конкретного сервера. В новом поколении EPYC 9005, мы уже заказываем хосты Dell R7625, под 6 карт L4 в том числе, которые также работают по x16. Диски при этом подключать планируется в RAID массив на уровне контроллера H975i , PCI-e 5,0 соответсвенно. Для GPU меньше x16 не используется у нас. Такая архитектура, обусловлена, в том числе экономикой конечной и уровнем задач для конечного клиента.
Спасибо за обзор ,как раз себе привез 40 L40S - буду ставить и тестировать такой подход
Именно так поступают и в крупных облаках: сначала данные лежат в общем хранилище, а перед обучением разворачиваются на быстрых локальных дисках инстанса.
Спорно. В больших облаках используется High Performance Storage (HPS), типа Weka/DDN/VAST. Вот примеры Nebius, CoreWeave, Crusoe, Together.AI и прочие. Схема обычно выглядит иначе - есть холодное большое хранилище (S3), потом данные оттуда загружаются в HPS и данные из HPS напрямую загружаются в VRAM через GDS. https://www.weka.io/learn/glossary/gpu/what-is-gpudirect-storage/ Локальные NVMe в серверах есть, но в качестве Scratch патриции.
Но как только вы решаете масштабировать задачу на 2–4 сервера (например, запустить Data Parallel для ускорения обучения), между ними начинает генерироваться интенсивный трафик: градиенты, веса, иногда активации.
Не очень понятно откуда веса/активации между GPU или узлами, если у вас Date Parallelism: "Data Parallelism is the simplest form of parallelism in which each GPU holds the entire copy of the model weights and each GPU (rank) receives a different subset of the data. This type of parallelism has the lowest level of communication since just the gradients needs to be summed up (all reduce) between each GPU." При Tensor Parallelism или Pipeline - понятно.
Даже если вы работаете всего с одной видеокартой, ваш GPU может простаивать не из-за нее самой, а потому что CPU и оперативная память не успевают его «кормить»
RAM медленнее VRAM практически всегда, особенно по сравнению с HBM (с точки зрения полосы). CPU тоже. Но чтобы она не становилась узким местом и есть GDS ("GPUDirect® Storage (GDS) enables a direct data path for direct memory access (DMA) transfers between GPU memory and storage, which avoids a bounce buffer through the CPU. Using this direct path can relieve system bandwidth bottlenecks and decrease the latency and utilization load on the CPU"), GPUDirect RDMA (GPUDirect RDMA is a technology introduced in Kepler-class GPUs and CUDA 5.0 that enables a direct path for data exchange between the GPU and a third-party peer device using standard features of PCI Express. Examples of third-party devices are: network interfaces, video acquisition devices, storage adapters.), NCCL (NCCL employs a sophisticated and hierarchical approach to intra-node communication, prioritizing the lowest latency and highest bandwidth paths available between GPUs residing on the same physical machine (see Figure 1). This strategy heavily leverages NVIDIA’s GPUDirect Peer-to-Peer (P2P) technology, which enables GPUs to directly access each other’s memory without staging through CPU system memory). Короче, в общем CPU/RAM не должны находиться в Data Plane (через них должны ходить данные) - они нужна для управления потоками.
Если CPU слабый (менее 16 ядер или частота ниже 3.5–4 ГГц), он не справляется с этой нагрузкой.
CPU должен быть топовым: минимум 3.5 ГГц, лучше 4+ ГГц. Процессоры ниже 3 ГГц сильно снижают эффективность даже RTX 4090, так как не успевают готовить данные для GPU
Про частоту тоже странно. Почему тогда NVIDIA ставит в DGX B200 процессоры с частотой 2.1GHz (2 x Intel Xeon 8570P)? Мне кажется потому, что, как я писал выше, CPU не должно быть в Data Plane, а остальное очень хорошо паралеллиться, поэтому важнее количество ядер, а не частота.
Убедитесь, что GPU и NVMe-диски подключены к разным PCI-E портам, чтобы не делить пропускную способность.
Это тоже очень странная рекомендация, ибо GDS рекомендует делать строго обратное. For hardware platforms, where GPUs do not share the same Root Port with the Storage NICs, peer-to-peer transactions (p2p) may have higher latency and are inefficient compared to p2p traffic under PCIe switches. И я не очень понял между чем там делится полоса, если оно включено в PCIe Switch из которого по 16 линий смотрят на GPU, а еще сколько-то линий на NVMe.
Выставьте оптимальную NUMA-топологию (например, на AMD EPYC — NPS = 1 или 2). Это снизит задержки доступа к оперативной памяти.
Тут все несколько сложнее. Та же AMD пишет: "The default value is NPS1, but there are times when setting this to NPS4 boosts performance when doing concurrent executions during inferencing with multiple instances that are each running in different CCDs, thus maximizing throughput. Generally speaking, all deep learning workloads, training, or inference get better performance without accessing hardware resources across NUMA nodes."
P.S. Все написанное выше, в первую очередь, касается больших систем на DataCenter GPU (а не GeForce), но вы вроде про них и пишите
Мы, конечно, про более менее земные нагрузки для реалий РФ, где большинство еще считает подвигом запуск ИИ на картах типа GTX 1080, а 4090 и вообще топ топовый) Про более серьезные решения мы писали в предыдущих статьях, кстати. И лишь малая часть в РФ уже работает в коммерческом продуктиве с L40/A100/H100 . У нас сейчас, даже, те еще квесты с просто достать карты RTX 6000 BSE 96Gb, для рынка РФ.
Information
- Website
- mclouds.ru
- Registered
- Founded
- Employees
- 31–50 employees
- Location
- Россия
- Representative
- mClouds_editor
Как загрузить GPU на максимум. Разбираем узкие места в инфраструктуре для ИИ