GNN-based Reinforcement Learning for Robust TSN Routing

A research project on robust network routing using Graph Attention Networks and Reinforcement Learning.

View the Project on GitHub hwkim3330/GNN

지능형 TSN 라우팅 최적화: 경로 채점 GNN 아키텍처

1. 프로젝트 개요

이 프로젝트는 복잡하고 동적인 TSN(Time-Sensitive Networking) 환경에서 다수의 데이터 플로우에 대한 최적의 주 경로(Primary Path) 및 예비 경로(Backup Path)를 자동으로 설정하는 고성능 지능형 라우팅 솔루션입니다.

문제를 근본적으로 단순화하고 학습 안정성을 극대화하기 위해, 기존의 한 홉씩 경로를 예측하는(hop-by-hop) 방식 대신 “후보 경로 생성 및 채점(Candidate Generation & Scoring)” 아키텍처를 채택했습니다.

이 아키텍처는 학습 과정을 안정시키고, 모델이 더 거시적인 관점에서 라우팅 품질을 평가하도록 유도하여 기존 방식의 한계를 극복합니다.

2. 학습 파이프라인

본 솔루션은 두 단계의 정교한 학습 파이프라인을 통해 전문가 수준의 성능을 달성합니다.

  1. 1단계: 전문가 모방 학습 (ILP-Guided Imitation Learning)
    • 수학적으로 최적해를 보장하는 ILP(Integer Linear Programming) 솔버를 ‘전문가(Oracle)’로 활용합니다.
    • ILP가 다양한 시나리오에서 생성한 고품질의 경로 결정 데이터를 수집합니다.
    • GNN은 이 전문가 데이터를 학습하여, ILP의 깊은 “통찰력”과 의사결정 패턴을 모방합니다. 이 단계에서 CrossEntropyLoss를 사용하여 전문가가 선택한 경로를 GNN도 선택하도록 훈련합니다.
  2. 2단계: 온라인 강화학습 (PPO-like Policy Gradient)
    • 모방 학습으로 기본기를 다진 GNN을 실제 시뮬레이션 환경에 투입하여 스스로 정책을 개선하도록 합니다.
    • 에이전트는 후보 경로 중 하나를 확률적으로 선택(탐험, Exploration)하고, 그 결과로 얻은 시나리오의 최종 점수를 보상(Reward)으로 받습니다.
    • 높은 보상을 받은 선택의 확률은 높이고, 낮은 보상을 받은 선택의 확률은 낮추는 정책 경사(Policy Gradient) 방식으로 학습을 진행하며 ILP를 뛰어넘는 최적의 “경로 선택 정책”을 찾아냅니다.

3. 핵심 기능 및 특징

4. 시스템 요구사항 및 설치

5. 실행 방법

  1. 전체 파이프라인 실행:
    • 터미널에서 아래 명령어를 실행하여 모방 학습, 온라인 학습, 최종 벤치마크를 순차적으로 진행합니다.
      python main.py
      

      (여기서 main.py는 제공된 파이썬 스크립트의 파일명입니다.)

  2. 실행 과정 및 결과물:
    • 데이터셋 생성: ILP를 사용하여 IMITATION_DATASET_SIZE 만큼의 전문가 데이터를 생성합니다. (시간이 소요될 수 있습니다)
    • 모방 학습: 생성된 데이터셋으로 GNN을 IMITATION_EPOCHS 만큼 학습하고, MODEL_PATH에 모델을 저장합니다.
    • 온라인 학습: 저장된 모델을 불러와 ONLINE_EPISODES 만큼 강화학습을 진행하고, 최종 모델을 MODEL_PATH에 덮어씁니다.
    • 벤치마크: 최종 학습된 GNN 모델을 Greedy, ILP와 함께 벤치마크합니다.
    • 콘솔에 최종 성능 요약 테이블이 출력되고, 실행 결과 그래프가 benchmark_results_ilp_ppo.png 파일로 저장됩니다.

      -

    • GNN 기반 현실적 TSN 라우팅 최적화 솔버 (v2.0)

1. 프로젝트 개요

이 프로젝트는 시간 민감형 네트워크(Time-Sensitive Networking, TSN) 환경에서 다수의 데이터 플로우에 대한 최적의 주 경로(Primary Path) 및 예비 경로(Backup Path)를 자동으로 설정하는 지능형 라우팅 솔루션입니다.

GraphSAGE 신경망과 PPO 강화학습 알고리즘을 사용하여, “무엇을 입력하면, 무엇이 출력되는가”를 명확히 정의합니다.

궁극적인 목표는, 수학적으로 완벽하지만 매우 느린 ILP 솔버를, 빠른 속도로 ILP와 대등하거나 그 이상의 성능을 내는 GNN 솔버로 대체하는 것입니다.

2. 핵심 기능

