В этом посте я сделаю обзор недавно предложенной распределенной обучающей среды для крупномасштабных сверточных сетей на основе графов (GCN), называемой обучением подсетей, не зависящих от графа (GIST) [1]. GIST значительно ускоряет процесс обучения GCN для любой архитектуры и может использоваться для обучения крупномасштабных моделей, которые превышают возможности одного графического процессора. Я постараюсь охватить наиболее важные аспекты GIST в этом посте, включая соответствующую справочную информацию, исчерпывающее описание методологии обучения и детали, касающиеся экспериментальной проверки GIST. Полная, подробная рукопись была написана для описания GIST и доступна на Arxiv. Кроме того, исходный код всех экспериментов, проведенных с GIST, находится в открытом доступе на GitHub.

Вступление

Машинное обучение и глубокое обучение уже получили широкое распространение благодаря многочисленным приложениям для решения промышленных и научных задач (например, беспилотные автомобили, системы рекомендаций, отслеживание людей и т. Д.), Но машинное обучение на графах, которое я буду называть graphML для Короче говоря, совсем недавно оказался в центре внимания исследований в области компьютерных наук и искусственного интеллекта. Хотя существует много причин для популяризации graphML, основная причина заключается в том, что не все данные могут быть закодированы в евклидовом пространстве. Графы представляют собой более интуитивно понятную структуру данных во многих приложениях, таких как социальные сети (т.е. узлы графа - это люди, а ребра - социальные связи) или химия (т.е. узлы графа представляют атомы, а ребра представляют химические связи). Таким образом, обобщение существующих стратегий обучения на евклидовых данных (например, сверточных нейронных сетей, преобразователей и т. Д.) Для работы с графами является очень важной проблемой.

Для достижения этой цели было разработано несколько методов (глубокого) обучения графов, наиболее популярной из которых является сверточная сеть графов (GCN) [2]. GCN реализует обобщение операции свертки для графов, вдохновленное приближением первого порядка сверток спектральных графов. Несмотря на популярность GCN и ее повсеместный успех в выполнении задач классификации на уровне узлов и графов, эта модель общеизвестно неэффективна и ее трудно масштабировать до больших графов. Такая проблема стимулировала развитие методов разделения узлов, включая как выборку соседей (например, LADIES и FastGCN), так и разбиение графов (например, ClusterGCN и GraphSAGE), которые делят большие графы на компоненты, поддающиеся вычислению. Тем не менее, данные, используемые в исследованиях graphML, остаются в относительно небольшом масштабе, и большинство моделей GCN ограничены по размеру из-за проблемы чрезмерного сглаживания в более глубоких сетях [3]. Такое использование меньших по размеру данных и моделей в экспериментах с graphML резко контрастирует с основным направлением исследований глубокого обучения, где масштабы экспериментов постоянно расширяются.

Чтобы преодолеть разрыв в масштабе между глубоким обучением и graphML, GIST стремится проводить эксперименты с более крупными моделями и наборами данных. GIST, который может использоваться для обучения любой архитектуры GCN и совместим с существующими методами разделения узлов, работает путем декомпозиции глобальной модели GCN на несколько узких суб-GCN равной глубины путем случайного разделения пространства скрытых функций в глобальной модели. Эти суб-GCN затем распределяются по отдельным графическим процессорам и обучаются независимо и параллельно в течение нескольких итераций, прежде чем их обновления будут агрегированы в полную глобальную модель. Затем создается / распределяется новая группа суб-GCN, и тот же процесс повторяется до схождения. В случаях очень больших графов мы применяем существующие подходы к разделению графов для формирования мини-пакетов, что позволяет GIST обучать модели GCN на произвольно больших графах.

Проще говоря, GIST стремится предоставить распределенную среду обучения для крупномасштабных экспериментов с GCN с минимальным временем обучения настенным часам. Более того, поскольку GIST обучает суб-GCN вместо того, чтобы напрямую обучать глобальную модель, его можно использовать для обучения моделей с очень большими скрытыми слоями, которые превышают возможности одного графического процессора (например, мы используем GIST для обучения «сверхшироких» ”32 768-мерная модель GraphSAGE на Amazon2M). Следует отметить, что мы предпочитаем фокусироваться на масштабировании ширины модели, а не глубины, из-за того, что, как известно, глубокие модели GCN страдают от чрезмерного сглаживания [3].

