Описание
GraphSAINT — это общая и гибкая структура, разработанная для обучения графовых нейронных сетей (GNN) на графах большого масштаба. Она отличается новой методологией мини-батчевого обучения, которая использует сэмплирование графов, в отличие от традиционных подходов к сэмплированию слоев. Этот метод сэмплирования графов позволяет строить полные слои GNN на небольших сэмплированных подграфах, а не сэмплировать внутри слоев. Этот фундаментальный сдвиг в перспективе дает несколько ключевых преимуществ.
Читать далее
Точность повышается за счет простых, но эффективных методов нормализации, которые снижают смещение, вносимое сэмплированием графов. Кроме того, GraphSAINT предлагает легковесные сэмплеры графов, которые сохраняют важные соседние узлы на основе топологических характеристик, решая проблему потери информации, присущую любому процессу сэмплирования. Это также можно рассматривать как форму аугментации данных или регуляризации обучения.
Эффективность значительно повышается за счет решения проблемы «взрыва соседей», распространенной проблемы в методах сэмплирования слоев. Создавая полные, не сэмплированные слои GNN на подграфах, количество соседей остается постоянным независимо от глубины сети, снижая вычислительные затраты на мини-батч с экспоненциальной до линейной зависимости от глубины GNN. Это также значительно снижает накладные расходы на связь в распределенных средах.
Гибкость — основной принцип GraphSAINT. Распространение слоев на мини-батчевом подграфе тесно отражает распространение на полном графе, что позволяет беспрепятственно обучать большинство архитектур GNN, разработанных для полных графов. Это контрастирует с некоторыми алгоритмами сэмплирования слоев, которые поддерживают только ограниченные архитектуры GNN. Масштабируемость достигается по размеру графа, размеру модели и параллельным ресурсам. Размеры подграфов не должны расти пропорционально размеру графа, что позволяет большим графам помещаться в память GPU. Затраты на обучение масштабируются линейно с шириной и глубиной GNN, а сэмплирование графов хорошо параллелизуется.
Репозиторий предоставляет реализации на Python как в TensorFlow, так и в PyTorch, а также реализацию на C++ для методов параллельного обучения. Он поддерживает различные архитектуры GNN, такие как GraphSAGE, GAT и JK-Net, а также несколько сэмплеров графов, включая Node, Edge, RW и MRW. Структура предназначена для исследователей и практиков, работающих с большими графовыми наборами данных, которым требуется эффективное и точное обучение GNN.
- КатегорияПлатформы машинного обучения
- Модель ценообразованияОткрытый код
- РазвёртываниеОблако, На своём сервере
- ПлатформыLinux, Windows
Основные функции GraphSAINT
Мини-батчевое обучение для глубоких GNN на больших графах
Индуктивный метод обучения на основе сэмплирования графов
Новый подход к мини-батчевому обучению с использованием сэмплирования графов
Устраняет смещение, вносимое сэмплированием графов, посредством нормализации
Легковесные сэмплеры графов для сохранения важных соседей
Решает проблему «взрыва соседей» для повышения эффективности
Масштабируется по размеру графа, размеру модели и параллельным ресурсам
Поддерживает несколько архитектур GNN (GraphSAGE, GAT, JK-Net, GaAN, MixHop)
Поддерживает различные сэмплеры графов (Node, Edge, RW, MRW, Full graph)
Доступны реализации на TensorFlow и PyTorch
Включает реализацию на C++ для методов параллельного обучения
Облегчает настройку для собственных наборов данных и сэмплеров
Начало работы с GraphSAINT
Доступ к модели: Клонируйте репозиторий GitHub.
Настройка среды: Установите зависимости, включая Python, TensorFlow/PyTorch, Cython и g++.
Компиляция сэмплеров: Выполните `python graphsaint/setup.py build_ext --inplace`.
Подготовка набора данных: Отформатируйте ваши графовые данные в файлы `adj_full.npz`, `adj_train.npz`, `role.json`, `class_map.json` и `feats.npy`.
Конфигурация обучения: Установите гиперпараметры с помощью YAML-файлов конфигурации в `./train_config/`.
Запуск обучения: Выполните скрипты обучения с помощью `python -m graphsaint.<tensorflow/pytorch>_version.train` с соответствующими флагами для данных, конфигурации и использования GPU.
Варианты использования GraphSAINT
- Обучение на графах большого масштаба
- Индуктивное обучение на графах
- Обучение представлений графов
- Классификация узлов
- Предсказание связей
- Предсказание на уровне графа
- Разработка пользовательских GNN







