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

OSCHINA-MIRROR/paddlepaddle-PGL

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.zh.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 06:32 c373d8b

Последние новости

Статья о машинном обучении для представления знаний была принята к публикации! (2022.05.06)

  • Простое и эффективное распространение встраивания на основе отношений для машинного обучения представления знаний, IJCAI2022. Соответствующий код можно посмотреть здесь.

PGL v2.2 2021.12.20

  • Graph4Rec: Мы выпустили универсальный инструмент для крупномасштабного распределённого обучения представлению графов для рекомендательных систем. Подробности см. здесь.

  • Graph4KG: Мы выпустили инструмент для крупномасштабного обучения представлению знаний в графах. Подробности см. здесь.

  • GNNAutoScale: PGL теперь поддерживает GNNAutoScale — фреймворк для обучения графовых нейронных сетей на гетерогенных устройствах. Подробности см. здесь.

🔥 🔥 🔥 OGB-LSC KDD CUP 2021 — чемпион объявлен!! (2021.06.17)

С радостью объявляем, что наша команда PGL заняла два первых места и одно второе место на OGB-LSC KDD CUP 2021 в трёх соревнованиях. Официальный рейтинг можно посмотреть здесь.

  • MAG240M-LSC — первое место: Код и технический отчёт можно найти здесь.

  • WikiKG90M-LSC — первое место: Код и технический отчёт можно найти здесь.

  • PCQM4M-LSC — второе место: Код и технический отчёт можно найти здесь.

Две статьи с использованием PGL были приняты к публикации!! (2021.06.17)

  • Маскированное предсказание меток: унифицированная модель передачи сообщений для полууправляемой классификации, появится в IJCAI2021.
  • HGAMN: Гетерогенная графовая сеть внимания для многоязычного поиска POI на Baidu Maps, появится в KDD2021.

Paddle Graph Learning (PGL) — это высокопроизводительный и удобный в использовании фреймворк машинного обучения для работы с графами, основанный на PaddlePaddle.

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

По сравнению с обычными моделями, графовые нейронные сети имеют преимущество в том, что они используют информацию о связях между узлами. Однако реализация моделирования этих связей в коде может быть сложной задачей. PGL использует парадигму передачи сообщений, аналогичную DGL, в качестве интерфейса для построения графовых нейронных сетей. Для создания простой GCN-сети достаточно написать функции send и recv. Как показано на рисунке ниже, функция send определяется на рёбрах между узлами, и пользовательская функция send будет передавать сообщение от исходного узла к целевому узлу. Затем функция recv объединяет эти сообщения с помощью функции объединения.

Пользователь может реализовать простую функцию суммирования всего лишь несколькими строками кода.

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 walk для выборки

На рисунке слева изображён социальный граф покупок, где есть два основных типа узлов: пользователи и товары, и три типа рёбер: отношения между пользователями, отношения между пользователями и товарами и отношения между товарами. На рисунке справа показан простой процесс выборки MetaPath, где входной metapath равен UPU (пользователь-товар-пользователь), а результат выборки выглядит следующим образом: Затем, на основе этого, можно использовать методы, подобные word2vec, для поддержки алгоритмов машинного обучения на основе метапути, таких как metapath2vec.

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

Алгоритмы машинного обучения на графах могут эффективно обрабатывать сложные структуры данных, такие как социальные сети, биологические сети и транспортные сети. Они используются для задач, связанных с анализом данных, таких как рекомендации, классификация и кластеризация. Текст запроса:

在异构图上由于节点类型不同,消息传递也方式也有所不同。如上图左边,它有五个邻居节点,属于两种不同的节点类型。如上图右边,在消息传�ча необходимо разделить узлы разных типов, а затем объединить их в окончательное сообщение и обновить целевой узел. На этой основе PGL поддерживает алгоритмы для работы с гетерогенными графами на основе передачи сообщений, такие как GATNE и другие.

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

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

Рисунок: Распределённая структура PGL.

Разнообразие: охватывает большинство моделей обучения на графах в отрасли.

Ниже приведены некоторые модели графовых нейронных сетей, реализованные в рамках. Более подробную информацию можно найти здесь.

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

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

PGL зависит от:

  • paddlepaddle >= 2.2.0
  • cython

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

Вы можете легко установить PGL с помощью pip.

pip install pgl

Команда:

PGL разработан и поддерживается командой Baidu NLP и Paddle.

Контакты: E-mail: nlp-gnn[at]baidu.com

Лицензия: PGL использует Apache License 2.0.

Опубликовать ( 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