1.2.3 시드(Seed) 값과 난수 생성기의 한계: 동일 시드에서도 발생하는 미세한 차이
결정론적 소프트웨어 환경에 익숙한 엔지니어들이 대규모 언어 모델(LLM) 파이프라인의 비결정성(Nondeterminism)을 억제하기 위해 가장 먼저, 그리고 가장 직관적으로 떠올리는 제어 장치는 바로 난수 발생 시드(Seed)의 고정이다. 프로그래밍에서 유사 난수 생성기(PRNG; Pseudo-Random Number Generator)의 시드를 특정한 정수(예: seed=42)로 하드코딩하면, 이후 호출되는 난수의 시퀀스는 이전과 수학적으로 100% 동일한 동기화 상태를 유지하게 된다.
이론적으로 LLM의 샘플링 단계에서 난수가 개입될 때 동일한 시드 번호를 지정한다면, 확률 변수들이 동일하게 재현(Reproduction)되어 매번 완전히 동일한 응답 텍스트를 출력해야만 한다. 그러나 현대의 상용 LLM API 아키텍처 환경에서는 이 ’시드 고정을 통한 결정론 성립’이라는 명제가 완벽히 성립하지 못하는 명확한 기술적 한계들이 존재한다.
1. 시스템적 불투명성과 희소 전문가 모델(MoE)의 동적 라우팅
첫 번째 한계는 기업이 제공하는 LLM API가 단일한 정적 가중치 모델(Static Weights Model) 체계에서 벗어나, 고도로 분산되고 동적으로 조정되는 시스템 아키텍처로 진화했다는 점이다.
최신의 초거대 모델들은 연산 효율성을 극대화하기 위해 ‘희소 전문가 모델(MoE; Mixture of Experts)’ 아키텍처를 적극적으로 도입하고 있다. MoE 아키텍처 내에서는 수백 개의 서로 다른 전문화된 하위 인공 신경망(Sub-networks)이 존재하며, 입력된 프롬프트의 토큰 내용에 따라 동적 라우터(Dynamic Router) 연산이 어느 전문가 모델에 연산을 할당할지 실시간으로 결정한다.
graph TD
A[사용자 프롬프트 + 고정 Seed=42] --> B{MoE 라우터 MoE Router}
B -->|GPU 클러스터 로드 상태 A| C[전문가 모델 1 Expert 1]
B -->|GPU 클러스터 로드 상태 A| D[전문가 모델 3 Expert 3]
B -. 로드 밸런싱 동적 변경 상태 B .-> E[전문가 모델 2 Expert 2]
B -. 로드 밸런싱 동적 변경 상태 B .-> F[전문가 모델 5 Expert 5]
C --> G[출력 텍스트 X]
D --> G
E --> H[출력 텍스트 Y]
F --> H
style B fill:#ffe0b2,stroke:#f57c00,stroke-width:2px;
style G fill:#c8e6c9,stroke:#388e3c
style H fill:#ffccbc,stroke:#d32f2f
이 과정에서 인프라의 트래픽 트레잇(Traffic Trait)이나 로드 밸런서(Load Balancer)의 상태에 따라 약간의 라우팅 편차가 발생할 수 있다. 애플리케이션 레벨에서 시드 값을 고정하여 API 요청 헤더(Header)에 실어 보낸다 한들, 그 시드 값이 GPU 클러스터 내부의 비동기적(Asynchronous) 라우팅 배정 타이밍까지 얼어붙게 만들 수는 없다. 결과적으로 전문가 네트워크 조합의 미세한 변경이 로짓(Logits) 계산에 파동을 일으켜, 동일한 시드임에도 불구하고 다른 토큰 예측값으로 이어질 가능성을 배제할 수 없다.
2. 병렬 처리 모델의 비동기적 축소(Asynchronous Reduction) 연산
단일 모델을 운영하는 로컬(Local) GPU 환경이라 할지라도 동일 시드에 의한 완벽한 결정성은 심하게 위협받는다. 이는 하드웨어 구조 레벨의 동시성 제어(Concurrency Control) 한계와 직결된다.
CUDA 코어와 같은 병렬 컴퓨팅 플랫폼 상에서는 단일 행렬 곱(Matrix Multiplication)을 수천 개의 스레드(Thread)로 잘게 쪼개어 동시에 연산한 뒤, 최종적으로 Sum() 연산을 통해 결괏값을 병합하는 축소(Reduction) 과정을 거친다. IEEE 754 부동소수점 규격 하에서는 일반 수학과 달리 교환/결합 법칙이 엄밀하게 성립하지 않기 때문에, 병합되는 순서가 아주 조금만 달라져도 소수점 유효 자릿수 끝에서 피할 수 없는 정밀도 오차(Precision Error)가 발생한다.
수천 개의 GPU 스레드가 자신의 연산을 끝마치고 공유 메모리(Shared Memory)에 값을 덮어쓰는 그 미시적인 나노초(Nanosecond) 단위의 순서는 운영체제 스케줄러(OS Scheduler)와 하드웨어 온도 등 순수 물리량적 가변성에 의해 배정된다. 따라서 시드 값은 어디까지나 “소프트맥스 후반부의 주사위 눈금“을 통제할 뿐, 트랜스포머 레이어 안에서 수백 번 오가는 병렬 텐서(Tensor) 연산 자체의 부동소수점 결괏값 난맥상을 고정해 주지 않는다. 이 오차가 누적 결합하여 최종 로짓의 1, 2순위 배열을 역전시키면 시드 고정은 무의미해진다.
3. 공학적 시사점과 오라클 통제 모델의 필요성 검증
결과적으로, 시스템 외부의 엔지니어가 API 호출 변수로 부여하는 시드(Seed) 값은 블랙박스 내부 연산의 모든 물리적 파동을 제어하는 마스터키(Master Key)가 결코 될 수 없다. 이는 최선 노력 기반(Best-effort Basis)의 소프트웨어적 옵션일 뿐, 1.0 패러다임 수준의 완벽한 재현성(Full Reproducibility)을 담보하는 공학적 보험으로 취급되어서는 안 된다.
결정론이 철저히 요구되는 금융, 의료, 법찰 등의 핵심 비즈니스 로직에 AI 컴포넌트를 이식할 때, “시드를 고정하고 Temperature를 0으로 낮추었으니 동일한 결괏값이 나올 것이다“라는 믿음은 매우 위험한 가정(Assumption)이다. 동일 시드 보장은 확률적 난반사를 약간 좁혀줄 뿐이며, 결정론적 정답지를 잣대로 산출물을 최종 검사하는 다단계 소프트웨어 테스트 오라클(Software Test Oracle) 없이 시스템을 배포하는 것은 여전히 치명적인 기술 부채(Technical Debt)를 남기는 행위임을 간과해서는 안 된다.