Что такое ГИСО?

Здесь мы объясняем общую методику обучения, используемую GIST. Эта методология обучения, направленная на обеспечение возможности быстро развивающегося и крупномасштабного экспериментирования с GCN, совместима с любой архитектурой GCN или методологией выборки. В нашем объяснении мы предполагаем, что читатель имеет общее представление об архитектуре GCN. Для исчерпывающего обзора архитектуры GCN рекомендуем эту статью. Общий вид методологии обучения GIST представлен на рисунке 1, и мы более подробно объясним каждый компонент этой методологии в следующих разделах.

Создание суб-GCN

Первым шагом в обучении модели GCN с помощью GIST является разделение скрытых измерений глобальной модели для формирования нескольких узких суб-GCN одинаковой глубины (то есть sub-GCNs на рисунке 1). Перед разделением должно быть известно количество суб-GCN, обозначенное как m. Затем для каждого скрытого слоя глобальной модели индексы нейронов внутри слоя случайным образом разбиваются на m непересекающиеся группы равного размера, соответствующие различным суб-GCN. После создания этих разделов весовая матрица суб-GCN на произвольном уровне может быть построена путем индексации строк глобальной весовой матрицы с индексами разделения из предыдущего слоя и столбцов глобальной весовой матрицы с индексами разделения текущего слоя. . Таким образом, эта методология разделения создает меньшие весовые матрицы для каждого суб-GCN, которые соответствуют выбранному случайному разделению признаков.

Вышеупомянутая методология, изображенная на рисунке 2, выполняется для всех уровней глобальной модели GCN, но входные и выходные измерения исключены из разделения. Входное измерение (то есть d0 на рисунке 2) не разделяется, потому что это приведет к тому, что каждый суб-GCN будет иметь доступ только к части входного вектора для каждого узла, что приведет к резкому снижению производительности при больших значениях m. Точно так же выходное измерение глобальной модели (то есть d3 на рисунке 2) не разделяется, так что каждая суб-GCN создает выходной вектор того же размера. В результате не требуется никаких изменений функции потерь, и все суб-GCN могут быть обучены минимизировать одну и ту же глобальную функцию потерь.

После создания суб-GCN каждый из них отправляется на отдельные графические процессоры для независимого и параллельного обучения. Следует отметить, что полная модель никогда не передается (т. Е. Между устройствами передаются только суб-GCN), что резко повышает эффективность связи при распределенном обучении с помощью GIST. Процесс разделения суб-GCN проиллюстрирован на рисунке 2, где разные суб-GCN-разделы обозначены оранжевым и синим цветами. Напомним, что входные и выходные измерения не разделены в рамках GIST, как показано на (b) на рисунке 2.

Учебные суб-GCN

После того, как суб-GCN созданы и отправлены на соответствующие устройства, каждая из них обучается независимо и параллельно в течение заданного количества итераций (т.е. subTrain на рисунке 1), называемых локальными итерациями. Когда суб-GCN завершили свои локальные итерации, обновления параметров каждой суб-GCN агрегируются в глобальную модель, и создается новая группа суб-GCN. Этот процесс повторяется до схождения. Как упоминалось ранее, суб-GCN обучаются минимизировать одну и ту же функцию глобальных потерь. Кроме того, каждый суб-GCN обучается на одних и тех же данных (т. Е. Не предполагается разделение данных по устройствам без идентификаторов).

Чтобы обеспечить постоянство общего объема обучения между моделями, обученными с помощью GIST, и с использованием стандартной методологии с одним графическим процессором, модели GCN, обученные с помощью GIST, имеют общее количество эпох обучения, разделенных по суб-GCN. Например, если обычная базовая модель GCN обучается в течение 10 эпох с использованием одного графического процессора, то сопоставимая модель GCN, обученная с помощью GIST с использованием двух суб-GCN, будет проводить 5 эпох обучения для каждой суб-GCN. Поскольку суб-GCN обучаются параллельно, такое сокращение количества эпох обучения для каждого суб-GCN приводит к большому ускорению обучения.

