Accélérez l’apprentissage automatique de graphes avec GraphStorm une nouvelle façon de résoudre les problèmes sur des graphes à grande échelle d’entreprise.

Accélérez l'apprentissage automatique de graphes avec GraphStorm pour résoudre les problèmes sur des graphes d'entreprise à grande échelle.

Nous sommes ravis d’annoncer la sortie en open-source de GraphStorm 0.1, un framework d’apprentissage automatique (ML) d’entreprise à faible code pour construire, entraîner et déployer des solutions de ML sur des graphes d’entreprise complexes en quelques jours au lieu de mois. Avec GraphStorm, vous pouvez construire des solutions qui prennent directement en compte la structure des relations ou des interactions entre des milliards d’entités, qui sont intrinsèquement intégrées dans la plupart des données du monde réel, y compris les scénarios de détection de fraude, les recommandations, la détection de communauté et les problèmes de recherche / récupération.

Jusqu’à présent, il a été notoirement difficile de construire, former et déployer des solutions de ML graphiques pour des graphes d’entreprise complexes qui ont facilement des milliards de nœuds, des centaines de milliards d’arêtes et des dizaines d’attributs, pensez simplement à un graphe capturant les produits Amazon.com, les attributs de produits, les clients et plus encore. Avec GraphStorm, nous publions les outils qu’Amazon utilise en interne pour amener des solutions de ML graphiques à grande échelle en production. GraphStorm ne nécessite pas que vous soyez un expert en ML graphique et est disponible sous la licence Apache v2.0 sur GitHub. Pour en savoir plus sur GraphStorm, visitez le dépôt GitHub.

Dans cet article, nous présentons une introduction à GraphStorm, son architecture et un exemple d’utilisation de celui-ci.

Présentation de GraphStorm

Les algorithmes de graphe et le ML graphique émergent comme des solutions de pointe pour de nombreux problèmes commerciaux importants tels que la prédiction des risques de transaction, l’anticipation des préférences des clients, la détection d’intrusions, l’optimisation des chaînes d’approvisionnement, l’analyse des réseaux sociaux et la prédiction du trafic. Par exemple, Amazon GuardDuty, le service de détection de menaces natif d’AWS, utilise un graphe avec des milliards d’arêtes pour améliorer la couverture et l’exactitude de son intelligence de menace. Cela permet à GuardDuty de catégoriser les domaines non vus précédemment comme étant très susceptibles d’être malveillants ou bénins en fonction de leur association à des domaines malveillants connus. En utilisant des réseaux de neurones de graphe (GNN), GuardDuty est capable d’améliorer sa capacité à alerter les clients.

Cependant, développer, lancer et exploiter des solutions de ML graphiques prend des mois et nécessite une expertise en ML graphique. En première étape, un scientifique en ML graphique doit construire un modèle de ML graphique pour un cas d’utilisation donné en utilisant un framework comme la bibliothèque de graphes profonds (DGL). La formation de tels modèles est difficile en raison de la taille et de la complexité des graphes dans les applications d’entreprise, qui atteignent régulièrement des milliards de nœuds, des centaines de milliards d’arêtes, différents types de nœuds et d’arêtes et des centaines d’attributs de nœuds et d’arêtes. Les graphes d’entreprise peuvent nécessiter des téraoctets de stockage de mémoire, obligeant les scientifiques en ML graphique à construire des pipelines de formation complexes. Enfin, une fois qu’un modèle a été formé, il doit être déployé pour l’inférence, ce qui nécessite des pipelines d’inférence tout aussi difficiles à construire que les pipelines de formation.

