⚡ AI Optimization

근사 연산

개요

근사 연산(Approximate Computing)은 모든 계산 결과를 비트 단위로 정확하게 만들기보다, 애플리케이션이 허용하는 품질 손실 범위 안에서 에너지, 지연 시간, 메모리 트래픽을 줄이는 설계 패러다임이다. Han과 Orshansky는 멀티미디어처럼 결과의 작은 오차를 허용하는 응용을 대상으로 approximate arithmetic, 오류·품질 지표, 알고리즘 수준 기법을 함께 다루며 이 영역을 정리했다. 따라서 근사 연산은 특정 압축 알고리즘 하나가 아니라 소프트웨어, 컴파일러, 회로, 메모리, 런타임을 가로지르는 최적화 공간이다.

이 문서에서 말하는 근사 압축(Approximate Compression)은 근사 연산의 응용 관점에서, 모델의 표현·연산·전송 정밀도를 줄이고 그 결과를 품질 예산(quality budget) 안에서 검증하는 흐름을 뜻한다. 양자화는 표현 가능한 값의 수를 줄이고, pruning은 계산할 항을 줄이며, lossless 또는 lossy coding은 저장·전송 비트 수를 줄인다. 이들은 서로 관련되지만 같은 기법은 아니며, 압축률만으로 성공을 판단해서는 안 된다.

근사 연산의 기본 흐름

핵심 개념

정확성에서 품질 예산으로

정확한 실행을 기준선 y라 하고 근사 실행 결과를 y'라 하면, 근사화의 목표는 단순히 오차 |y-y'|를 최소화하는 것이 아니라 다음 제약을 만족하면서 비용을 줄이는 것이다.

