> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PyTorch Geometric

> W&B を PyTorch Geometric と統合して、幾何学的ディープラーニングにおけるグラフの可視化と実験管理を行います。

[PyTorch Geometric](https://github.com/pyg-team/pytorch_geometric) (PyG) は幾何学的ディープラーニング用のライブラリです。W\&B と組み合わせると、グラフの可視化や実験のトラッキングを行えます。

このガイドでは、W\&B での認証、`wandb` ライブラリのインストール、PyVis または Plotly を使用した PyG グラフの可視化、PyG のワークフローからトレーニングメトリクスをログする方法について説明します。このガイドを参考に、W\&B で実験をトラッキングし、グラフの可視化を共有してください。

PyTorch Geometric をインストールしたら、以下の手順に従って始めましょう。

<h2 id="sign-up-and-create-an-api-key">
  サインアップして APIキーを作成する
</h2>

APIキーは、お使いのマシンを W\&B で認証するために使用します。APIキーはユーザープロフィールから発行できます。

<Note>
  より簡単な方法として、[User Settings](https://forge.coreweave.com/settings) に移動して APIキーを作成することもできます。作成した APIキーはすぐにコピーし、パスワードマネージャーなどの安全な場所に保存してください。
</Note>

1. 右上のユーザープロフィールアイコンをクリックします。
2. **User Settings** を選択し、**API Keys** セクションまでスクロールします。

<h2 id="install-the-wandb-library-and-log-in">
  `wandb` ライブラリをインストールしてログインする
</h2>

`wandb` ライブラリをローカルにインストールしてログインするには、次の手順を実行します。

<Tabs>
  <Tab title="Command Line">
    1. `WANDB_API_KEY` [環境変数](/ja/products/wandb/track/environment-variables)に APIキーを設定します。`<>` で囲まれた値は、ご自身の値に置き換えてください。

       ```bash theme={"system"}
       export WANDB_API_KEY=<your_api_key>
       ```

    2. `wandb` ライブラリをインストールしてログインします。

       ```bash theme={"system"}
       pip install wandb

       wandb login
       ```
  </Tab>

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

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

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

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

<h2 id="visualize-the-graphs">
  グラフを可視化する
</h2>

ログインすると、グラフの可視化と run データを W\&B に送信できるようになります。

エッジ数やノード数など、入力グラフに関する詳細情報を保存できます。W\&B は Plotly チャートと HTML パネルのログをサポートしているため、グラフ用に作成した可視化も W\&B にログできます。以下のセクションでは、よく使われる 2 つの方法として、インタラクティブな HTML 可視化を作成できる PyVis と、チャートベースの可視化を作成できる Plotly を紹介します。

<h3 id="use-pyvis">
  PyVis を使用する
</h3>

次のスニペットは、PyVis と HTML を使用してグラフを可視化する方法を示しています。

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

    # PyG グラフのエッジを 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)

    # PyVis の可視化を HTML ファイルに保存します
    net.show("graph.html")
    run.log({"eda/graph": wandb.Html("graph.html")})
```

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/pyg_graph_wandb.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=4ce993545929de04d41a487948821f7b" alt="インタラクティブなグラフの可視化" width="1128" height="1120" data-path="products/wandb/_media/pyg_graph_wandb.png" />
</Frame>

<h3 id="use-plotly">
  Plotly を使用する
</h3>

Plotly でグラフの可視化を作成するには、まず PyG グラフを networkx オブジェクトに変換します。次に、ノードとエッジのそれぞれについて Plotly の散布図を作成します。これには次のスニペットを使用してください。

```python theme={"system"}
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/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/pyg_graph_plotly.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=3deabcd8fc683e4dcf6ac4495dd03125" alt="サンプル関数を使用して作成し、W&B 表にログした可視化。" width="1999" height="644" data-path="products/wandb/_media/pyg_graph_plotly.png" />
</Frame>

<h2 id="log-metrics">
  メトリクスをログする
</h2>

グラフの可視化に加えて、W\&B を使用すると、実験のほか、損失関数や精度などの関連メトリクスもトラッキングできます。トレーニングループに次のコードを追加してください。

```python theme={"system"}
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/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/pyg_metrics.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=c4ab3efbe0dec7b76ca97d1234655654" alt="エポックごとの hits@K メトリクス" width="1999" height="1219" data-path="products/wandb/_media/pyg_metrics.png" />
</Frame>

グラフの可視化とトレーニングメトリクスを W\&B にログすると、W\&B の Workspace で run を比較したり、PyG の実験結果を共有したりできます。

<h2 id="more-resources">
  その他のリソース
</h2>

PyG の実際の活用例については、以下の W\&B report を参照してください。

* [Recommending Amazon Products using Graph Neural Networks in PyTorch Geometric](https://forge.coreweave.com/wandb/manan-goel/gnn-recommender/reports/Recommending-Amazon-Products-using-Graph-Neural-Networks-in-PyTorch-Geometric--VmlldzozMTA3MzYw#what-does-the-data-look-like?)
* [Point Cloud Classification using PyTorch Geometric](https://forge.coreweave.com/wandb/geekyrakshit/pyg-point-cloud/reports/Point-Cloud-Classification-using-PyTorch-Geometric--VmlldzozMTExMTE3)
* [Point Cloud Segmentation using PyTorch Geometric](https://forge.coreweave.com/wandb/wandb/point-cloud-segmentation/reports/Point-Cloud-Segmentation-using-Dynamic-Graph-CNN--VmlldzozMTk5MDcy)