GraphStorm 0.1 est un framework d’apprentissage automatique graphique d’entreprise à faible code qui permet aux praticiens de ML de choisir facilement des modèles de ML graphique prédéfinis qui ont prouvé leur efficacité, d’exécuter une formation distribuée sur des graphes avec des milliards de nœuds et de déployer les modèles en production. GraphStorm offre une collection de modèles de ML graphique intégrés, tels que les réseaux de convolution graphique relationnels (RGCN), les réseaux d’attention de graphique relationnel (RGAT) et le transformateur de graphique hétérogène (HGT) pour les applications d’entreprise avec des graphes hétérogènes, ce qui permet aux ingénieurs de ML avec peu d’expertise en ML graphique d’essayer différentes solutions de modèle pour leur tâche et de sélectionner rapidement la bonne. Les pipelines de formation et d’inférence distribués de bout en bout, qui s’échelonnent jusqu’à des graphes d’entreprise à l’échelle du milliard, facilitent la formation, le déploiement et l’exécution de l’inférence. Si vous êtes nouveau dans GraphStorm ou le ML graphique en général, vous bénéficierez des modèles et des pipelines prédéfinis. Si vous êtes un expert, vous avez toutes les options pour ajuster le pipeline de formation et l’architecture du modèle pour obtenir les meilleures performances. GraphStorm est construit sur la DGL, un framework largement populaire pour développer des modèles GNN, et disponible en tant que code open-source sous la licence Apache v2.0.

“GraphStorm est conçu pour aider les clients à expérimenter et à opérationnaliser des méthodes ML graphiques pour des applications industrielles afin d’accélérer l’adoption de ML graphique”, déclare George Karypis, scientifique principal de recherche chez Amazon AI/ML. “Depuis sa sortie chez Amazon, GraphStorm a réduit l’effort nécessaire pour construire des solutions basées sur le ML graphique jusqu’à cinq fois”.

“GraphStorm permet à notre équipe de former des plongements GNN de manière auto-supervisée sur un graphe avec 288 millions de nœuds et 2 milliards d’arêtes”, déclare Haining Yu, scientifique appliqué principal chez Amazon Measurement, Ad Tech et Data Science. “Les plongements GNN pré-entraînés montrent une amélioration de 24% sur une tâche de prédiction d’activité d’achat par rapport à une référence basée sur BERT; il dépasse également les performances de référence dans d’autres applications publicitaires”.

“Avant GraphStorm, les clients ne pouvaient se redimensionner verticalement que pour gérer des graphes de 500 millions d’arêtes”, déclare Brad Bebee, GM pour Amazon Neptune et Amazon Timestream. “GraphStorm permet aux clients de mettre à l’échelle la formation de modèles GNN sur des graphes massifs d’Amazon Neptune avec des dizaines de milliards d’arêtes”.

Architecture technique de GraphStorm

La figure suivante montre l’architecture technique de GraphStorm.

GraphStorm est construit sur PyTorch et peut fonctionner sur une seule GPU, plusieurs GPUs et plusieurs machines GPU. Il se compose de trois couches (marquées dans les boîtes jaunes dans la figure précédente):

  • Couche inférieure (Dist GraphEngine) – La couche inférieure fournit les composants de base pour permettre l’apprentissage distribué du graphique, y compris les graphiques distribués, les tenseurs distribués, les embeddings distribués et les échantillonneurs distribués. GraphStorm fournit des implémentations efficaces de ces composants pour mettre à l’échelle l’apprentissage du graphique à des graphiques de milliards de nœuds.
  • Couche intermédiaire (GS training/inference pipeline) – La couche intermédiaire fournit des entraîneurs, des évaluateurs et des prédicteurs pour simplifier l’apprentissage du modèle et l’inférence pour les modèles intégrés et vos modèles personnalisés. En utilisant l’API de cette couche, vous pouvez vous concentrer sur le développement du modèle sans vous soucier de la mise à l’échelle de l’apprentissage du modèle.
  • Couche supérieure (GS general model zoo) – La couche supérieure est un modèle zoo avec des modèles GNN et non-GNN populaires pour différents types de graphes. Au moment de la rédaction de ce document, il fournit RGCN, RGAT et HGT pour les graphes hétérogènes et BERTGNN pour les graphes textuels. À l’avenir, nous ajouterons le support pour les modèles de graphes temporels tels que TGAT pour les graphes temporels ainsi que TransE et DistMult pour les graphes de connaissances.

Comment utiliser GraphStorm

Après avoir installé GraphStorm, vous n’avez besoin que de trois étapes pour construire et entraîner des modèles GML pour votre application.

Premièrement, vous pré-traitez vos données (y compris potentiellement votre ingénierie de fonctionnalités personnalisée) et les transformez en un format de tableau requis par GraphStorm. Pour chaque type de nœud, vous définissez un tableau qui répertorie tous les nœuds de ce type et leurs fonctionnalités, en fournissant un identifiant unique pour chaque nœud. Pour chaque type de bord, vous définissez de même un tableau dans lequel chaque ligne contient les identifiants de source et de destination pour un bord de ce type (pour plus d’informations, voir le tutoriel Utilisez vos propres données). En outre, vous fournissez un fichier JSON qui décrit la structure globale du graphe.

