[Research Note] Activation-level Sparsity for Accelerating LLM Inference

Activation-level Sparsity Analysis and Hardware-Friendly Predictor Design

📝 [Research Note] LLM 추론 가속을 위한 Activation-level Sparsity 분석 및 하드웨어 친화적 Predictor 설계

1. 문제 정의 및 목표

배경: FFN 레이어의 컴퓨팅 병목 현상 Transformer 기반의 LLM 아키텍처에서 Feed-Forward Network(FFN) 레이어는 전체 모델 파라미터의 약 60~70%를 차지하며, 추론 시 막대한 연산량(FLOPs)을 요구합니다. 그러나 흥미롭게도 FFN을 구성하는 ReLU, SwiGLU 등의 활성화 함수(Activation Function)를 통과한 결과값의 상당수는 이거나 에 매우 가까운 값(Sparsity)을 가집니다.

해결책 제안: 수동적 0 버림에서 동적 연산 생략으로 기존의 밀집 연산(Dense Computation) 방식은 모든 가중치 행렬을 곱한 뒤 활성화 함수를 통과시키고 나서야 이 되는 값들을 확인합니다. 이는 엄청난 컴퓨팅 리소스의 낭비입니다. 따라서, 사전에 활성화될 뉴런(Neuron)만 예측하여 불필요한 연산을 아예 건너뛰는(Skipping) 동적 라우팅 전략이 필요합니다.

문서의 목표 본 문서는 문맥에 따라 동적으로 변하는 Activation Sparsity의 패턴을 분석하고, 다음 레이어의 활성화 뉴런을 예측하는 Predictor 네트워크의 구조를 설계합니다. 특히, 이 예측 모델이 실제 Edge 디바이스(NPU/GPU) 환경에서 유의미한 지연 시간(Latency) 감소로 이어지기 위한 하드웨어 제약 기반의 정형 희소성(Structured Sparsity) 변환 전략을 고찰합니다.


2. 구조 분석: Contextual Sparsity와 Predictor 설계

Activation Sparsity 패턴 분석 최신 연구(e.g., Deja Vu 논문)에 따르면, LLM의 희소성은 무작위로 발생하는 것이 아니라 입력 토큰(Context)에 따라 고유한 패턴을 가집니다. 즉, '사과'라는 단어와 '양자역학'이라는 단어가 입력될 때 FFN 레이어에서 활성화되는 서브네트워크(Sub-network)의 경로가 다릅니다. 이를 Contextual Sparsity라고 합니다.

동적 라우팅을 위한 Predictor 모델 아키텍처 이러한 특성을 활용하여, 메인 모델의 행렬 곱(MatMul) 연산을 수행하기 전에 매우 가벼운 1~2 Layer의 다층 퍼셉트론(MLP) 기반 Predictor를 둡니다.

Predictor는 이전 레이어의 활성화 값 XX를 입력받아, 다음 레이어에서 활성화될 뉴런의 인덱스를 예측하는 이진 마스크(Binary Mask) MM을 생성합니다.

M=Step(Predictor(X)τ)M = \text{Step}(\text{Predictor}(X) - \tau)

여기서 는 하이퍼파라미터인 임계값(Threshold)입니다. 이후 FFN 레이어의 가중치 행렬 와 입력값 의 연산은 마스크 이 인 부분에 대해서만 선별적으로 수행됩니다.

Y=W(XM)Y = W \cdot (X \odot M)

이 접근법은 이론적으로 FFN의 연산 복잡도를 획기적으로 낮출 수 있습니다.


3. 엔진 가속을 위한 하드웨어 제약 고찰

위의 수학적 모델링은 논리적으로 완벽해 보이지만, 실제 온디바이스 추론 엔진에 그대로 적용하면 오히려 속도가 느려지는 기현상이 발생합니다. 이는 하드웨어 구조를 간과했기 때문입니다.

비정형 희소성(Unstructured Sparsity)의 한계 Predictor가 예측한 (활성화)의 위치가 메모리 상에 무작위로 흩어져 있는 비정형 희소성의 경우, 희소 행렬 포맷(CSR, CSC 등)을 사용해야 합니다.

  • 문제점: GPU나 NPU의 메모리 컨트롤러는 연속된 메모리 블록을 한 번에 읽어오는 데 최적화되어 있습니다. 무작위 메모리 접근(Random Memory Access)은 대역폭 효율을 극도로 떨어뜨려, 연산량을 줄여 얻는 이득보다 메모리 지연(Memory Latency)으로 인한 손실이 훨씬 커집니다.

하드웨어 친화적 가속: N:M 정형 희소성(Structured Sparsity) 추론 엔진에서 즉각적인 속도 향상을 얻기 위해서는 하드웨어가 기본적으로 지원하는 정형 희소성(Structured/Block Sparsity) 포맷으로 알고리즘을 변환해야 합니다.

대표적으로 NVIDIA Ampere 아키텍처 등에서 지원하는 2:4 희소성 (연속된 4개의 값 중 2개만 활성화) 포맷이 있습니다. 따라서 Predictor 모델을 설계할 때, 단순히 개별 뉴런 단위로 예측하는 것이 아니라 블록 단위(Block-wise) 또는 N:M 비율을 강제하는 제약 조건을 손실 함수(Loss Function)나 마스킹 로직에 주입해야 합니다.

  • 실무 가이드라인: Predictor 출력에 Arg-TopK 기반의 풀링(Pooling)을 적용하여, 하드웨어 연산기(Tensor Core 등)의 청크(Chunk) 사이즈에 맞게 메모리 정렬(Memory Alignment)을 유도하는 방식이 필수적입니다.

4. 결론: Trade-off 분석 및 최적화 전략

Activation-level Sparsity는 연산량 감소라는 강력한 무기지만, 오차라는 대가를 동반합니다.

정확도(Accuracy) vs 속도(Latency)의 Trade-off Predictor가 실제로는 활성화되어야 할 뉴런을 으로 잘못 예측(False Negative)할 경우, 모델의 표현력에 영구적인 손실이 발생합니다. 따라서 Predictor의 목표는 단순한 Accuracy가 아니라 Recall(재현율)의 극대화입니다.

  • 보수적인 Threshold(τ\tau) 튜닝: 초기에는 τ\tau를 낮게 설정하여 희소율을 20~30% 수준으로 제한하고 점진적으로 올려가는 커리큘럼(Curriculum) 방식의 튜닝이 필요합니다.

Next Steps

  • Predictor Training Pipeline 구축:
    기존 사전 학습된(Pre-trained) LLM을 동결(Freeze)한 상태에서, 중간 레이어의 Activation 값을 수집하여 Predictor 모델만 비동기적으로 학습시키는 파이프라인 개발.
  • On-device Profiling:
    구축된 N:M 정형 마스킹 모델을 타겟 Edge 디바이스 프로파일러를 통해 실제 Memory I/O 대역폭 절감 효과를 정량적으로 측정할 예정.