3. 시스템 요구사항 및 설치

4. 실행 방법 및 결과물

  1. 전체 파이프라인 실행:
    • 터미널에서 아래 명령어를 실행하여 모방 학습, 온라인 학습, 최종 벤치마크를 순차적으로 진행합니다.
      python main.py
      

      (여기서 main.py는 제공된 파이썬 스크립트의 파일명입니다.)

    • 주의: 학습 과정은 CPU 성능에 따라 수십 분에서 수 시간까지 소요될 수 있습니다. IMITATION_EPISODESONLINE_EPISODES 값을 조절하여 실행 시간을 제어할 수 있습니다.
  2. 실행 결과물:
    • 학습된 모델 파일:
      • gnn_graphsage_imitated_final.pth: 1단계 모방 학습 완료 모델
      • gnn_graphsage_final.pth: 2단계 온라인 학습까지 완료된 최종 모델
    • 콘솔 출력:
      • 학습 단계별 Loss 및 Score 진행 상황이 실시간으로 출력됩니다.
      • 최종적으로 각 솔버(GNN, Greedy, ILP)의 평균 성능 점수와 평균 계산 시간을 요약한 벤치마크 테이블이 표시됩니다.
    • 결과 그래프 (benchmark_results_graphsage_final.png):
      • 벤치마크 결과를 시각화한 막대그래프가 이미지 파일로 저장됩니다.
      • 상단 그래프: 성능 점수 비교 (높을수록 좋음)
      • 하단 그래프: 계산 시간 비교 (낮을수록 좋음, Y축은 log scale)

5. 코드 구조 및 핵심 로직

GNN 기반 현실적 TSN 라우팅 최적화 솔버

1. 프로젝트 개요

이 프로젝트는 시간 민감형 네트워크(Time-Sensitive Networking, TSN) 환경에서 데이터 플로우의 경로를 최적화하는 강화학습 기반 솔루션을 제공합니다. 특히, 실제 네트워크 환경과 유사한 조건에서 GNN(Graph Neural Network) 에이전트의 성능을 극대화하는 데 초점을 맞춥니다.

GraphSAGE 모델과 PPO(Proximal Policy Optimization) 알고리즘을 사용하여, 속도가 빠른 Greedy 알고리즘과 성능이 우수한 ILP(Integer Linear Programming)의 장점을 결합하고자 합니다. 최종 목표는 ILP에 준하는 높은 품질의 라우팅 해를 Greedy처럼 빠른 속도로 찾아내는 것입니다.

2. 핵심 기능

3. 시스템 요구사항

4. 설치 가이드

  1. 프로젝트 파일 준비
    • 이 프로젝트의 파이썬 코드(main.py)와 requirements.txt, README.md 파일을 하나의 디렉토리에 저장합니다.
  2. 가상 환경 생성 및 활성화 (권장)
    python -m venv venv
    # Windows
    .\venv\Scripts\activate
    # macOS / Linux
    source venv/bin/activate
    
  3. PyTorch 설치 (CPU 버전)
    • 시스템에 맞는 PyTorch 설치 명령어는 PyTorch 공식 홈페이지에서 확인하는 것이 가장 정확합니다.
    • 일반적인 CPU 버전 설치 명령어는 다음과 같습니다.
      pip install torch torchvision torchaudio
      
  4. PyG (PyTorch Geometric) 설치
    • PyG는 PyTorch 버전에 맞춰 설치해야 합니다. 아래 명령어는 PyTorch 2.0 이상 버전에 해당합니다.
    • 자세한 내용은 PyG 설치 가이드를 참조하세요.
      pip install torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.0.0+cpu.html
      pip install torch_geometric
      
  5. 나머지 라이브러리 설치
    pip install -r requirements.txt
    

5. 실행 방법

  1. 터미널에서 아래 명령어를 실행하여 전체 학습 및 벤치마크 파이프라인을 시작합니다.
    python main.py
    

    (여기서 main.py는 제공된 파이썬 스크립트의 파일명입니다.)

  2. 실행 과정:
    • 1단계 (모방 학습): IMITATION_MODEL_PATH에 저장된 모델이 없으면, ILP 솔버를 전문가로 하여 모방 학습을 진행하고 결과를 저장합니다.
    • 2단계 (온라인 학습): 모방 학습으로 초기화된 모델을 PPO 알고리즘으로 추가 학습시키고, 최종 모델을 FINAL_MODEL_PATH에 저장합니다.
    • 3단계 (벤치마크): 최종 학습된 GNN 모델을 Greedy, ILP와 함께 벤치마크합니다.
    • 콘솔에 최종 성능 요약 테이블이 출력되고, 실행 결과 그래프가 RESULT_PLOT_PATH에 지정된 파일명(benchmark_results_graphsage_realistic.png)으로 저장됩니다.

6. 코드 구조