Если график обучения достаточно мал, суб-GCN параллельно проводят полное пакетное обучение. Однако в случаях, когда обучающий граф слишком велик для выполнения полнопакетного обучения, применяется подход разделения графа, чтобы разложить обучающий граф на более мелкие, вычислительно обрабатываемые подграфы в качестве шага предварительной обработки (т. Е. Cluster на рисунке 1). Эти подграфы затем используются как минипакеты во время независимых итераций обучения, что в общих чертах отражает подход к обучению, предложенный clusterGCN [4]. Хотя можно использовать любой подход к разделению, GIST использует METIS из-за его доказанной эффективности на крупномасштабных графах [5].

Агрегирование суб-GCN

После того, как суб-GCN завершат независимое обучение, их параметры должны быть агрегированы в глобальную модель (т.е. subAgg на рисунке 1), прежде чем может начаться еще один независимый цикл обучения с новыми суб-GCN. Такое агрегирование выполняется путем простого копирования параметров каждой суб-GCN в их соответствующие местоположения в глобальной модели. Во время этого процесса не происходит никаких конфликтов из-за несвязанности функционального раздела, созданного в GIST. Интересно, что не все параметры обновляются в каждом отдельном тренировочном раунде. Например, в пределах (b) рисунка 2 только перекрывающиеся оранжевый и синий блоки фактически разделяются на суб-GCN, в то время как другие параметры исключаются из независимого обучения. Тем не менее, если проводится достаточное количество независимых циклов обучения, все параметры в глобальной модели должны обновляться несколько раз, поскольку каждый цикл обучения использует новый случайный раздел функций.

Чем полезен GIST?

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

Распределенное обучение, не зависящее от архитектуры

GIST - это распределенная методология обучения, которую можно использовать для любой архитектуры GCN. В частности, GIST используется для обучения ванильных архитектур GCN, GraphSAGE и сети внимания к графу (GAT) в исходной рукописи, но GIST не ограничивается этими моделями. Следовательно, это общая структура, которая может применяться для ускорения обучения любой модели GCN.

Совместимость с методами отбора проб

Стратегия разделения функций в GIST ортогональна многим стратегиям разделения узлов, которые были предложены для эффективного обучения GCN. Следовательно, любую из этих стратегий можно легко комбинировать с GIST для повышения эффективности обучения. Например, разбиение графа используется для обучения GCN над более крупными графами с помощью GIST, а GIST даже используется для обучения моделей GraphSAGE. Такие эксперименты демонстрируют совместимость GIST с существующими подходами к выборке графов и окрестностей.

Сверхширокое обучение GCN

GIST косвенно обновляет глобальную модель GCN посредством обучения меньших суб-GCN, что позволяет обучать модели с чрезвычайно большими скрытыми размерами (т. Е. Превышающими возможности одного графического процессора). Например, при обучении модели GCN с помощью GIST с использованием 8 суб-GCN скрытое измерение модели может быть увеличено примерно в 8 раз по сравнению с моделями с ограничением емкости одного графического процессора. Такое свойство позволяет обучать «сверхширокие» модели GCN с помощью GIST, как показано в экспериментах с GIST.

Повышенная сложность модели

GIST значительно снижает коммуникационную и вычислительную сложность распределенного обучения GCN, что приводит к резкому сокращению времени обучения настенным часам. Такое снижение сложности достигается за счет того, что только суб-GCN, которые значительно меньше, чем глобальная модель, передаются и обучаются GIST. Более точные выражения для снижения сложности, обеспечиваемые GIST, доступны в оригинальной рукописи.

Как GIST работает на практике?

В этом разделе я делаю обзор экспериментов, выполненных с использованием GIST, которые подтверждают его способность обучать модели GCN высокой производительности при значительном сокращении времени работы настенных часов. Эксперименты проводятся с многочисленными наборами данных, включая Cora, Citeseer, Pubmed, OGBN-Arxiv, Reddit и Amazon2M. Однако в этом посте я сосредоточусь на экспериментах с Reddit и Amazon2M, поскольку эти наборы данных намного больше и больше подходят для практических приложений graphML. Меньшие наборы данных в основном используются в качестве экспериментов по дизайну / абляции для методологии GIST, и более подробная информация доступна в рукописи.

Набор данных Reddit

