> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-2751.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# PyTorch Geometric

> Intégrez W&B à PyTorch Geometric pour la visualisation de graphes et le suivi des expériences en apprentissage profond géométrique.

[PyTorch Geometric](https://github.com/pyg-team/pytorch_geometric) (PyG) est une bibliothèque de deep learning géométrique, et W\&B s’y intègre bien pour visualiser des graphes et suivre les expériences.

Ce guide vous montre comment vous authentifier à W\&B, installer la bibliothèque `wandb`, visualiser des graphes PyG avec PyVis ou Plotly, et journaliser les métriques d’entraînement de vos flux de travail PyG. Utilisez-le pour suivre les expériences et partager des visualisations de graphes dans W\&B.

Après avoir installé PyTorch Geometric, suivez ces étapes pour démarrer.

<div id="sign-up-and-create-an-api-key">
  ## Inscrivez-vous et créez une clé API
</div>

Une clé API authentifie votre machine auprès de W\&B. Vous pouvez générer une clé API à partir de votre profil.

<Note>
  Pour une méthode plus directe, accédez aux [Paramètres utilisateur](https://wandb.ai/settings) et créez une clé API. Copiez immédiatement la clé API et conservez-la dans un endroit sûr, par exemple dans un gestionnaire de mots de passe.
</Note>

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**.

<div id="install-the-wandb-library-and-log-in">
  ## Installez la bibliothèque `wandb` et connectez-vous
</div>

Pour installer la bibliothèque `wandb` en local et vous connecter :

<Tabs>
  <Tab title="Ligne de commande">
    1. Définissez la [variable d'environnement](/fr/models/track/environment-variables/) `WANDB_API_KEY` avec votre clé API. Remplacez les valeurs entre `<>` par les vôtres :

       ```bash theme={null}
       export WANDB_API_KEY=<your_api_key>
       ```

    2. Installez la bibliothèque `wandb` et connectez-vous.

       ```bash theme={null}
       pip install wandb

       wandb login
       ```
  </Tab>

  <Tab title="Python">
    ```bash theme={null}
    pip install wandb
    ```

    ```python theme={null}
    import wandb
    wandb.login()
    ```
  </Tab>

  <Tab title="Python notebook">
    ```python theme={null}
    !pip install wandb

    import wandb
    wandb.login()
    ```
  </Tab>
</Tabs>

<div id="visualize-the-graphs">
  ## Visualisez les graphes
</div>

Après vous être connecté, vous pouvez commencer à envoyer des visualisations de graphes et des données d'exécution à W\&B.

Vous pouvez enregistrer des informations sur les graphes d'entrée, notamment le nombre d'arêtes, le nombre de nœuds, etc. W\&B prend en charge la journalisation des graphiques Plotly et des panneaux HTML, vous pouvez donc également journaliser dans W\&B toutes les visualisations que vous créez pour votre graphe. Les sections suivantes présentent deux approches courantes : PyVis pour les visualisations HTML interactives et Plotly pour les visualisations sous forme de graphiques.

<div id="use-pyvis">
  ### Utiliser PyVis
</div>

L’extrait suivant montre comment procéder avec PyVis et HTML.

```python theme={null}
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")})
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-2751/26y6qBOOzah48_IG/images/integrations/pyg_graph_wandb.png?fit=max&auto=format&n=26y6qBOOzah48_IG&q=85&s=976ac9f0c9aa2da5828c55ccbc016571" alt="Visualisation interactive de graphe" width="1128" height="1120" data-path="images/integrations/pyg_graph_wandb.png" />
</Frame>

<div id="use-plotly">
  ### Utiliser Plotly
</div>

Pour utiliser Plotly afin de créer une visualisation de graphe, convertissez d’abord le graphe PyG en objet NetworkX. Créez ensuite des graphiques de dispersion Plotly pour les nœuds et les arêtes. Utilisez l’extrait suivant pour cette tâche.

```python theme={null}
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))})
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-2751/26y6qBOOzah48_IG/images/integrations/pyg_graph_plotly.png?fit=max&auto=format&n=26y6qBOOzah48_IG&q=85&s=b0ade416f1630289555cd1fecd02a3f5" alt="Une visualisation créée à l’aide de la fonction d’exemple et enregistrée dans un tableau W&B." width="1999" height="644" data-path="images/integrations/pyg_graph_plotly.png" />
</Frame>

<div id="log-metrics">
  ## Journaliser des métriques
</div>

En plus des visualisations de graphe, 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 les lignes suivantes à votre boucle d'entraînement :

```python theme={null}
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
        })
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-2751/26y6qBOOzah48_IG/images/integrations/pyg_metrics.png?fit=max&auto=format&n=26y6qBOOzah48_IG&q=85&s=232382f5f2dc230dd08fde7861847183" alt="métriques hits@K au fil des époques" width="1999" height="1219" data-path="images/integrations/pyg_metrics.png" />
</Frame>

Avec les visualisations de graphes et les métriques d'entraînement journalisées dans W\&B, vous pouvez comparer les runs et partager les résultats de vos expériences PyG dans votre espace de travail W\&B.

<div id="more-resources">
  ## Plus de ressources
</div>

Les W\&B Reports suivants montrent PyG en action :

* [Recommandation de produits Amazon à l’aide de réseaux neuronaux de graphes avec PyTorch Geometric](https://wandb.ai/manan-goel/gnn-recommender/reports/Recommending-Amazon-Products-using-Graph-Neural-Networks-in-PyTorch-Geometric--VmlldzozMTA3MzYw#what-does-the-data-look-like?)
* [Classification de nuages de points avec PyTorch Geometric](https://wandb.ai/geekyrakshit/pyg-point-cloud/reports/Point-Cloud-Classification-using-PyTorch-Geometric--VmlldzozMTExMTE3)
* [Segmentation de nuages de points avec PyTorch Geometric](https://wandb.ai/wandb/point-cloud-segmentation/reports/Point-Cloud-Segmentation-using-Dynamic-Graph-CNN--VmlldzozMTk5MDcy)
