이번 프로젝트는 NVIDIA DLI(Deep Learning Institute) 강좌 "Fundamentals of Accelerated Data Science"에서 학습한 GPU 가속 그래프 분석 내용을 포트폴리오 형태로 재구성한 프로젝트입니다. 영국 전체 도로망(Great Britain Road Network)을 본뜬 합성 데이터를 직접 설계하여, 데이터 수집부터 그래프 구축, 최단 경로 탐색, 중심성 분석까지 전체 파이프라인을 하나의 실행 스크립트로 완성했습니다.
해당 프로젝트는 cuDF/cuGraph 없이도 동일한 분석 흐름을 pandas + NetworkX로 재현할 수 있도록 설계했으며, 시각화 자료 7종을 자동으로 저장하여 분석 결과를 직관적으로 확인할 수 있습니다.
road-network-graph-analytics/
├── plots/
│ ├── 01_data_overview.png # 도로망 데이터 기초 통계 대시보드
│ ├── 02_sssp_spatial.png # SSSP 결과 공간 히트맵 (거리 / 이동시간)
│ ├── 03_sssp_distribution.png # SSSP 거리·시간 분포 비교
│ ├── 04_centrality_top20.png # 중심성 5종 Top-20 노드 + 상관 행렬
│ ├── 05_centrality_spatial.png # 중심성 공간 분포 + Degree vs PageRank
│ ├── 06_backend_methods.png # nx-cugraph 3가지 백엔드 방식 정리
│ └── 07_summary_card.png # 핵심 수치 요약 대시보드
├── src/
│ ├──main.py # 전체 분석 파이프라인 통합 실행 스크립트
├─ .gitignore
├─ LICENSE
├─ README.md # 프로젝트 개요 및 가이드 문서
└─ requirements.txt # 핵심 라이브러리 목록
| 학습 키워드 | 핵심 구현 내용 및 목표 |
|---|---|
| GPU 전처리 최적화 | cuGraph 입력 제약에 맞춰 문자열 노드 ID(#)를 정수 인덱스로 정제·매핑 |
| 피처 엔지니어링 | 제한 속도(mph)를 변환하여, 물리적 거리가 아닌 '실제 이동 시간(s)' 가중치 도출 |
| 알고리즘 가중치 해석 | '거리'와 '시간' 기반의 Dijkstra(SSSP)를 분리 실행하여 탐색 결과의 차이 증명 |
| 가속 추상화 레이어 | nx-cugraph의 3가지 백엔드 실행 방식별 장단점 및 트레이드오프 체계화 |
| 중심성의 다차원 분석 | 5종 중심성 지표 동시 산출 및 상관 행렬 분석을 통한 노드 중요도의 다각적 해석 |
| 지표 | 값 |
|---|---|
| 노드 수 | 1,225개 |
| 엣지 수 | 2,622개 |
| 평균 차수 | 4.28 |
| 최대 차수 | 7 |
| 연결 컴포넌트 | 1개 (전체 연결 그래프) |
| 구분 | 평균 | 최대 | 중앙값 |
|---|---|---|---|
| 거리 기반 (m) | 65,101 | 136,956 | 65,759 |
| 시간 기반 (s) | 3,363 | 6,752 | 3,436 |
| 알고리즘 | 정의 | Top-1 노드 | 특징 |
|---|---|---|---|
| Degree | 직접 연결 수 기반 | Node 383 | 격자 중심부의 교차점에 집중 |
| Betweenness | 최단 경로 경유 횟수 | Node 716 | Degree Top 노드와 불일치 → 교두보 역할 노드 별도 존재 |
| Katz | 직·간접 연결 전역 영향 | Node 1096 | 인근 고연결 노드를 많이 보유한 군집 중심 |
| PageRank | 링크 품질 가중 중요도 | Node 1178 | 중요한 노드들과 연결된 노드가 높은 점수 |
| Eigenvector | 이웃 중요도 합산 | Node 1096 | Katz와 유사 패턴이나 지역적 군집에 더 민감 |
인사이트: Betweenness Centrality Top 노드가 Degree Top 노드와 다르게 나타남. 직접 연결이 많은 허브와 실제 정보 흐름의 병목(교두보) 역할을 하는 노드는 별개라는 점이 도로망 설계에 중요한 시사점을 제공함.
이번 포트폴리오 작성에 앞선 학습에서는 실제 GB 도로 데이터(GML 포맷)를 NVIDIA GPU 위에서 cuDF와 cuGraph로 분석했는데, 이 과정에서 가장 인상 깊었던 부분이 두 가지였습니다. 첫 번째는 수백만 개 노드·엣지로 구성된 거대한 도로망 그래프에서 SSSP(단일 출발지 최단 경로)를 CPU 대비 몇 배나 빠르게 풀어내는 장면이었고, 두 번째는 NetworkX라는 기존에 익숙한 라이브러리에 backend='cugraph'라는 인수 하나만 추가해도 GPU 가속이 적용된다는 점이었습니다. 알고리즘 자체가 아닌 '연산 기반(backend)'이라는 추상화 수준에서 가속을 제어한다는 발상이 굉장히 실용적이라고 느꼈습니다.
솔직히 처음 RAPIDS라는 이름을 들었을 때는 'GPU로 데이터 분석을 빠르게 한다'는 게 막연하게 느껴졌습니다. 딥러닝 모델 학습에 GPU를 쓰는 건 자연스럽게 받아들였는데, 데이터 전처리나 그래프 탐색 같은 알고리즘도 GPU로 가속한다는 발상이 처음엔 잘 와닿지 않았습니다. 하지만 영국 전체 도로망처럼 수백만 개의 노드와 엣지를 담은 그래프에서, CPU 기반 NetworkX로는 수분이 걸릴 최단 경로 계산을 cuGraph가 단 몇 초 만에 끝내는 장면을 보고나서는 이전에 가졌던 막연함이 사라졌습니다. 더 놀라웠던 건 그 코드가 cg.sssp(G, source_vertex) 한 줄이라는 점이었습니다. 단지 데이터가 CPU 메모리가 아닌 GPU 메모리에 올라가 있고, 내부적으로 수천 개의 CUDA 코어가 병렬로 경로를 탐색하고 있을 뿐 전혀 어렵고 복잡한 게 아니었습니다.
데이터 전처리 과정에서도 꽤 인상적인 경험이 있었습니다. 원본 GML 파일에서 추출된 도로 노드 ID가 #osgb4000000029853419 형태의 긴 문자열인데, cuGraph는 정수 인덱스만 입력으로 받습니다. 처음엔 왜 굳이 이런 제약이 있을까 불편하게 생각했는데, 생각해보면 당연한 이야기였습니다. GPU는 연속된 정수 인덱스로 배열에 접근할 때 가장 빠르게 동작하도록 설계되어 있기 때문에 그 제약이 불편함이 아니라, GPU 아키텍처에서 비롯된 필연적인 요구사항이라는 걸 이해하고 나니 전처리 파이프라인 설계 자체가 다르게 보이기 시작했습니다.
중심성 분석 파트에서는 예상치 못한 결과가 나와 오히려 더 많이 배웠습니다. 직접 연결이 가장 많은 허브 노드(Degree Centrality 1위)와 실제 정보 흐름의 병목이 되는 노드(Betweenness Centrality 1위)가 완전히 다른 노드였습니다. 도로망으로 비유하면, 차선이 많아서 넓은 교차로가 반드시 물류의 핵심 관문은 아닐 수 있다는 뜻입니다. 알고리즘마다 '중요함'의 정의가 근본적으로 다르기 때문에, 어떤 문제를 풀고 싶은지에 따라 지표를 선택해야 한다는 것을 직접 데이터로 확인하였습니다. 교과서에서 읽은 내용이 숫자로 증명되는 순간이라 기억에 남았습니다.
이번 프로젝트의 합성 데이터는 규모가 작지만, 실제 수백만 노드짜리 GB 도로망에서도 파이프라인 구조 자체는 동일합니다. 데이터 규모가 커질수록 GPU 가속의 필요성도 커진다는 점에서, 이번 학습은 단순한 실습을 넘어 대용량 데이터 처리에 대한 시야를 넓히는 계기가 됐습니다. 앞으로는 실제 공공 도로 데이터(국가공간정보포털 등)를 활용하거나, 소셜 네트워크·물류 네트워크 등 다른 도메인의 그래프 문제에 이번 경험을 확장해 보고 싶습니다.
- NVIDIA Deep Learning Institute — Fundamentals of Accelerated Data Science
- cuGraph: GPU-Accelerated Graph Analytics (RAPIDS AI, 2024)
- nx-cugraph: NetworkX GPU Backend (RAPIDS AI, 2024)
- NetworkX: Network Analysis in Python (Hagberg et al., 2008)
- A Faster Algorithm for Betweenness Centrality (Brandes, 2001)
- PageRank: The Anatomy of a Large-Scale Hypertextual Web Search Engine (Page et al., 1998)






