전년도에 이어 2년 연속으로 유클리드소프트에서 진행하는 ABC 프로젝트 멘토링에 2기로 참여하게 되었습니다.
[(주)플랜아이] 클라우드 서비스 구축 및 AI/데이터 응용 서비스 개발 프로젝트를 주제로, GNN 기반 양자 오류 정정(QEC) 디코더를 설계하고 FPGA에 온디바이스 구현하는 프로젝트를 진행합니다.
1주차에는 프로젝트의 핵심 AI 기법인 Graph Neural Network(GNN)와 Post-Training Quantization(PTQ)의 개념을 선행 학습 차원에서 정리했습니다. 이 두 기법은 각각 디코더의 추론 모델과 FPGA 경량화 전략의 근간이 됩니다.
프로젝트 배경
양자 컴퓨팅에서 물리적 큐비트는 높은 오류율(~10⁻³)을 가지며, 이를 보정하기 위해 양자 오류 정정(Quantum Error Correction, QEC)이 필수적입니다. 현재 가장 유망한 방식인 Surface Code는 큐비트들을 2D 격자 형태로 배치하고, 주변 큐비트의 측정 결과(신드롬)를 통해 오류를 추론합니다.
기존 주류 디코더인 MWPM(Minimum Weight Perfect Matching)은 O(n³)의 시간복잡도로 인해 실시간 디코딩이 어렵습니다. 큐비트의 결맞음 시간(~1μs) 내에 디코딩을 완료해야 하므로, 더 빠르고 정확한 디코더가 필요합니다.
본 프로젝트에서는 GNN 기반 디코더를 설계하여 Surface Code의 신드롬 그래프를 직접 처리하고, INT8 양자화를 통해 FPGA에서 1μs 이내 실시간 추론을 달성하는 것을 목표로 합니다.
1. Graph Neural Network (GNN)
1-1. GNN이란?
Graph Neural Network(GNN)는 그래프 구조 데이터를 직접 입력으로 처리할 수 있는 딥러닝 모델입니다. 일반적인 CNN이 이미지의 격자(grid) 구조를, RNN이 시퀀스 구조를 다루는 것과 달리, GNN은 노드(node)와 엣지(edge)로 구성된 비정형 그래프를 처리합니다.
그래프 데이터는 다양한 영역에서 자연스럽게 등장합니다:
| 도메인 | 노드 | 엣지 |
|---|---|---|
| 소셜 네트워크 | 사용자 | 친구 관계 |
| 분자 구조 | 원자 | 화학 결합 |
| 추천 시스템 | 유저/아이템 | 상호작용 |
| 양자 오류 정정 | 신드롬 이벤트 | 인접 관계 |
본 프로젝트에서 Surface Code의 신드롬 데이터는 본질적으로 그래프 구조를 가지므로, GNN이 자연스러운 선택이 됩니다.
1-2. 메시지 패싱 (Message Passing)
GNN의 핵심 연산은 메시지 패싱(Message Passing) 메커니즘입니다. 각 노드는 이웃 노드들로부터 정보를 수집하고 자신의 표현(representation)을 업데이트합니다. 이 과정을 수식으로 표현하면 다음과 같습니다:
\[ h_v^{(l+1)} = \text{UPDATE}\left(h_v^{(l)},\; \text{AGGREGATE}\left(\{h_u^{(l)} : u \in \mathcal{N}(v)\}\right)\right) \]
여기서:
- \(h_v^{(l)}\): \(l\)번째 레이어에서 노드 \(v\)의 특성 벡터
- \(\mathcal{N}(v)\): 노드 \(v\)의 이웃 노드 집합
- AGGREGATE: 이웃 노드들의 정보를 모으는 함수 (합산, 평균, 최대값 등)
- UPDATE: 집약된 정보와 자신의 정보를 결합하여 새로운 표현을 생성하는 함수
직관적으로 설명하면, 각 노드가 “주변에 무슨 일이 일어나고 있는지”를 이웃들에게 물어보고, 그 답변을 종합하여 자신의 상태를 갱신하는 과정입니다. 레이어를 여러 층 쌓으면 더 먼 노드의 정보까지 전파됩니다.
1-3. GraphConv 레이어
본 프로젝트에서 사용할 GraphConv(Graph Convolution) 레이어는 Kipf & Welling (2017)이 제안한 GCN(Graph Convolutional Network)의 핵심 구성 요소입니다. 각 레이어의 연산은 다음과 같습니다:
\[ H^{(l+1)} = \sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)}\right) \]
여기서:
- \(\tilde{A} = A + I\): 자기 연결(self-loop)이 추가된 인접 행렬
- \(\tilde{D}\): \(\tilde{A}\)의 차수 행렬 (degree matrix)
- \(H^{(l)}\): \(l\)번째 레이어의 노드 특성 행렬
- \(W^{(l)}\): 학습 가능한 가중치 행렬
- \(\sigma\): 활성화 함수 (ReLU 등)
핵심 아이디어는 인접 행렬을 정규화하여 이웃 노드 수에 따른 스케일 차이를 보정하고, 가중치 행렬을 통해 특성을 선형 변환한 뒤 비선형 활성화를 적용하는 것입니다.
1-4. 프로젝트에서의 GNN 아키텍처
본 프로젝트의 GNN 디코더는 다음과 같은 구조를 가집니다:
입력 (신드롬 그래프, 노드 특성 5차원)
↓
GraphConv Layer 1: 5 → 32
↓ ReLU
GraphConv Layer 2: 32 → 128
↓ ReLU
GraphConv Layer 3: 128 → 256
↓ ReLU
Global Mean Pooling
↓
Dense Layer: 256 → 2 (λX, λZ 논리 오류 확률)
- 3-layer Pruned GraphConv: 경량화된 3층 구조로 신드롬 그래프의 지역~전역 패턴을 포착
- Global Mean Pooling: 가변 크기 그래프를 고정 크기 벡터로 변환
- Dense Layer: 최종적으로 X/Z 논리 오류 확률을 출력
이 구조는 Cicero et al. (2026)의 Pruned 모델을 기반으로 하며, MWPM 대비 낮은 논리 오류율을 달성하면서도 FPGA 구현에 적합한 경량 구조를 갖추고 있습니다.
2. Post-Training Quantization (PTQ)
2-1. 양자화란?
딥러닝 모델의 양자화(Quantization)는 모델의 가중치와 활성화 값을 높은 정밀도(FP32)에서 낮은 정밀도(INT8, INT16 등)로 변환하는 기법입니다. 이를 통해:
- 메모리 사용량 감소: FP32 → INT8로 약 4배 절감
- 연산 속도 향상: 정수 연산은 부동소수점 연산보다 빠르고 하드웨어 효율적
- 전력 소비 감소: 특히 FPGA, ASIC 등 엣지 디바이스에서 유리
양자화 방식은 크게 두 가지로 나뉩니다:
| 구분 | QAT (Quantization-Aware Training) | PTQ (Post-Training Quantization) |
|---|---|---|
| 시점 | 학습 중 양자화 시뮬레이션 포함 | 학습 완료 후 양자화 적용 |
| 정확도 | 상대적으로 높음 | QAT 대비 약간 낮을 수 있음 |
| 비용 | 재학습 필요 (시간/자원 소모) | 재학습 불필요 (빠른 적용) |
| 적용 난이도 | 학습 코드 수정 필요 | 기존 모델에 바로 적용 가능 |
2-2. PTQ의 동작 원리
Post-Training Quantization은 이미 학습이 완료된 모델에 양자화를 적용하는 방식입니다. 재학습 없이 빠르게 경량화할 수 있어 실용적입니다.
기본 양자화 공식:
\[ q = \text{round}\left(\frac{x}{s}\right) + z \]
여기서:
- \(x\): 원래의 FP32 값
- \(s\): 스케일 팩터 (scale factor)
- \(z\): 제로 포인트 (zero point)
- \(q\): 양자화된 정수 값
역양자화 (Dequantization):
\[ \hat{x} = s \cdot (q - z) \]
스케일 팩터와 제로 포인트는 가중치의 최솟값과 최댓값으로부터 계산됩니다:
\[ s = \frac{x_{\max} - x_{\min}}{q_{\max} - q_{\min}}, \quad z = q_{\min} - \text{round}\left(\frac{x_{\min}}{s}\right) \]
INT8의 경우 \(q_{\min} = -128\), \(q_{\max} = 127\)이 됩니다.
2-3. Saturated ReLU
양자화 시 활성화 함수도 정수 연산에 맞게 조정이 필요합니다. 일반적인 ReLU는 출력 범위가 \([0, +\infty)\)로 제한이 없어 양자화에 불리합니다. 이를 해결하기 위해 Saturated ReLU를 사용합니다:
\[ \text{SaturatedReLU}(x) = \min(\max(x, 0),\; C) \]
여기서 \(C\)는 클리핑 상한값입니다. 출력 범위를 \([0, C]\)로 제한함으로써 양자화 해상도를 높이고, FPGA에서 고정 비트폭 연산으로 구현할 수 있습니다.
2-4. 프로젝트에서의 양자화 전략
본 프로젝트에서는 다음과 같은 양자화 전략을 적용할 예정입니다:
| 대상 | 비트폭 | 설명 |
|---|---|---|
| 가중치 (Weight) | INT8 | GraphConv 레이어의 가중치 행렬 |
| 바이어스 (Bias) | INT16 | 누적 오차 방지를 위해 높은 정밀도 유지 |
| 중간 특성 (Feature) | 18-bit | 레이어 간 전달되는 활성화 값 |
| 활성화 함수 | Saturated ReLU | 출력 범위 제한으로 양자화 효율 향상 |
양자화된 가중치는 HEX 포맷으로 추출하여 FPGA의 Weight Memory ROM에 저장되며, 소프트웨어(PyTorch)와 하드웨어(Verilog RTL) 간 패리티 검증을 통해 양자화 과정의 정확성을 보장합니다.
정리
| 기법 | 역할 | 프로젝트 적용 |
|---|---|---|
| GNN (GraphConv) | 그래프 구조 데이터의 패턴 학습 | Surface Code 신드롬 그래프에서 오류 패턴 추론 |
| PTQ (INT8) | 학습된 모델의 경량화 | FPGA 온디바이스 구현을 위한 가중치/활성화 양자화 |
1주차에는 프로젝트의 두 핵심 기법을 개념적으로 정리했습니다. 다음 주차부터는 Stim과 PyMatching을 활용한 Surface Code 데이터셋 생성과 GNN 모델 학습 파이프라인 구축을 진행할 예정입니다.
- Kipf, T.N. & Welling, M. (2017). Semi-Supervised Classification with Graph Convolutional Networks. ICLR 2017.
- Cicero, D. et al. (2026). Pruned GNN Decoders for Quantum Error Correction.
- Lange, M. et al. (2025). Graph Neural Network Decoders for Surface Codes.