1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/paddlepaddle-PGL

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Настроить функцию send для отправки сообщения от исходного узла к целевому узлу. На втором этапе функция recv отвечает за объединение сообщений $\oplus$ из разных источников.

Основная идея парадигмы передачи сообщений

Чтобы написать сумматор, пользователям нужно написать следующие коды:

import pgl
import paddle
import numpy as np

num_nodes = 5
edges = [(0, 1), (1, 2), (3, 4)]
feature = np.random.randn(5, 100).astype(np.float32)

g = pgl.Graph(num_nodes=num_nodes,
    edges=edges,
    node_feat={
        "h": feature
    })
g.tensor()

def send_func(src_feat, dst_feat, edge_feat):
    return src_feat

def recv_func(msg):
    return msg.reduce_sum(msg["h"]) 

msg = g.send(send_func, src_feat=g.node_feat)
ret = g.recv(recv_func, msg)

Гибкость — поддержка гетерогенных графов

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

Поддержка выборки пути метаграфа на гетерогенном графе

На рисунке выше слева изображена социальная сеть покупок. Узлы имеют две категории пользователей и товаров, а также отношения между пользователями и пользователями, пользователями и товарами, товарами и товарами. Справа на рисунке показан простой процесс выборки MetaPath. Когда вы вводите любой MetaPath как UPU (пользователь-продукт-пользователь), вы получите следующие результаты.

Затем на этой основе и с использованием word2vec и других методов можно поддерживать изучение metapath2vec и другие алгоритмы представления гетерогенного графа.

Поддержка механизма передачи сообщений на гетерогенном графе

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

Масштабность: поддержка распределённого хранения графов и алгоритмов распределённого обучения

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

Зоопарк моделей

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

Модель Характеристика
ERNIESage
GCN Графовые свёрточные нейронные сети
GAT Сеть внимания графа
GraphSage Графовая свёрточная сеть большого масштаба, основанная на выборке окрестностей
unSup-GraphSage Неконтролируемый GraphSAGE
LINE Обучение представлению на основе соседей первого и второго порядка
DeepWalk Обучение представлению методом случайного блуждания DFS
MetaPath2Vec Обучение представлению на основе метапути
Node2Vec Метод обучения представлению, сочетающий DFS и BFS
Struct2Vec Обучение представлению на основе структурного сходства
SGC Упрощённая графовая свёрточная нейронная сеть
GES Метод представления графа с учётом признаков узлов
DGI Неконтролируемое обучение представлению на основе графовой свёрточной сети
GATNE Обучение представлению гетерогенного графа на основе передачи сообщений

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

Системные требования

Для PGL требуются:

  • paddlepaddle >= 2.2.0;
  • cython.

PGL поддерживает только Python 3.

Установка

Вы можете просто установить его через pip.

pip install pgl

Команда

Разработчиками и сопровождающими PGL являются команды NLP и Paddle в Baidu.

Электронная почта: nlp-gnn[at]baidu.com

Лицензия

PGL использует Apache License 2.0.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Paddle Graph Learning (PGL) — это эффективный и удобный фреймворк для графового обучения на основе PaddlePaddle. Развернуть Свернуть
Python и 6 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/paddlepaddle-PGL.git
git@api.gitlife.ru:oschina-mirror/paddlepaddle-PGL.git
oschina-mirror
paddlepaddle-PGL
paddlepaddle-PGL
main