minimize     Energy + λ × Latency + μ × MemoryTraffic
subject to   Quality(y, y') >= target

Quality는 모델과 출력 형태에 따라 달라진다. 분류 모델은 top-1 accuracy나 F1, 회귀는 MAE/RMSE, 영상은 PSNR/SSIM, 음성은 WER, 생성 모델은 task-specific 평가와 안전성 검사를 사용한다. 서로 다른 지표를 한 숫자로 합칠 때는 가중치와 측정 데이터셋을 고정해야 한다.

근사화의 적용 위치

계층 대표 기법 줄어드는 비용 주된 위험
알고리즘 loop perforation, early exit, 근사 함수 연산량·지연 입력 분포가 바뀌면 품질 급락
모델 표현 INT8/INT4, FP16/BF16, pruning 모델 크기·메모리 대역폭 rounding·clipping·중요 채널 손실
연산 커널 truncated multiplier, approximate adder, reduced iteration 산술 에너지·면적 누적 오차와 비대칭 bias
회로·전원 voltage over-scaling, timing speculation 전압·동적 전력 입력·온도·공정에 따른 오류 증가
저장·전송 weight sharing, entropy coding, lossy tensor compression 저장 공간·링크 트래픽 decode 비용과 랜덤 접근 저하

같은 모델에 여러 계층을 동시에 적용할 수 있지만 오차가 독립적이라고 가정하면 안 된다. 예를 들어 INT4 양자화의 rounding error와 approximate multiplier의 산술 오차가 특정 레이어에서 같은 방향으로 누적될 수 있다.

Error와 Quality의 구분

하드웨어의 bit error rate나 평균 절대 오차가 작아도 최종 모델 품질이 보존된다는 보장은 없다. Softmax, normalization, 누적 합, argmax 경계처럼 작은 수치 변화가 결과를 크게 바꾸는 연산이 있기 때문이다. 반대로 중간 activation의 큰 수치 오차가 최종 분류에 거의 영향을 주지 않을 수도 있다.

따라서 검증은 다음 세 단계로 나누는 것이 안전하다.

  1. 수치 검증: 레이어별 absolute error, relative error, ULP, saturation/overflow를 측정한다.
  2. 모델 검증: calibration set과 고정된 validation/test set에서 정확도·손실·분포 변화를 측정한다.
  3. 시스템 검증: 실제 batch, sequence length, device, thermal 상태에서 latency, throughput, energy와 메모리 트래픽을 측정한다.

중요도와 보호 영역

모든 tensor가 같은 정밀도를 필요로 하지는 않는다. 가중치와 활성값의 분포, 레이어 민감도, 출력의 영향도를 측정한 뒤 민감한 연산은 FP16/FP32 또는 정확한 누산으로 남기고 나머지를 낮은 정밀도로 보낸다. TensorRT 문서도 linear operation은 낮은 정밀도와 Tensor Core 가속의 후보가 되기 쉽지만, Softmax와 reduce처럼 수치적으로 민감한 연산은 별도로 확인해야 한다고 설명한다.

비교/분석

근사화 기법 비교

압축과 근사화 기법 비교

기법 무엇을 버리는가 정확도 보정 하드웨어 이득 적합한 경우
Reduced precision 표현 가능한 값과 유효 비트 calibration, QAT, mixed precision 저비트 MAC·대역폭 감소 대부분의 inference tensor
Structured pruning 정해진 패턴의 weight/activation fine-tuning 또는 one-shot 보정 전용 sparse kernel 패턴을 지원하는 accelerator
Unstructured pruning 임의 위치의 weight 재학습·보정 필요 압축은 크지만 실행 이득은 구현 의존 저장 공간이 우선일 때
Approximate arithmetic 연산 결과의 일부 정확성 레이어·출력별 품질 측정 회로 면적·전력·지연 감소 오류 허용 DSP/CNN 경로
Lossy tensor coding tensor의 정밀도·엔트로피 decode 후 task 평가 저장·통신 트래픽 감소 bandwidth-bound pipeline
Lossless coding 중복성만 제거 손실 없음 압축·decode 비용 발생 정확성 필수 checkpoint

Reduced precisionapproximate arithmetic는 모두 수치 오차를 만들 수 있지만 동일하지 않다. FP16이나 BF16은 정의된 부동소수점 형식과 반올림 규칙을 사용하는 반면, approximate multiplier는 일부 partial product를 생략하는 식으로 연산 함수를 바꿀 수 있다. BF16은 FP32와 같은 지수 비트 폭을 유지해 동적 범위를 보존하지만 유효 가수가 짧으므로 정밀도는 낮아진다.

정확도-비용 Pareto 분석

후보 설정을 비교할 때 하나의 정확도 수치만 보고 최고 압축률을 고르면 안 된다. 각 설정에 대해 다음을 함께 기록하고, 다른 설정보다 품질이 낮으면서 비용도 높거나 같은 점을 제거한다.

측정값 예시 해석
품질 accuracy, WER, SSIM, perplexity 업무 요구사항을 만족하는가
비용 joule/sample, latency p50/p99 평균과 tail 모두 개선되는가
메모리 model bytes, peak activation, DRAM bytes 저장과 실행 중 병목이 무엇인가
안정성 overflow, NaN, error variance 입력·온도·device가 바뀌어도 안전한가
운영성 calibration 시간, kernel 지원, fallback 비율 배포 후 유지 가능한가

예를 들어 정확도 손실이 0.2%인 INT8 설정이 정확도 손실 0.1%인 INT4 설정보다 실제 latency와 에너지가 낮다면 INT8이 더 좋은 선택일 수 있다. 저비트 경로가 지원되지 않아 FP32 fallback이 자주 발생하면 이론적 압축률은 실제 성능으로 이어지지 않는다.

AI workload별 적합성

workload 상대적으로 허용 가능한 근사 조심해야 할 경로
CNN 이미지 분류 convolution의 mixed precision, activation quantization 첫/마지막 layer, 작은 객체 검출
음성 인식 weight/activation 저정밀화, beam 후보 축소 누적 확률, WER 민감 구간
Transformer inference linear/KV tensor의 정밀도 조정, weight compression Softmax, normalization, logits, 안전 필터
영상·신호 처리 approximate arithmetic, lossy transform 복원 누적, 경계·고주파 성분
금융·제어 제한적인 표현 정밀도 감소 결정 경계, 안정성·감사 추적

생성형 모델에서는 평균 token perplexity만으로 충분하지 않다. 출력의 factuality, safety refusal, 긴 context에서의 retrieval, 숫자 계산 등 배포 업무에 맞는 회귀 테스트가 필요하다.

동작 원리

1. 정확한 기준선과 품질 예산 설정

먼저 정확한 FP32 또는 제품 기준 엔진으로 고정된 데이터셋의 결과, latency, memory traffic, energy를 기록한다. 그 다음 허용 가능한 품질 하한과 서비스 지연시간 상한을 정의한다. “정확도 저하 없음”이라는 표현은 측정 오차와 데이터셋 신뢰구간을 포함하지 않으므로, 최소한 평가셋·seed·신뢰구간을 함께 기록해야 한다.

quality_budget = baseline_quality - minimum_acceptable_quality
error_budget(layer) >= measured_error(layer)

레이어별 예산을 균등하게 나누는 방식은 안전하지 않다. activation scale이 큰 레이어나 residual 경로는 작은 오차도 다음 블록으로 전달할 수 있으므로 sensitivity test로 예산을 배분한다.

2. 근사 후보 생성

후보는 보통 다음 순서로 생성한다.

  1. weight-only 또는 activation-aware quantization으로 저장·대역폭을 줄인다.
  2. 지원되는 구조가 있으면 structured pruning으로 계산량을 줄인다.
  3. 남은 병목의 kernel에 approximate arithmetic 또는 early exit를 적용한다.
  4. 저장·전송 경로에 weight sharing와 entropy coding을 추가한다.

이 순서는 고정된 법칙이 아니다. 실제로는 프로파일러에서 DRAM-bound인지 compute-bound인지 먼저 확인해야 한다. 압축된 weight를 매번 복원하는 비용이 큰 경우, 저장 공간은 줄어도 end-to-end latency와 energy가 악화될 수 있다.

3. Mixed-precision 실행

각 연산에 정밀도 정책을 할당하고, 필요한 지점에 명시적인 cast와 정확한 누산을 배치한다.

weights       -> INT4/INT8 storage
dequantize    -> scale + low precision operand
matmul        -> FP16/BF16 or low precision tensor core path
accumulate    -> FP32 when range or cancellation is sensitive
normalization -> FP32 or validated higher precision
output        -> task-specific format

Google Cloud TPU 문서는 bfloat16이 FP32와 같은 동적 범위를 가지면서 메모리 공간을 절반으로 줄이고, FP32 accumulation과 함께 사용될 수 있다고 설명한다. 이 사례는 “낮은 정밀도 입력 + 높은 정밀도 누산”이라는 실용적인 근사 설계의 전형이다. 다만 format conversion의 rounding, subnormal flush, overflow 동작은 device와 compiler에 따라 확인해야 한다.

4. Approximate arithmetic와 오류 전파

정확한 a × b 대신 일부 partial product를 생략한 multiplier, 하위 carry를 단순화한 adder, 반복 횟수를 줄인 iterative operator를 사용할 수 있다. 이때 평균 오차만 보면 안 되고 bias와 worst-case를 함께 본다.

exact output       = f(x)
approximate output = f(x) + e(x)

e(x)가 양수 또는 음수로 균형을 이루지 않고 한 방향으로 치우치면 여러 레이어의 누산에서 bias가 된다. 따라서 zero-mean에 가까운지, 입력 magnitude와 상관관계가 있는지, saturation 구간에서 급증하는지 분석한다. 회로 수준 기법은 공정·전압·온도에 따라 오류 분포가 바뀔 수 있으므로 silicon 또는 cycle-accurate 모델에서 재측정해야 한다.

5. 검증 및 fallback

근사 추론 검증 흐름

오프라인 검증에서 통과한 설정도 실제 입력 분포에서는 실패할 수 있다. 배포 전에는 대표 입력뿐 아니라 outlier, 긴 sequence, 최대 batch, 빈 입력, 비정상 값, 온도 변화 조건을 포함한다. 런타임은 confidence나 overflow 감지 결과가 임계값을 넘으면 더 높은 정밀도 kernel로 fallback할 수 있지만, fallback 자체의 비용과 빈도를 측정해야 한다.

if overflow or quality_guard_triggered:
    run_exact_or_higher_precision_path()
else:
    run_approximate_path()

이 guard는 모델 품질을 자동으로 보장하지 않는다. online 품질을 직접 계산하기 어려운 경우 proxy metric, shadow evaluation, 주기적인 full-precision 샘플링을 사용한다.

장단점

장점

  1. 에너지 절감: 연산 비트 수, 메모리 이동량, 회로 토글을 줄일 수 있다.
  2. 지연시간 감소: 저정밀 MAC과 압축된 weight 전송으로 memory-bound 구간을 줄일 수 있다.
  3. 메모리 용량 절감: 양자화·pruning·coding을 조합하면 모델과 activation footprint를 줄일 수 있다.
  4. 하드웨어 선택 폭 확대: 정확도 요구가 낮은 경로를 작은 NPU나 edge accelerator에 배치할 수 있다.
  5. 품질 예산 기반 최적화: 모든 레이어를 동일하게 최적화하지 않고 민감도에 따라 비용을 배분할 수 있다.

단점

  1. 품질 손실의 비선형성: 작은 내부 오차가 decision boundary나 생성 결과를 크게 바꿀 수 있다.
  2. 검증 비용 증가: 모델 정확도뿐 아니라 수치 안정성, tail latency, 입력 분포 변화를 모두 검사해야 한다.
  3. 하드웨어 의존성: 특정 low-bit format, sparse pattern, approximate kernel을 지원하지 않으면 fallback이 발생한다.
  4. 압축 해제 오버헤드: decode, index metadata, dequantization이 계산·메모리 이득을 상쇄할 수 있다.
  5. 재현성 저하: 비결정적 kernel, 전압 변동, 동적 precision 정책이 결과를 바꿀 수 있다.
  6. 안전·규제 위험: 의료·제어·금융처럼 오류 상한을 증명해야 하는 영역에는 적용 범위가 제한된다.

관련 기술

기존 문서와의 관계

문서 관계
양자화 최적화 표현 정밀도를 줄이는 대표적인 근사 압축 기법
희소성 최적화 계산 항과 weight를 제거하는 구조적·비구조적 압축
메모리 레이아웃 최적화 압축 tensor의 접근·정렬·stride 효율을 결정
메모리 접근 패턴 압축·복원과 DRAM/cache 트래픽을 프로파일링하는 기준
추론 vs 훈련 근사화를 적용할 inference와 training의 병목 차이

구현 도구와 실무 체크리스트

영역 확인 항목
Graph/compiler cast 위치, fusion 가능성, unsupported op fallback
Kernel 실제 저비트·sparse kernel 선택 여부, dequantization 위치
Runtime shape별 tactic, batch별 품질, overflow·NaN 감지
Hardware 지원 format, 누산 폭, SRAM/DRAM bandwidth, 전력 측정 API
Evaluation 고정 seed, 동일 전처리, task metric, p50/p99, joule/sample

실무에서는 먼저 정확한 기준선과 프로파일을 남기고, 한 번에 하나의 근사 축만 바꾸는 것이 좋다. 양자화와 approximate arithmetic를 동시에 바꾸면 품질 저하의 원인을 분리하기 어렵다. 변경마다 모델 출력의 checksum만 비교하지 말고 task metric과 대표 샘플을 함께 보존해야 한다.

핵심 정리

  1. 근사 연산은 하나의 압축 알고리즘이 아니라 품질 손실을 비용 절감으로 교환하는 cross-layer 설계 패러다임이다.
  2. 양자화·희소성·lossy coding·approximate arithmetic는 서로 다른 오차 모델과 하드웨어 이득을 가지므로 구분해서 평가해야 한다.
  3. 실용적인 inference는 낮은 정밀도 연산과 높은 정밀도 누산·민감 연산 보호를 조합하는 mixed-precision 형태가 많다.
  4. 성공 기준은 압축률이 아니라 품질, 실제 latency, energy, memory traffic, fallback 비율을 함께 포함한 Pareto 개선이다.
  5. 정확한 기준선, 명시적 quality budget, outlier 검증, 런타임 guard를 갖추지 않으면 근사화는 배포 안정성을 보장하지 못한다.

참고 문헌

  1. Han, J., and Orshansky, M. (2013). Approximate Computing: An Emerging Paradigm for Energy-Efficient Design. IEEE European Test Symposium.
  2. Moons, B., De Brabandere, B., Van Gool, L., and Verhelst, M. (2016). Energy-efficient ConvNets through approximate computing. IEEE WACV.
  3. Han, S., Mao, H., and Dally, W. J. (2016). Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding. ICLR 2016.
  4. Kalamkar, D., et al. (2019). A Study of BFLOAT16 for Deep Learning Training.
  5. NVIDIA. (2026). TensorRT Accuracy Considerations.