1.2.4 하드웨어 및 병렬 연산에 의한 비결정성: GPU 부동소수점 연산의 비순차적 처리 특성
대규모 언어 모델(LLM)이 내포한 비결정성(Nondeterminism)의 기원을 추적하다 보면, 소프트웨어 로직(예: Top-p 샘플링, 난수 시드)이라는 상위 계층을 지나 결국 하드웨어의 물리적 한계점, 즉 GPU(Graphics Processing Unit) 기반 부동소수점 병렬 연산(Parallel Floating-point Calculation)의 구조적 특성에 도달하게 된다. 모델의 파라미터 값이 완벽히 고정되어 있고, 샘플링 단계를 완전히 통제(Temperature=0.0)하더라도 미세한 결괏값의 난맥상이 발생하는 궁극적인 이유는 바로 실리콘 칩 위에서 벌어지는 비순차적(Asynchronous) 연산 과정 때문이다.
1. 부동소수점 연산의 결합 법칙 파괴
기본적으로 딥러닝 모델의 텐서 연산(Tensor Operations), 특히 행렬 곱셈(Matrix Multiplication)과 축소(Reduction) 연산은 방대한 양의 부동소수점(주로 FP32, FP16, BF16 매트릭스) 더하기와 곱하기로 구성된다.
순수 수학의 실수(Real Numbers) 체계에서는 덧셈에 대한 결합 법칙(Associative Law)이 언제나 성립한다. 즉, (a + b) + c 와 a + (b + c) 는 항상 동일한 결과값을 갖는다. 하지만 유한한 비트(Bit) 수를 가지는 IEEE 754 부동소수점 표준 규격 하의 컴퓨터 계산 환경에서는 이 수학적 공리가 철저히 파괴된다.
크기가 매우 큰 수와 극도로 작은 수를 더할 때, 자릿수 맞춤(Alignment) 과정에서 작은 수의 하위 비트가 반올림되거나 잘려나가는 **반올림 오차(Round-off Error)**가 발생한다. 이는 곧 부동소수점 값들을 병합할 때 “어느 순서로 더하느냐“에 따라 최종 연산 결과의 유효 숫자가 아주 미세하게 달라질 수밖에 없음을 의미한다.
2. GPU 병렬 처리 환경(CUDA)에서의 동시성 제어 한계
이러한 부동소수점의 순서 민감성(Order Sensitivity)은, 극단적인 병렬 처리를 위해 설계된 GPU 환경(예: NVIDIA CUDA Architecture)과 결합할 때 시스템 전체의 비결정성을 통제 불능 상태로 폭발시킨다.
LLM 추론 파이프라인 수만 개의 가중치를 동시에 연산해야 한다. 이를 위해 GPU는 연산을 수천 개의 가용한 스레드(Thread) 블록으로 잘게 분할하여 워프(Warp) 단위로 할당한다. 각 스레드가 독립적으로 계산을 마치면, 이 조각난 부분합(Partial Sums)들을 최종적으로 하나의 값으로 더하는 축소(Reduction) 연산을 수행하게 된다.
graph TD
subgraph GPU_Parallel_Execution [GPU 비동기 병렬 연산 환경]
A(초기 매트릭스 데이터 Tensor Data) --> B(스레드 1: 연산 속도 빠름)
A --> C(스레드 2: 메모리 지연 발생)
A --> D(스레드 N: 열 축적 온도 상승)
B --> |부분합 w| E((공유 메모리\n원자적 덧셈 Atomic Add))
C --> |부분합 x| E
D --> |부분합 y| E
end
E -. 동적 스케줄링에 따른 순서 조합 .-> F1[결과 1: w+x+y \n 오차 -0.000001]
E -. 동적 스케줄링에 따른 순서 조합 .-> F2[결과 2: y+w+x \n 오차 +0.000003]
E -. 동적 스케줄링에 따른 순서 조합 .-> F3[결과 3: x+y+w \n 오차 0.000000]
style E fill:#ffe0b2,stroke:#ef6c00,stroke-width:2px;
핵심적인 문제는 이 스레드들이 공유 메모리(Shared Memory)에 도착하여 원자적 덧셈(Atomic Addition) 연산을 수행하는 물리적 순서를 소프트웨어 개발자가 명시적으로 제어할 수 없다는 데 있다. 이 나노초(Nanoscale) 단위의 도착 순서는 다음 요소에 의해 매 런타임마다 완전히 무작위적으로 결정된다.
- 각 스레드 워프(Warp)의 하드웨어 할당 스케줄러 상태
- 메모리 대역폭의 찰나의 캐시 히트/미스(Cache Hit/Miss) 여부
- 발열 관리를 위한 GPU 클럭(Clock) 주파수 동적 스로틀링(Throttling)
결국 (w+x)+y가 될지 (y+w)+x가 될지에 대한 통제권 상실은 불가피하게 최종 소수점 자리에 반올림 오차의 파동을 만들어내게 된다.
3. 미세 오차의 증폭과 소프트맥스 역전(Softmax Inversion)
단일 레이어에서의 10^{-6} 단위의 미미한 부동소수점 오차는 통상적인 시스템에서는 무시할 수 있는 수준의 잡음(Noise)이다. 그러나 수십 혹은 수백 층에 달하는 트랜스포머(Transformer)의 다중 헤드 어텐션(Multi-Head Attention)과 비선형 활성화 함수를 겹겹이 통과할 때, 이 미세한 오차는 파라미터를 타고 선형적, 비선형적으로 계속해서 증폭된다.
이렇게 증폭된 에러 토큰들이 마지막으로 도달하는 곳이 바로 확률 분포를 만들어내는 소프트맥스(Softmax) 계층이다. 만약 어휘 사전(Vocabulary) 내의 1위 후보와 2위 후보 간의 로짓(Logits) 스코어가 극도로 근소한 차이로 경합하고 있는 상황이었다면, 누적된 하드웨어 연산의 반올림 오차가 이 둘의 점수 순위를 역전시키는 현상을 초래할 수 있다. 이로 인해 결정론적 샘플링(Temperature=0.0)을 적용했음에도 불구하고, A 토큰 대신 결국 B 토큰이 선택되어 문장 전체의 뜻이 틀어져 버리는 예측 불가능성이 완성되는 것이다.
4. 공학적 타협과 오라클 의존성
하드웨어 수준의 부동소수점 비결정성을 완벽하게 통제하기 위해, NVIDIA와 같은 제조사는 연산 순서를 고정하는 결정론적 알고리즘 깃발(Deterministic Flag)을 제공하기도 한다. 하지만 이를 활성화할 경우 비동기 처리가 무효화되어 파이프라인의 연산 가속(Acceleration) 성능이 기하급수적으로 저하된다. 이는 초거대 AI 추론 속도가 필수적인 현재의 비즈니스 생태계에서는 수지가 맞지 않는 공학적 등가교환(Trade-off)이다.
따라서 최첨단의 딥러닝 시스템에서는 속도(Speed) 확보를 위해 기반 아키텍처 연산의 근본적이고 물리적인 비결정성을 모종의 ’불가항력(Force Majeure)’으로서 합의하고 허용할 수밖에 없다. 이러한 기술 구조적 배경은 결국 다음과 같은 중요한 결론으로 귀결될 수밖에 없다. “GPU 레이어나 모델 샘플링 단계인 블랙박스 내부에서는 완벽한 제어가 불가능하므로, 오답이 산출되었음을 상정하고 그 출력망(Output Edge) 바깥쪽에 절대적이고 엄밀한 **오라클(Oracle)**을 배치해야만 한다.”