GNN-based Reinforcement Learning for Robust TSN Routing

Python 3.9+ MIT License GitHub Pages

► Project Webpage (GitHub Pages)

Abstract (초록)

본 연구는 시간 민감형 네트워크(Time-Sensitive Networking, TSN) 환경에서 예측 불가능한 링크 장애에 대응할 수 있는 견고한(robust) 라우팅 경로를 설정하기 위한 새로운 프레임워크를 제안한다. 이를 위해, 그래프 어텐션 네트워크(Graph Attention Network, GATv2) 기반의 심층 강화학습(Deep Reinforcement Learning) 에이전트를 설계하였다. 제안하는 에이전트는 네트워크의 위상, 혼잡도, 그리고 각 플로우의 대역폭 요구사항을 포함하는 풍부한 상태 정보를 바탕으로 의사결정을 내린다. 학습 과정은 두 단계로 구성된다: (1) Greedy 알고리즘을 모방하여 기본적인 경로 탐색 능력을 빠르게 습득하는 초기 모방 학습 단계, (2) 정수 선형 계획법(Integer Linear Programming, ILP) 솔버를 ‘앵커(anchor)’로 활용하여 정책을 정교화하는 온라인 강화학습 단계. 이 하이브리드 학습 전략을 통해 에이전트는 ILP가 제한 시간 내에 찾은 해(solution)를 뛰어넘는 고품질의 라우팅 경로를 발견할 수 있다. 실험 결과, 제안하는 GNN 에이전트는 기존의 Greedy 및 ILP 방식에 비해 더 우수한 성능(End-to-End Latency 최소화)을 달성하면서도, 추론 시간을 수백 배 단축시키는 데 성공했다.


🌟 Key Features


🛠️ Installation

  1. Clone the repository:
    git clone [https://github.com/hwkim3330/GNN.git](https://github.com/hwkim3330/GNN.git)
    cd GNN
    
  2. Create & Activate Conda Environment:
    conda create -n tsn_env python=3.9 -y
    conda activate tsn_env
    
  3. Install Dependencies: PyTorch를 CUDA 버전에 맞게 먼저 설치 후, 나머지 라이브러리를 설치합니다.
    # For CUDA 12.1
    conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia -y
        
    # Install other packages
    pip install -r requirements.txt
        
    # Install ILP Solver (for Debian/Ubuntu)
    sudo apt-get install -y coinor-cbc
    

🚀 Usage

Train a new model: 전체 학습 파이프라인(모방학습 -> 온라인 강화학습 -> 벤치마크)을 실행합니다.

python code.py

📈 Methodology

본 프로젝트는 2단계 학습 전략을 사용합니다.

  1. Phase 1: Imitation Learning (Warm-up): GNN 에이전트($\pi_\theta$)가 전문가($\pi^*$)의 행동을 모방하여 기본적인 정책을 학습합니다. 손실 함수는 Cross-Entropy를 사용합니다. \(L_{IL}(\theta) = - \sum_{(s,a) \in D} \log \pi_\theta(a|s)\) 여기서 $D$는 전문가(Greedy 알고리즘)가 생성한 상태-행동 쌍의 데이터셋입니다.

  2. Phase 2: ILP-Anchored Online Learning: GNN 에이전트가 ILP Solver와 경쟁하며 학습을 진행합니다. GNN의 해가 ILP보다 우수하면 강화학습(Policy Gradient)을 통해 정책을 강화하고, ILP의 해가 더 우수하면 모방학습을 통해 정책을 교정합니다. 강화학습의 목적 함수는 다음과 같습니다. \(J(\theta) = E_{\tau \sim \pi_\theta}[R(\tau)]\) $R(\tau)$는 에피소드 $\tau$에서 얻은 보상(reward)으로, 본 프로젝트에서는 지연시간에 반비례하는 점수를 사용합니다.


📊 Results

학습 완료 후, GNN, Greedy, ILP 솔버의 성능(점수)과 계산 시간을 비교한 아래와 같은 그래프가 생성됩니다.

(여기에 최종 결과 그래프 이미지 benchmark_results_v3.png를 업로드하여 삽입하세요)

| Solver | Average Score | Average Time (s) | | :—— | :———— | :————— | | GNN_v3 | 0.95+ | ~0.1s | | ILP | ~0.90 | ~20s | | Greedy | ~0.85 | <0.01s | (결과 예시 테이블)


📄 License

This project is licensed under the MIT License.


✏️ How to Cite

이 프로젝트가 유용하다고 생각되시면, 아래와 같이 인용해주세요:

@misc{kim2025gnn_tsn,
  author = {Kim, H.W.},
  title = {GNN-based Reinforcement Learning for Robust TSN Routing},
  year = {2025},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{[https://github.com/hwkim3330/GNN](https://github.com/hwkim3330/GNN)}}
}