
Page d'accueil | Papier | Documentation | Forum de discussion | Ensemble de données |中文
Le COGDL est une boîte à outils d'apprentissage en profondeur graphique qui permet aux chercheurs et aux développeurs de former et de comparer facilement les modèles de référence ou personnalisés pour la classification des nœuds, la classification des graphiques et d'autres tâches importantes dans le domaine du graphique.
Nous résumons les contributions du COGDL comme suit:
Le papier COGDL a été accepté par www 2023. Trouvez-nous sur www 2023! Nous publions également la nouvelle version V0.6 qui ajoute plus d'exemples d'apprentissage par auto-sumission graphique, y compris Graphmae, Graphmae2 et BGRL.
Un cours GNN gratuit fourni par l'équipe COGDL est présent sur ce lien. Nous fournissons également un forum de discussion aux utilisateurs chinois.
La nouvelle version V0.5.3 prend en charge la formation de précision mixte en définissant textit {fp16 = true} et fournit un exemple de base écrit par Jittor. Il met également à jour le tutoriel dans le document, corrige les liens de téléchargement de certains ensembles de données et corrige les bogues potentiels des opérateurs.
La nouvelle version V0.5.2 ajoute un exemple GNN pour les produits OGBN et met à jour les ensembles de données GEOM. Il corrige également certains bogues potentiels, y compris les périphériques de réglage, en utilisant le processeur pour l'inférence, etc.
La nouvelle version V0.5.1 ajoute des opérateurs rapides, y compris SPMM (version CPU) et Scatter_Max (version CUDA). Il ajoute également de nombreux ensembles de données pour la classification des nœuds qui peuvent être trouvés dans ce lien. ?
La nouvelle version V0.5.0 conçoit et implémente une boucle de formation unifiée pour GNN. Il introduit DataWrapper pour aider à préparer les données de formation / validation / test et ModelWrapper pour définir les étapes de formation / validation / test. ?
La nouvelle version V0.4.1 ajoute la mise en œuvre de GNN profonds et la tâche de recommandation. Il prend également en charge de nouveaux pipelines pour générer des intérêts et des recommandations. Bienvenue pour rejoindre notre tutoriel sur KDD 2021 à 10h30 à 12h00, 14 août (heure de Singapour). Plus de détails peuvent être trouvés dans https://kdd2021graph.github.io/. ?
La nouvelle version V0.4.0 referme le stockage de données (des Data à Graph ) et fournit des opérateurs plus rapides pour accélérer la formation GNN. Il comprend également de nombreuses méthodes d'apprentissage auto-supervisées sur les graphiques. BTW, nous sommes heureux d'annoncer que nous donnerons un tutoriel sur KDD 2021 en août. Veuillez consulter ce lien pour plus de détails. ?
COGDL prend en charge les modèles GNN avec un mélange d'experts (MOE). Vous pouvez installer Fastmoe et essayer Moe GCN dans COGDL maintenant!
La nouvelle version V0.3.0 offre un opérateur SPMM rapide pour accélérer l'entraînement GNN. Nous publions également la première version de COGDL Paper dans Arxiv. Vous pouvez rejoindre notre Slack pour la discussion. ???
La nouvelle version V0.2.0 comprend experiment et des API pipeline faciles à utiliser pour toutes les expériences et applications. L'API experiment prend en charge les fonctionnalités Automl de la recherche d'hyper-paramètres. Cette version fournit également l'API OAGBert pour l'inférence du modèle ( OAGBert est formé sur le corpus académique à grande échelle par notre laboratoire). Certaines fonctionnalités et modèles sont ajoutés par la communauté open source (grâce à tous les contributeurs?).
La nouvelle version V0.1.2 comprend une tâche de pré-formation, de nombreux exemples, des ensembles de données OGB, des méthodes d'intégration de graphiques de connaissances et des modèles de réseau neuronal graphique. La couverture du COGDL est augmentée à 80%. Certaines nouvelles API, comme Trainer et Sampler , sont développées et testées.
La nouvelle version V0.1.1 comprend la tâche de prédiction des liens de connaissances, de nombreux modèles de pointe et le support optuna . Nous avons également un article de WeChat chinois sur la version COGDL.
Veuillez suivre les instructions ici pour installer Pytorch (https://github.com/pytorch/pytorch#installation).
Lorsque Pytorch a été installé, le COGDL peut être installé à l'aide de PIP comme suit:
pip install cogdlInstaller à partir de la source via:
pip install git+https://github.com/thudm/cogdl.gitOu cloner le référentiel et installer avec les commandes suivantes:
git clone [email protected]:THUDM/cogdl.git
cd cogdl
pip install -e . Vous pouvez exécuter toutes sortes d'expériences via des API COGDL, en particulier experiment . Vous pouvez également utiliser vos propres ensembles de données et modèles pour des expériences. Un exemple rapide se trouve dans le Quick_start.py. Plus d'exemples sont fournis dans les exemples /.
from cogdl import experiment
# basic usage
experiment ( dataset = "cora" , model = "gcn" )
# set other hyper-parameters
experiment ( dataset = "cora" , model = "gcn" , hidden_size = 32 , epochs = 200 )
# run over multiple models on different seeds
experiment ( dataset = "cora" , model = [ "gcn" , "gat" ], seed = [ 1 , 2 ])
# automl usage
def search_space ( trial ):
return {
"lr" : trial . suggest_categorical ( "lr" , [ 1e-3 , 5e-3 , 1e-2 ]),
"hidden_size" : trial . suggest_categorical ( "hidden_size" , [ 32 , 64 , 128 ]),
"dropout" : trial . suggest_uniform ( "dropout" , 0.5 , 0.8 ),
}
experiment ( dataset = "cora" , model = "gcn" , seed = [ 1 , 2 ], search_space = search_space ) Vous pouvez également utiliser python scripts/train.py --dataset example_dataset --model example_model pour exécuter example_model sur example_data.
cora citeseer . Les ensembles de données pris en charge incluent «Cora», «Citeseer», «Pumbed», «PPI», «Wikipedia», «Blogcatalog», «Flickr». D'autres ensembles de données peuvent être trouvés dans les ensembles de données COGDL /.gcn gat . Les modèles pris en charge incluent «gcn», «gat», «graphsage», «Deepwalk», «node2vec», «espoir», «Grarep», «netmf», «netsmf», «sujettent». Plus de modèles peuvent être trouvés dans les modèles COGDL /.Par exemple, si vous souhaitez exécuter GCN et GAT sur l'ensemble de données CORA, avec 5 graines différentes:
python scripts/train.py --dataset cora --model gcn gat --seed 0 1 2 3 4Sortie attendue:
| Variante | test_acc | val_acc |
|---|---|---|
| ('Cora', 'GCN') | 0,8050 ± 0,0047 | 0,7940 ± 0,0063 |
| ('Cora', 'Gat') | 0,8234 ± 0,0042 | 0,8088 ± 0,0016 |
Si vous avez des difficultés à faire fonctionner les choses dans les étapes ci-dessus, n'hésitez pas à ouvrir un problème. Vous pouvez vous attendre à une réponse dans les 24 heures.
Si vous avez un algorithme bien performant et que vous êtes prêt à l'implémenter dans notre boîte à outils pour aider davantage de personnes, vous pouvez d'abord ouvrir un problème, puis créer une demande de traction, des informations détaillées peuvent être trouvées ici.
Avant de commettre votre modification, veuillez d'abord exécuter pre-commit install pour configurer le crochet GIT pour vérifier le format de code et le style à l'aide de black et flake8 . Ensuite, le pre-commit fonctionnera automatiquement sur git commit ! Des informations détaillées sur pre-commit peuvent être trouvées ici.
Si vous souhaitez exécuter des expériences parallèles sur votre serveur avec plusieurs GPU sur plusieurs modèles, GCN et GAT, sur l'ensemble de données CORA:
$ python scripts/train.py --dataset cora --model gcn gat --hidden-size 64 --devices 0 1 --seed 0 1 2 3 4Sortie attendue:
| Variante | Accrocheur |
|---|---|
| ('Cora', 'GCN') | 0,8236 ± 0,0033 |
| ('Cora', 'Gat') | 0,8262 ± 0,0032 |
Vous pourriez être confondu pourquoi votre demande de traction a été rejetée en raison du problème de la «couverture diminuée ...» même si votre modèle fonctionne bien localement. En effet, vous n'avez pas inclus de test unitaire, qui exécute essentiellement les lignes de code supplémentaires que vous avez ajoutées. Le service Travis CI utilisé par GitHub effectue tous les tests unitaires sur le code que vous avez commis et vérifie le nombre de lignes du code par les tests unitaires, et si une partie importante de votre code n'a pas été vérifiée (couverture insuffisante), la demande de traction est rejetée.
Alors, comment faites-vous un test unitaire?
models/nn/abcgnn.py qui fait la tâche de la classification des nœuds. Ensuite, vous devez ajouter un test unitaire à l'intérieur des tests/tasks/test_node_classification.py (ou quelle que soit la tâche pertinente que votre modèle fait).tests/tasks/test_node_classification.py , engagez-le avec vos models/nn/abcgnn.py et votre demande de traction doit passer. Le COGDL est développé et entretenu par Tsinghua, Zju, Damo Academy et Zhipu.ai.
L'équipe de développement de base peut être contactée à [email protected].
Veuillez citer notre article si vous trouvez notre code ou nos résultats utiles pour vos recherches:
@inproceedings{cen2023cogdl,
title={CogDL: A Comprehensive Library for Graph Deep Learning},
author={Yukuo Cen and Zhenyu Hou and Yan Wang and Qibin Chen and Yizhen Luo and Zhongming Yu and Hengrui Zhang and Xingcheng Yao and Aohan Zeng and Shiguang Guo and Yuxiao Dong and Yang Yang and Peng Zhang and Guohao Dai and Yu Wang and Chang Zhou and Hongxia Yang and Jie Tang},
booktitle={Proceedings of the ACM Web Conference 2023 (WWW'23)},
year={2023}
}