Нейронные сети требуют больших вычислительных ресурсов, и их обучение обычно занимает несколько часов или дней. Параллелизм данных — это способ увеличить скорость обучения по мере увеличения количества рабочих процессов (например, графических процессоров). На каждом шаге обучающие данные разбиваются на мини-пакеты и распределяются между воркерами, каждый воркер вычисляет свой набор обновлений градиента, которые применяются ко всем репликам. All-reduce — это операция связи между устройствами по умолчанию в TensorFlow, PyTorch и Horovod, собирающая градиенты на каждой итерации и суммирующая их по нескольким рабочим процессам. Связь в каждой итерации обучения использует значительную пропускную способность сети.
Чтобы увеличить скорость параллельного обучения данных на кластерах GPU, Vertex AI представила Reduction Server, более быстрый алгоритм сбора градиентов, разработанный в Google, который удваивает алгоритмическую пропускную способность для всех операций сокращения. рML eduction Server обеспечивает эффективное использование полосы пропускания во время выполнения распределенного обучения (увеличение пропускной способности в 2 раза) и более быстрое завершение операции обучения. Это сокращение времени обучения может привести к снижению общих эксплуатационных расходов. Кроме того, пользователи могут восстанавливать сервер на вершине искусственного интеллекта, не изменяя базовый обучающий код.
Этот пост в блоге знакомит с концепцией Reduction Server и демонстрируетКак клиенты Google Cloud используют эту функцию в Apex AI, чтобы сократить время обучения. В следующем разделе мы углубимся в технические детали и рассмотрим all-reduce — ключевую операцию для параллельного обучения с распределенными данными.
полное воспроизведение
All-reduce — этоколлективная операция, сводит целевой массив (например, операции суммирования, умножения, максимума или минимума) во всех рабочих процессах к одному массиву и возвращает результат всем рабочим процессам. Он успешно используется в сценариях обучения распределенных нейронных сетей, где необходимо суммировать градиенты от нескольких рабочих процессов и передавать их всем рабочим процессам. Рисунок 1 иллюстрирует семантику all-reduce.
Существует множество способов эффективного достижения полного восстановления. В традиционных алгоритмах полного сокращения рабочие взаимодействуют и обмениваются градиентами друг с другом через топологию коммуникационных каналов, таких как кольца или деревья. Полное сокращение кольцалучшая пропускная способностьАлгоритм полной редукции, в котором рабочие образуют логическое кольцо и общаются только со своими непосредственными соседями. Однако даже алгоритму полного сокращения с оптимизированной полосой пропускания по-прежнему необходимо дважды передавать входные данные по сети1.
восстановить сервер
Reduction Server — это более быстрый алгоритм полного сокращения графического процессора, разработанный Google. Есть два типа узлов: рабочие и редукторы. Рабочие запускают копию модели, вычисляют градиенты и применяют шаги оптимизации. Редьюсеры — это легкие экземпляры виртуальных машин ЦП (намного дешевле, чем виртуальные машины графического процессора), предназначенные для агрегирования рабочих градиентов. На рис. 2 показана общая архитектура набора редьюсеров с 4 рабочими процессами и шардом.
Каждому воркеру нужно только передать по сети копию входных данных. Таким образом, Reduction Server фактически вдвое уменьшает объем данных, которые необходимо передать. Еще одним преимуществом восстановления сервера является то, что его латентность не зависит от количества воркеров. Сервер восстановления также не имеет состояния, он только восстанавливает градиенты и делится ими с воркерами.
В следующей таблице приведены объем передаваемых данных и задержка на одного рабочего для Reduction Server по сравнению с алгоритмами полного сокращения на основе кольца и дерева с n рабочими процессами.
Редукторный сервер для многих целейNCCLФреймворки для распределенного обучения GPU, такие как TensorFlow и PyTorch, обеспечивают прозрачную поддержку и доступны в Vertex AI. Это позволяет практикующим специалистам по машинному обучению использовать сервер сокращения без изменения кода обучения.
Преимущество в производительности
На рис. 3 показано использование Reduction Server в наборе данных MNLI.Сад моделей TensorFlowУлучшение производительности при точной настройке модели BERT с 8 графическими процессорами NVIDIA A100 на рабочий узел графического процессора. на этоэксперимент, с 20 узлами редуктора производительность обучения увеличилась на 75%. Другие крупные модели также выигрывают от восстановления серверов с увеличением пропускной способности и сокращением времени обучения.
Суммировать
В этом блоге мы описываем, как Reduction Server на Vertex AI обеспечивает значительные улучшения в распределенном параллельном обучении данных на графическом процессоре и обеспечивает прозрачный переход от традиционного полного сокращения к Reduction Server для практиков машинного обучения.
Чтобы узнать больше, посетите нашДокументациядля получения подробной информации, которая поможет вам получить практический опыт работы с Reduction Server на Apex AI.
1. Если размер целевого массива составляет n элементов, каждый рабочий процесс должен отправить и получить 2 (n-1) элемента по сети во время операции полного восстановления.
[
Статьи по Теме
Оптимизация производительности обучения с помощью сервера восстановления на Apex AI
Узнайте, как настроить задания обучения Vertex, которые используют Reduction Server, чтобы оптимизировать пропускную способность и задержку для распределенного обучения, обеспечивая...
прочитать статью