КРИПТОВАЛЮТА БЕЗ KYCАренда GPU · 3, 7 или 30 дней
Capordia
Язык: Русский
Меню
Эксплуатация / Параллелизм

Выберите, что продвигается вместе, прежде чем считать карты.

Параллелизм отвечает двум разным задачам: завершить больше независимых задач или распределить одну и ту же работу между несколькими GPU. Начните с определения того, что должно быть разделено, синхронизировано или собрано. Каждая карта сохраняет собственную память, а топологию сервера ещё предстоит проверить. Правильный выбор зависит от программного обеспечения и ожидаемого результата; увеличение числа карт не обещает ни объединённой памяти, ни сокращения времени вдвое.

01

Определите единицу работы, которую можно разделить

Опишите, что составляет принятый результат: изображение, обработанный документ, набор симуляций или конечное состояние обучения. Затем спросите, можно ли вычислить одну единицу, не дожидаясь остальных. Два документа могут быть независимы во время обработки, а затем зависеть от общего этапа построения индекса. Разбиение должно описывать этот второй этап, а не забывать о нём в обещании параллелизма.

Различайте вычислительную независимость и независимость с точки зрения бизнеса. Выходной результат может быть получен без технического обмена и оставаться непригодным до валидации всего пакета. Поэтому назовите единицу вычисления, единицу поставки и правило сборки. Этот общий словарь не позволит так, чтобы закупки считали карты, а прикладная команда считала экземпляры или фрагменты одной модели.

02

Выбор между независимыми задачами и тесным взаимодействием

Для независимых задач каждый процесс получает свои входные данные и выдаёт идентифицируемый результат. Другая карта может выполнять другую задачу без синхронизации на каждом этапе. Этот режим интересен, когда цель касается объёма, завершённого за определённое окно. Он не ускоряет автоматически отдельную задачу, и по-прежнему нужно проверять конкуренцию за данные, хранилище или лицензии.

При совместной работе устройства обмениваются данными или ожидают промежуточный результат. Программа должна управлять этим распределением. Руководство CUDA объясняет, что использование нескольких GPU подразумевает контексты, распределение данных, запуски и коммуникации. Это свойства программного пути и наблюдаемой системы; название карты из каталога не доказывает, что этот путь уже существует.

Сначала выберите структуру, а затем количество карт
ВопросНезависимые задачиСовместная работа
Что получает карта?Отдельную полную задачуЧасть или реплику работы
Что нужно координировать?Распределение входных данных и сбор выходныхОбмены, порядок и синхронизации
Какую выгоду проверить?Количество принятых результатов за окноИдентичный результат с адаптированной длительностью или ёмкостью
Какой сбой предусмотреть?Изолированную задачу или публикациюВлияние недоступного участника на группу
03

Не путайте репликацию и распределение памяти

Несколько копий модели не означают, что её параметры разделены между картами. PyTorch DistributedDataParallel синхронизирует градиенты между процессами, которые обучают свои локальные модели. Поэтому по одному лишь названию нельзя заключить, что модель, слишком большая для одной карты, поместится на нескольких. Механизм разделения требует собственной документации и собственной проверки.

Память каждой карты должна покрывать то, что программное обеспечение действительно в неё помещает: данные, состояние модели, временные пространства и возможные обмены. Пик может меняться в зависимости от настроек и фазы обработки. Фиксируйте его по каждому устройству. Сумма номинальных ёмкостей маскирует дисбаланс, при котором одной карте не хватает памяти, а другие её сохраняют. Общей ёмкости пакета недостаточно, чтобы принять сценарий.

04

Вымышленный пример: распределить восемь независимых преобразований

Вымышленная команда «Index des ouvrages» готовит восемь преобразований документов. В её рабочей гипотезе каждое преобразование занимает одну карту в течение двенадцати минут, включая загрузку и вывод. Задача помещается на карте одна, и никакого обмена не требуется до финальной сборки. Эти длительности служат исключительно для построения рассуждения: они не описывают никакого выполнения или производительности GPU, предлагаемых Capordia.

С одной картой восемь последовательных задач занимают 8 × 12 = 96 минут. С двумя картами и равномерным распределением по четыре задачи на каждую параллелизуемая часть теоретически составляет 48 минут. Если финальная сборка требует десяти минут на отдельном узле, полный путь составит соответственно 106 или 58 минут без учёта ожидания перед запуском. Этот расчёт предполагает, что две карты не замедляют загрузку друг друга.