Эксперименты с GIST на наборе данных Reddit проводятся с 256-мерными моделями GraphSAGE и GAT с двумя-четырьмя слоями. Модели обучаются с помощью GIST с использованием нескольких различных количеств суб-GCN, где предполагается, что каждый суб-GCN распределяется на отдельный графический процессор (т. Е. В 8 экспериментах с суб-GCN используется всего 8 графических процессоров). 80 периодов общего обучения выполняются с использованием оптимизатора Adam и без уменьшения веса, а количество локальных итераций установлено на 500. Обучающий граф разбивается на 15 000 подграфов во время обучения. Базовые модели обучаются с использованием стандартной методологии для одного графического процессора, а все остальные экспериментальные детали остаются неизменными. Как видно на рисунке 3, все модели, обученные с помощью GIST, достигают производительности, которая соответствует или превышает производительность моделей, обученных с помощью стандартной методологии с одним графическим процессором. Кроме того, время обучения GIST значительно сокращается по сравнению со стандартным обучением на одном графическом процессоре.

Набор данных Amazon2M

Эксперименты с GIST в наборе данных Amazon2M проводятся с использованием моделей GraphSAGE со скрытыми размерами 400 и 4096 (то есть узкими и широкими моделями) и разным количеством слоев. Опять же, модели обучаются с помощью GIST с использованием нескольких различных количеств суб-GCN, а обучающий граф разбивается на 15 000 разделов. Базовые эксперименты выполняются с использованием стандартной методики обучения с одним графическим процессором. Обучение проводится с использованием оптимизатора Adam без уменьшения веса для 400 полных эпох, а количество локальных итераций установлено на 5000. Как видно на рисунке 4, модели, обученные с помощью GIST, завершают обучение значительно быстрее по сравнению с базовыми моделями, обученными с помощью стандартной методологии с одним графическим процессором. Кроме того, модели, обученные с помощью GIST, во всех случаях работают сравнимо с моделями, обученными по стандартной методике.

Сверхширокие GCN

Как упоминалось ранее, GIST можно использовать для обучения невероятно широких моделей GCN из-за того, что глобальная модель косвенно обновляется посредством независимого обучения суб-GCN. Чтобы продемонстрировать эту возможность, модели GraphSAGE со все более крупными скрытыми измерениями обучаются с использованием набора данных Amazon2M. Как показано на рисунке 5, GIST можно использовать для обучения моделей GraphSAGE со скрытыми размерами до 32 768 до высокопроизводительных на наборе данных Amazon2M с относительно минимальным временем обучения. Методологии обучения с одним графическим процессором в этих случаях достигают ошибки нехватки памяти (даже в моделях GCN, которые значительно меньше), тем самым демонстрируя, что GIST можно использовать для обучения моделей, которые намного превышают возможности одного графического процессора. Кроме того, время обучения на настенных часах моделей, обученных только с одним графическим процессором, становится весьма непомерно высоким по сравнению с моделями, обученными с помощью GIST, что подчеркивает его способность ускорять крупномасштабные эксперименты с GCN. Как показали эти эксперименты, GIST позволяет проводить эксперименты с GCN в масштабах, которые ранее были невозможны.

Заключение

В этом сообщении в блоге я описал GIST, новую методологию распределенного обучения для больших моделей GCN. GIST работает путем разделения глобальной модели GCN на несколько узких суб-GCN, которые распределяются по отдельным графическим процессорам и обучаются независимо и параллельно, прежде чем их параметры будут агрегированы в глобальную модель. GIST можно использовать для обучения любой архитектуры GCN, он совместим с существующими методологиями выборки и может значительно сократить время обучения без снижения производительности модели. Кроме того, GIST может обеспечить обучение невероятно широких моделей GCN для достижения самых современных характеристик, таких как 32 768-мерная модель GraphSAGE в наборе данных Amazon2M.

Я искренне ценю ваш интерес к этому сообщению в блоге. Если у вас есть комментарии или вопросы, напишите мне или оставьте комментарий (контактная информация доступна на моем сайте). GIST был разработан в рамках инициативы по обучению независимых подсетей (IST) в моей исследовательской лаборатории в Университете Райса. Более подробную информацию о связанных проектах можно найти здесь.

Цитаты

[1] https://arxiv.org/abs/2102.10424

[2] https://arxiv.org/abs/1609.02907

[3] https://arxiv.org/abs/1801.07606

[4] https://arxiv.org/abs/1905.07953

[5] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.106.4101