오자키II 스킴을 이용한 행렬곱 에뮬레이션 오류 정밀 분석

오자키II 스킴을 이용한 행렬곱 에뮬레이션 오류 정밀 분석
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

오자키II 스킴은 CRT(중국 나머지 정리)를 활용해 저정밀 INT8 행렬곱을 여러 번 수행해 고정밀 SGEMM·DGEMM을 재현한다. 본 논문은 이 스킴의 오류를 결정론적으로 분석하여, 입력 행렬의 지수 분포와 사용 모듈러스 개수 N에 따라 필요한 저정밀 곱셈 횟수를 정확히 예측할 수 있는 식을 제시한다.

상세 분석

오자키II 스킴은 크게 네 단계로 구성된다. 첫 단계에서는 서로 서로소인 정수 모듈러스 p₁,…,p_N을 선택하고 그 곱 P를 계산한다. 두 번째 단계에서는 입력 행렬 A와 B에 대각 스케일링 µ, ν를 적용해 정수 행렬 A′, B′을 만든다. 여기서 스케일링은 |A′||B′| < P·E 를 만족하도록 설계되며, 이는 정수 행렬 곱셈 결과가 P보다 작아 유일한 복원성을 보장한다. 세 번째 단계는 CRT 기반 재구성 단계이다. 각 모듈러스 p_ℓ에 대해 A′와 B′를 mod 연산으로 INT8 행렬 A′_ℓ, B′_ℓ 로 변환하고, INT8 매트릭스 엔진을 이용해 C′_ℓ = A′ℓ·B′ℓ 를 무오차로 계산한다. 이후 C′ℓ 를 p_ℓ 로 다시 mod 한 뒤, 사전 계산된 가중치 s{ℓ1}, s{ℓ2} (P/p_ℓ·q_ℓ 의 고정소수점 근사)와 함께 FP64 가중합을 수행해 C′ ≈ Σ s{ℓ}·W_ℓ 를 얻는다. 마지막 단계에서는 고정밀 이중정밀(P₁+P₂)와 P⁻¹을 이용해 C′′ = round(C′/P)·P 를 보정하고, 역스케일링으로 최종 C ≈ A·B 를 복원한다.

오차 분석의 핵심은 두 종류의 오차를 명시적으로 분리한 점이다. 첫 번째는 스케일링 단계에서 발생하는 절단(truncation) 오차이며, 이는 |A′||B′|/P 에 비례한다. 두 번째는 CRT 재구성 단계에서 발생하는 부동소수점 가중합 오차로, s_{ℓ1}, s_{ℓ2} 의 근사 정확도와 FP64 연산의 반올림 오차가 결합된다. 논문은 각 단계별 오류 상한을 정리한 정리 2~4를 제시하고, 특히 Lemma 1을 통해 µ, ν 가 (15) 조건을 만족하도록 선택될 경우 절단 오차가 2·u₃₂·P·E 이하임을 증명한다. 또한 Theorem 5에서는 전체 상대 오차 ‖C−AB‖/‖AB‖ ≤ ε(N) 형태의 식을 도출했으며, ε(N) 은 N 이 증가함에 따라 지수적으로 감소한다는 점을 보였다.

특히, 입력 행렬의 지수 범위가 넓을수록 스케일링 벡터 µ, ν 가 크게 변동하고, 이에 따라 P 를 충분히 크게 잡아야 절단 오차를 억제할 수 있다. P 를 크게 만들기 위해서는 모듈러스 개수 N 을 늘려야 하는데, N 은 49 이하(256 이하의 소수 집합)로 제한된다. 실험에서는 N=6~12 정도면 대부분의 실용적인 FP32/FP64 정확도를 만족한다는 결과가 제시된다. 또한, INT8 엔진의 특성상 A′_ℓ·B′_ℓ 연산은 오버플로우가 없도록 설계된 스케일링 덕분에 무오차로 수행될 수 있음을 강조한다.

마지막으로, 저자는 이 오류 모델을 기반으로 자동 튜닝 프레임워크를 제안한다. 입력 행렬의 최대 절댓값과 지수 분포를 사전 분석해 필요한 N 을 계산하고, 그에 맞는 모듈러스 집합과 스케일링 파라미터를 선택함으로써, 사용자는 원하는 정확도 목표(예: 1e‑7 상대 오차)와 실행 시간 사이의 최적 균형을 손쉽게 얻을 수 있다.


댓글 및 학술 토론

Loading comments...

의견 남기기