> ## 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

> Integrate W&B with PyTorch Geometric for graph visualization and experiment tracking in geometric deep learning.

[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` [환경 변수](/ko/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에 로깅할 수 있습니다. 다음 섹션에서는 일반적으로 많이 쓰는 두 가지 방법으로, 대화형 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 Table에 로깅한 시각화" 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 워크스페이스에서 PyG 실험의 run을 비교하고 결과를 공유할 수 있습니다.

<h2 id="more-resources">
  추가 자료
</h2>

다음 W\&B Reports에서 PyG의 실제 활용 사례를 확인할 수 있습니다.

* [PyTorch Geometric의 그래프 신경망을 활용한 Amazon 상품 추천](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?)
* [PyTorch Geometric을 활용한 포인트 클라우드 분류](https://forge.coreweave.com/wandb/geekyrakshit/pyg-point-cloud/reports/Point-Cloud-Classification-using-PyTorch-Geometric--VmlldzozMTExMTE3)
* [PyTorch Geometric을 활용한 포인트 클라우드 세그멘테이션](https://forge.coreweave.com/wandb/wandb/point-cloud-segmentation/reports/Point-Cloud-Segmentation-using-Dynamic-Graph-CNN--VmlldzozMTk5MDcy)


## Related topics

- [PyTorch](/ko/products/wandb/integrations/pytorch.md)
