Passer au contenu principal
PyTorch Geometric, ou PyG, est l’une des bibliothèques les plus populaires pour le deep learning géométrique, et W&B s’y intègre extrêmement bien pour visualiser des graphes et suivre les expériences. Après avoir installé PyTorch Geometric, suivez ces étapes pour démarrer.

Inscrivez-vous et créez une clé API

Une clé API authentifie votre machine auprès de W&B. Vous pouvez générer une clé API à partir de votre profil.
Pour une méthode plus directe, créez une clé API en accédant directement aux Paramètres utilisateur. Copiez immédiatement la clé API nouvellement créée et conservez-la dans un endroit sûr, par exemple dans un gestionnaire de mots de passe.
  1. Cliquez sur l’icône de votre profil en haut à droite.
  2. Sélectionnez Paramètres utilisateur, puis faites défiler la page jusqu’à la section Clés API.

Installez la bibliothèque wandb et connectez-vous

Pour installer la bibliothèque wandb en local et vous connecter :
  1. Définissez la variable d’environnement WANDB_API_KEY avec votre clé API.
    export WANDB_API_KEY=<your_api_key>
    
  2. Installez la bibliothèque wandb et connectez-vous.
    pip install wandb
    
    wandb login
    

Visualiser les graphes

Vous pouvez enregistrer des informations sur les graphes en entrée, notamment le nombre d’arêtes, le nombre de nœuds, etc. W&B prend en charge la consignation de graphiques Plotly et de panneaux HTML, de sorte que toutes les visualisations que vous créez pour votre graphe peuvent également être consignées dans W&B.

Utiliser PyVis

L’extrait suivant montre comment procéder avec PyVis et HTML.
from pyvis.network import Network
import wandb

with wandb.init(project=’graph_vis’) as run:
    net = Network(height="750px", width="100%", bgcolor="#222222", font_color="white")

    # Ajouter les arêtes du graphe PyG au réseau PyVis
    for e in tqdm(g.edge_index.T):
        src = e[0].item()
        dst = e[1].item()

        net.add_node(dst)
        net.add_node(src)
        
        net.add_edge(src, dst, value=0.1)

    # Enregistrer la visualisation PyVis dans un fichier HTML
    net.show("graph.html")
    run.log({"eda/graph": wandb.Html("graph.html")})
Visualisation interactive de graphes

Utiliser Plotly

Pour utiliser Plotly afin de créer une visualisation de graphe, vous devez d’abord convertir le graphe PyG en objet NetworkX. Vous devrez ensuite créer des graphiques de dispersion Plotly pour les nœuds et les arêtes. L’extrait ci-dessous peut être utilisé pour cette tâche.
def create_vis(graph):
    G = to_networkx(graph)
    pos = nx.spring_layout(G)

    edge_x = []
    edge_y = []
    for edge in G.edges():
        x0, y0 = pos[edge[0]]
        x1, y1 = pos[edge[1]]
        edge_x.append(x0)
        edge_x.append(x1)
        edge_x.append(None)
        edge_y.append(y0)
        edge_y.append(y1)
        edge_y.append(None)

    edge_trace = go.Scatter(
        x=edge_x, y=edge_y,
        line=dict(width=0.5, color='#888'),
        hoverinfo='none',
        mode='lines'
    )

    node_x = []
    node_y = []
    for node in G.nodes():
        x, y = pos[node]
        node_x.append(x)
        node_y.append(y)

    node_trace = go.Scatter(
        x=node_x, y=node_y,
        mode='markers',
        hoverinfo='text',
        line_width=2
    )

    fig = go.Figure(data=[edge_trace, node_trace], layout=go.Layout())

    return fig


with wandb.init(project=’visualize_graph’) as run:
    run.log({‘graph’: wandb.Plotly(create_vis(graph))})
Une visualisation créée à l’aide de la fonction d’exemple et enregistrée dans un tableau W&B.

Consigner des métriques

Vous pouvez utiliser W&B pour suivre vos expériences et les métriques associées, comme les fonctions de perte, la précision, entre autres. Ajoutez la ligne suivante à votre boucle d’entraînement :
with wandb.init(project="my_project", entity="my_entity") as run:
    run.log({
        'train/loss': training_loss,
        'train/acc': training_acc,
        'val/loss': validation_loss,
        'val/acc': validation_acc
        })
métriques hits@K au fil des époques

Plus de ressources