Deuxièmement, via l’interface de ligne de commande (CLI), vous utilisez le composant construct_graph intégré de GraphStorm pour un traitement de données spécifique à GraphStorm, qui permet un entraînement et une inférence distribués efficaces.

Troisièmement, vous configurez le modèle et la formation dans un fichier YAML (exemple) et, encore une fois en utilisant la CLI, invoquez l’un des cinq composants intégrés (gs_node_classification, gs_node_regression, gs_edge_classification, gs_edge_regression, gs_link_prediction) en tant que pipelines de formation pour former le modèle. Cette étape aboutit aux artefacts du modèle entraîné. Pour faire une inférence, vous devez répéter les deux premières étapes pour transformer les données d’inférence en un graphe en utilisant le même composant GraphStorm (construct_graph) qu’auparavant.

Enfin, vous pouvez invoquer l’un des cinq composants intégrés, le même qui a été utilisé pour la formation du modèle, en tant que pipeline d’inférence pour générer des embeddings ou des résultats de prédiction.

Le flux global est également représenté dans la figure suivante.

Dans la section suivante, nous fournissons un exemple d’utilisation.

Faire des prédictions sur les données brutes d’OAG

Pour ce post, nous démontrons à quel point GraphStorm peut facilement permettre l’apprentissage et l’inférence du graphique ML sur un grand ensemble de données brutes. Le graphe académique ouvert (OAG) contient cinq entités (articles, auteurs, lieux, affiliations et domaine d’étude). L’ensemble de données brut est stocké dans des fichiers JSON de plus de 500 Go.

Notre tâche consiste à construire un modèle pour prédire le domaine d’étude d’un article. Pour prédire le domaine d’étude, vous pouvez le formuler comme une tâche de classification multi-étiquette, mais il est difficile d’utiliser l’encodage one-hot pour stocker les étiquettes car il y a des centaines de milliers de champs. Par conséquent, vous devez créer des nœuds de domaine d’étude et formuler ce problème comme une tâche de prédiction de lien, en prédisant à quels nœuds de domaine d’étude un nœud d’article doit se connecter.

Pour modéliser cet ensemble de données avec une méthode de graphique, la première étape consiste à traiter l’ensemble de données et extraire les entités et les arêtes. Vous pouvez extraire cinq types d’arêtes à partir des fichiers JSON pour définir un graphique, comme indiqué dans la figure suivante. Vous pouvez utiliser le cahier Jupyter dans le code d’exemple GraphStorm pour traiter l’ensemble de données et générer cinq tables d’entités pour chaque type d’entité et cinq tables d’arêtes pour chaque type d’arête. Le cahier Jupyter génère également des plongements BERT sur les entités avec des données textuelles, telles que des articles.

Après avoir défini les entités et les arêtes entre les entités, vous pouvez créer mag_bert.json, qui définit le schéma du graphique, et invoquer le pipeline de construction de graphique intégré construct_graph dans GraphStorm pour construire le graphique (voir le code suivant). Même si le pipeline de construction de graphique GraphStorm s’exécute sur une seule machine, il prend en charge le traitement parallèle des nœuds et des fonctionnalités d’arête en multiprocessus (--num_processes) et peut stocker les fonctionnalités d’entité et d’arête sur une mémoire externe (--ext-mem-workspace) pour pouvoir être mis à l’échelle vers de grands ensembles de données.

python3 -m graphstorm.gconstruct.construct_graph \
         --num-processes 16 \
         --output-dir /data/oagv2.1/mag_bert_constructed \
         --graph-name mag --num-partitions 4 \
         --skip-nonexist-edges \
         --ext-mem-workspace /mnt/raid0/tmp_oag \
         --ext-mem-feat-size 16 --conf-file mag_bert.json

Pour traiter un tel grand graphique, vous avez besoin d’une instance de processeur de grande mémoire pour construire le graphique. Vous pouvez utiliser une instance Amazon Elastic Compute Cloud (Amazon EC2) r6id.32xlarge (128 vCPU et 1 To de RAM) ou r6a.48xlarge (192 vCPU et 1,5 To de RAM) pour construire le graphique OAG.