Иллюстративный расчёт, не измерение — восемь задач по двенадцать минут и десять минут на сборку
ОрганизацияПараллелизуемая частьСборкаРасчётная длительность
Одна карта, восемь задач96 мин10 мин106 мин
Две карты, по четыре задачи на каждую48 мин10 мин58 мин
05

Показать, что может обнулить этот теоретический выигрыш

В том же примере документы могут быть разного размера. Если отдать четыре самых длинных одной карте, другая будет простаивать в конце. Распределение по мере освобождения может улучшить баланс, но требует надёжного механизма назначения и политики допуска. Организация очереди рассматривается в отдельном руководстве; данный расчёт не подтверждает, что она уже внедрена.

Хранилище также может стать доминирующим общим ресурсом. Два процесса, читающие одни и те же данные или одновременно записывающие большие результаты, не обязательно получают вдвое большую пропускную способность. Проверьте также ограничения на параллелизм в инструментах и лицензиях. Если непараллелизуемая часть растёт, пересчитайте весь график. Выигранное на одном этапе время не должно скрывать задержку, добавленную в другом месте.

06

Для распределённой работы — получить реальную топологию

Уточните, какие карты видны, как они взаимодействуют и какие ресурсы хоста совместно используют их процессы. Проверьте устройства, доступные из используемой среды, а не только из консоли администратора. CUDA указывает, что доступ к памяти другого GPU зависит, в частности, от топологии и возможностей системы. Поддержка функции моделью не доказывает наличие ожидаемого соединения на машине.

Сохраните простую схему движения данных: вход, задействованная карта или процесс, обмены, финальный сбор и выход. Для каждой стрелки определите, проходит ли она через память хоста, соединение между GPU или сеть. Это представление помогает выбрать проверки приёмки. Оно не навязывает конкретную технологию и не превращает запрос к нескольким GPU в обещание определённой топологии.

07

Сравнить две организации, не меняя ожидаемый результат

Подготовьте небольшой репрезентативный корпус и выполните на разрешённой цели сначала эталонную организацию, затем предлагаемую. Зафиксируйте версии, настройки, ожидаемое качество и правила сборки. Сравните время до принятого результата, пиковую память каждой карты, ошибки и потребление общих ресурсов. Отделяйте наблюдения от оценок; предложенная команда не равна уже полученному результату.

В частности, проверьте, что число принятых результатов остаётся тем же и ни один вход не пропущен. Для вычислений, чувствительных к порядку операций, выберите обоснованный допуск вместо произвольного равенства. Организация, которая завершается быстрее с другим качеством, отвечает на другую задачу. Сохраните также случай, где разделение невыгодно: эта граница объясняет выбор лучше, чем ранжирование карт без общей нагрузки.

08

Перевести выбор в требуемую мощность

В итоге опишите число одновременных задач, необходимые для каждой карты и обязательные условия. Задача, распределённая на две карты, и две задачи по одной карте — это две разные организации, даже если общее число карт одинаково. Выбранная конфигурация должна допускать требуемую организацию; не отталкивайтесь от номинального итога, чтобы затем придумать ему применение.

В каталоге указаны комплекты карт. Комплект B200 содержит два GPU по 180 ГБ каждый; такая конфигурация не гарантирует, что программное обеспечение будет использовать их как единую память. Следующий шаг — сопоставить потребность с комплектом, а затем принять те свойства, которые действительно необходимы. Сроки, стоимость и решение остаются предварительными, пока не проверены определяющие условия.

Вопросы для принятия решения

Всегда ли два GPU быстрее одного?

Нет. Выигрыш зависит от доли распараллеливаемой части, обменов данными и общих ресурсов. Для изолированной неразделяемой задачи вторая карта может остаться неиспользованной. Сравнивайте время до одного и того же принятого результата по явно заданному протоколу.

Удваивает ли комплект из двух карт доступную память для моей программы?

Не автоматически. У каждого устройства своя память, и программа должна распределять своё состояние или данные. Напротив, репликация модели может дублировать значительную часть этого состояния. Проверьте программный механизм и пиковое потребление на каждую карту.

Когда начинать с независимых задач?

Когда каждую единицу можно вычислить отдельно и желаемый эффект — завершить больше единиц. Всё равно нужно проверить распределение, балансировку нагрузки и финальную сборку, не предполагая, что хранение и лицензии последуют автоматически.

ПРОДОЛЖИТЬ ОФОРМЛЕНИЕПросмотреть конфигурацииОзнакомиться с частыми вопросами