본문 바로가기

인공지능

Temperature 하이퍼파라미터 값을 0으로 설정해도LLM의 추론 결과가 비결정론적인 이유 - 완전히 정복하기 !! 핵심 원인에서 솔루션까지

728x90
반응형
728x170

대형 언어 모델(LLM) 추론을 할 때, 똑같은 입력(prompts)을 주더라도 결과가 매번 달라지는 일 — 이른바 비결정성(non-determinism) 문제는 많은 연구자와 개발자에게 골칫거리입니다. 이 글은 Thinking Machines Lab의 “Defeating Nondeterminism in LLM Inference” 보고서를 바탕으로, 비결정성이 왜 발생하는지, 어떤 실질적 원인이 있는지, 또 그것을 어떻게 정복 가능한지(즉, 동일한 입력에 대해 동일한 출력 보장 가능) 명확히 정리해드립니다.

읽고 나면, 당신은 LLM 추론 시스템의 수치적 차이(numerical differences)의 근원을 이해하고, 이를 제어 가능한 시스템 설계 또는 라이브러리 선택 시 유의할 점들을 파악할 수 있게 될 것입니다.

반응형

1. 비결정성이란 무엇인가 / 발생되는 맥락

  • LLM 추론에서 온도(temperature)를 0으로 설정하면 이론상 가장 확률이 높은 토큰만 선택하는 greedy sampling이 되므로 결정적(deterministic)이 돼야 하지만, 실전에서는 여전히 서로 다른 결과가 나옵니다.
  • 이는 단순히 샘플링 전략 문제만이 아니라, 하드웨어 및 병렬처리, 부동소수점 처리 등에 내재된 수치적 성질 때문입니다.

2. 주요 원인 분석

2.1 부동소수점(floating-point)의 비결합성(non-associativity)

  • 부동소수점은 소수점 연산 시 자릿수 반올림과 절삭 때문에 (a + b) + c ≠ a + (b + c)가 될 수 있습니다.
  • 다양한 지수를 가진 값들의 덧셈이 순서에 따라 다른 결과로 이어질 수 있습니다.

2.2 연산 커널(kernel)의 배치 의존성과 병렬성

  • 많은 라이브러리 및 GPU 커널들은 배치 크기, 배치 내 항목의 위치, 요청들의 병렬성에 따라 내부 처리 방식이 달라집니다.
  • 이로 인해 동일한 단일 요청이어도 서버의 부하(load)에 따라 처리되는 배치 크기가 달라지면 결과가 달라질 수 있습니다.
  • 예를 들어 매트릭스 곱, RMSNorm, 어텐션 연산에서 배치 크기 또는 시퀀스 길이에 따라 작업 분할과 리덕션 전략이 달라지면 결과가 달라집니다.

3. 단순 가설보다 더 깊은 문제

  • 같은 매트릭스 곱 연산을 반복할 때 bit-wise 동일한 결과가 나오는 경우도 있어, 단순히 “비결합성 때문”이라고 설명하기에는 부족합니다.
  • 또한 많은 커널이 명시적인 atomic 연산을 사용하지 않더라도, 배치 의존적 알고리즘 때문에 비결정성이 발생합니다.

4. 비결정성 극복: 배치 불변성(batch invariance) 기반의 해결책

배치 불변성이란, 요청의 출력이 시스템의 병렬성이나 다른 요청의 존재 여부, 배치 크기에 영향을 받지 않는 것을 의미합니다. Thinking Machines는 이를 구현하기 위해 다음과 같은 방법을 제안했습니다.

4.1 배치 불변성을 갖춘 커널 설계

  • RMSNorm: 각 배치 요소를 각 코어가 고정적으로 처리하는 데이터 병렬 전략을 사용합니다.
  • 행렬 곱(MatMul): 출력 타일 기반 병렬화를 사용하되, 리덕션 축 분할 방식이 배치 크기에 의존적이지 않도록 고정합니다.
  • 어텐션(Attention):
    • KV 캐시 사용 시에도 동일한 레이아웃을 유지합니다.
    • Split-KV 전략을 고정 크기 기반으로 사용해, 전체 길이가 달라도 각 분할 처리 순서가 일관되도록 합니다.

4.2 구현 사례 및 실험 결과

  • vLLM, FlexAttention backend, PyTorch torch.Library를 활용해 배치 불변 연산자들을 교체 가능한 방식으로 구현했습니다.
  • 실험에서 동일한 프롬프트를 1000번 생성했을 때, 기본 설정에서는 80가지 다른 출력이 나왔지만, 배치 불변 커널을 적용하면 1000번 모두 동일한 출력이 생성되었습니다.
  • 성능은 기본 모드 대비 약 2배 느려졌지만, 커널 최적화 후에는 1.6배 수준으로 개선되었습니다.

정리 및 시사점

항목 핵심 요약
비결정성의 발생 부동소수점의 비결합성, 커널 구현의 배치 의존성, 서버 부하 변화
주요 원인 배치 크기, 배치 내 요소 위치, 요청 병렬성 등이 연산 순서에 영향
해결 방향 배치 불변성(batch invariance)을 갖춘 커널 설계
구현 가능성 vLLM, FlexAttention, torch.Library 기반으로 구현 가능하나 성능 저하 발생

시사점 및 기대되는 것들

  • 신뢰성과 재현성 증가: 같은 입력에서 같은 출력이 보장돼 디버깅과 테스트가 쉬워집니다.
  • 강화학습(RL) 및 연구의 정밀성 향상: 추론 과정의 불확실성이 줄어 학습 안정성이 개선됩니다.
  • 성능/비용 트레이드오프: 성능 저하는 피하기 어렵지만, 최적화로 점차 완화될 수 있습니다.
  • 프레임워크 선택 기준: LLM 시스템 구축 시, 배치 불변 커널 지원 여부가 중요한 선택 기준이 될 수 있습니다.

https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/?fbclid=IwY2xjawM07F1leHRuA2FlbQIxMQABHn2TfrUyWayBOaQ5PkjxFQWuEtB4_4RijU9NMl-cCDjszB6_FC74WFUhS0RJ_aem_YLzoNFvXfvdTT-ZBeXnnDQ

 

Defeating Nondeterminism in LLM Inference

Reproducibility is a bedrock of scientific progress. However, it’s remarkably difficult to get reproducible results out of large language models. For example, you might observe that asking ChatGPT the same question multiple times provides different resul

thinkingmachines.ai

728x90
반응형
그리드형