Après la construction d’un graphique, vous pouvez utiliser gs_link_prediction pour entraîner un modèle de prédiction de lien sur quatre instances g5.48xlarge. Lorsque vous utilisez les modèles intégrés, vous n’avez qu’à invoquer une seule ligne de commande pour lancer la tâche de formation distribuée. Voir le code suivant:

python3 -m graphstorm.run.gs_link_prediction \
        --num-trainers 8 \
        --part-config /data/oagv2.1/mag_bert_constructed/mag.json \
        --ip-config ip_list.txt \
        --cf ml_lp.yaml \
        --num-epochs 1 \
        --save-model-path /data/mag_lp_model

Après l’entraînement du modèle, l’artefact du modèle est enregistré dans le dossier /data/mag_lp_model.

Maintenant, vous pouvez exécuter une inférence de prédiction de lien pour générer des plongements GNN et évaluer la performance du modèle. GraphStorm fournit plusieurs métriques d’évaluation intégrées pour évaluer la performance du modèle. Pour les problèmes de prédiction de lien, par exemple, GraphStorm produit automatiquement la métrique du rang réciproque moyen (MRR). Le MRR est une métrique précieuse pour évaluer les modèles de prédiction de lien de graphique car elle évalue à quel point les liens réels sont classés parmi les liens prédits. Cela capture la qualité des prédictions, en veillant à ce que notre modèle hiérarchise correctement les connexions vraies, ce qui est notre objectif ici.

Vous pouvez exécuter l’inférence avec une seule ligne de commande, comme indiqué dans le code suivant. Dans ce cas, le modèle atteint un MRR de 0,31 sur l’ensemble de test du graphique construit.

python3 -m graphstorm.run.gs_link_prediction \
        --inference --num_trainers 8 \
        --part-config /data/oagv2.1/mag_bert_constructed/mag.json \
        --ip-config ip_list.txt \
        --cf ml_lp.yaml \
        --num-epochs 3 \
        --save-embed-path /data/mag_lp_model/emb \
        --restore-model-path /data/mag_lp_model/epoch-0/

Notez que le pipeline d’inférence génère des plongements à partir du modèle de prédiction de lien. Pour résoudre le problème de trouver le domaine d’étude pour un article donné, effectuez simplement une recherche des k-plus proches voisins sur les plongements.

Conclusion

GraphStorm est un nouveau cadre de ML de graphe qui facilite la construction, la formation et le déploiement de modèles ML de graphe sur des graphiques industriels. Il aborde certains des principaux défis du ML de graphe, notamment la mise à l’échelle et l’utilisabilité. Il fournit des composants intégrés pour traiter les graphiques d’échelle de milliards à partir de données d’entrée brutes jusqu’à la formation de modèles et l’inférence de modèles et a permis à plusieurs équipes Amazon de former des modèles ML de graphe de pointe dans diverses applications. Consultez notre référentiel GitHub pour plus d’informations.

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Related articles

    Discover more

    AI

    Top 10 Vulnérabilités LLM

    Les attaquants exploitent les vulnérabilités de LLM pour utiliser des systèmes de PNL à des fins malveillantes. Décou...

    AI

    En tournant vers l'avenir - le nouveau guide d'ondes change la façon dont les données sont transférées et manipulées

    Les physiciens ont mis au point une méthode pour concevoir une polarisation électromagnétique sur les métasurfaces, r...

    AI

    Intelligence Artificielle et Libre Arbitre

    Les pouvoirs considérables de l'intelligence artificielle sont maintenant évidents. Une IA peut faire certaines chose...

    AI

    La Corée du Sud autorise les robots autonomes à utiliser les trottoirs.

    Le gouvernement sud-coréen autorise les robots autonomes autorisés à circuler sur les trottoirs du pays.

    Recherche en IA

    Un capteur d'alcool mobile porté au poignet pourrait stimuler la recherche sur la consommation d'alcool.

    Des scientifiques de l'Université d'État de Pennsylvanie et de l'Université de Caroline du Nord ont créé un capteur p...

    AI

    Le futur de la guerre alimenté par l'IA, totalement autonome, est là

    Navires sans équipage. Essaims de drones autonomes. Comment une force opérationnelle de la marine américaine utilise ...