개요

이 노트는 “ChatGPT는 수억 명을 서비스하는데, 왜 개인 PC에서는 GPT-4급 모델 하나도 제대로 못 돌리는가?”라는 질문에 대한 인프라 관점의 답이다.

핵심은 OpenAI 같은 서비스가 단일 GPU에서 모델 하나를 돌리는 방식이 아니라, 분산 추론, 하드웨어 최적화, 배치 처리, 캐싱, 라우팅, 운영 자동화를 결합한 대규모 서빙 시스템으로 동작한다는 점이다.


한 줄 요약

“로컬 실행은 한 사용자가 한 장비로 모델 전체를 떠안는 구조이고, ChatGPT는 전 세계 GPU 클러스터가 모델·요청·메모리를 잘게 나눠 처리하는 구조다.”


왜 로컬에서는 어려운가

GPT-4급 모델을 로컬에서 돌리기 어려운 이유는 단순하다.

  • 모델 파라미터가 너무 큼
  • KV 캐시가 컨텍스트 길이에 따라 빠르게 커짐
  • 고속 GPU 메모리와 대역폭이 부족함
  • 토큰 생성은 순차성이 있어 병렬화가 까다로움

즉, 개인 PC는 “모델 전체를 한 번에 들고, 한 요청을 끝까지 처리”해야 하는 반면, 대규모 서비스는 문제를 여러 층에서 나눠 푼다.


1. 초대형 분산 추론

모델 샤딩

모델 파라미터를 여러 GPU에 나눠 저장한다.

각 GPU는 자기 파라미터 조각에 대한 연산을 수행하고, 중간 결과를 교환한다.

텐서 병렬성

한 레이어 내부의 행렬 연산을 여러 GPU에 나눠 수행한다.

파이프라인 병렬성

모델 레이어를 여러 단계로 나누고, 서로 다른 요청을 파이프라인처럼 흘려보낸다.

실제 서비스에서는 이들을 섞어 GPU 메모리와 연산량을 맞춘다.


2. 메모리와 속도 최적화

양자화

파라미터를 낮은 정밀도로 저장해 VRAM 사용량과 메모리 대역폭 부담을 줄인다.

KV 캐싱

이미 처리한 컨텍스트의 key/value를 저장해 반복 계산을 줄인다.

긴 대화나 긴 문서 분석에서는 KV 캐시가 성능과 비용의 핵심이 된다.

오프로딩

필요에 따라 일부 레이어나 상태를 CPU 메모리, 다른 디바이스, 스토리지 계층으로 이동한다.


3. 전용 하드웨어와 네트워크

대규모 LLM 서비스는 일반 소비자 GPU와 다른 환경에서 돌아간다.

  • NVIDIA H100 / A100 / B200 계열
  • NVLink
  • NVSwitch
  • InfiniBand
  • 고속 데이터센터 네트워크

모델이 여러 GPU에 쪼개져 있으므로, GPU 간 통신 지연과 대역폭이 전체 처리량을 좌우한다.


4. 지리적 분산과 로드밸런싱

요청은 전 세계 리전의 GPU 클러스터로 분산된다.

  • GeoDNS
  • 리전별 GPU 팜
  • 부하 기반 라우팅
  • 장애 시 트래픽 재분배

사용자 입장에서는 하나의 ChatGPT처럼 보이지만, 실제로는 많은 리전과 클러스터가 뒤에서 요청을 나눠 처리한다.


5. 요청 처리 최적화

Batch inference

여러 사용자의 요청을 묶어서 한 번에 처리한다.

GPU는 단일 요청보다 묶음 요청에서 훨씬 높은 사용률을 낼 수 있다.

모델 라우팅

간단한 요청은 작은 모델로 보내고, 복잡한 요청만 큰 모델로 보낼 수 있다.

결과 캐싱

동일하거나 유사한 요청 결과를 재사용한다.

토큰 비용 관리

프롬프트 압축, 컨텍스트 절단, 요약, 캐시 재사용으로 불필요한 토큰 계산을 줄인다.


6. 운영 최적화

대규모 서비스는 모델만 잘 만들어서는 운영되지 않는다.

  • GPU 사용률 모니터링
  • 스케줄링
  • 자동 확장/축소
  • 모델 버전 배포
  • 장애 감지와 롤백
  • 전력과 냉각 최적화
  • 자체 컴파일러와 런타임 최적화

즉, ChatGPT 규모의 서비스는 LLM 모델이 아니라 LLM 운영체제에 가까운 인프라 위에서 돈다.


전체 흐름

  1. 사용자 요청 수신
  2. 가까운 리전으로 라우팅
  3. 요청 전처리
  4. 작은 모델/큰 모델 라우팅
  5. 분산 추론 수행
  6. KV 캐시와 배치 처리 활용
  7. 후처리와 결과 캐싱
  8. 사용자에게 응답 반환

의미

개인 사용자가 GPT-4급 모델을 로컬에서 못 돌리는 이유는 능력 부족이 아니라, 문제의 단위가 다르기 때문이다.

로컬 추론은:

  • 한 장비
  • 한 사용자
  • 제한된 VRAM
  • 제한된 전력

대규모 서비스는:

  • 수천~수만 GPU
  • 분산 메모리
  • 고속 네트워크
  • 배치 처리
  • 모델 라우팅
  • 운영 자동화

즉, 같은 “모델 실행”처럼 보여도 실제로는 완전히 다른 엔지니어링 문제다.


Ask HN 관점 보강

Ask HN의 질문은 “ChatGPT는 주간 수억 명을 서비스하는데, 왜 개인은 GPT-4급 모델 하나도 로컬에서 제대로 못 돌리나”였다. 핵심 답은 로컬 실행과 데이터센터 추론이 같은 문제가 아니라는 점이다.

대규모 서비스는 모델을 한 GPU에 올리는 대신 모델 샤딩, 텐서 병렬성, 파이프라인 병렬성을 조합한다. 요청이 들어오면 여러 GPU가 각자 맡은 파라미터와 레이어를 계산하고, NVLink, NVSwitch, InfiniBand 같은 고속 네트워크로 중간 결과를 교환한다.

또한 서비스 계층에서는 배치 추론, 동적 라우팅, KV 캐싱, 결과 캐싱, 작은 모델 선처리, 프롬프트 압축을 통해 토큰당 비용을 줄인다. 간단한 요청은 작은 모델로 보내고, 복잡한 요청만 큰 모델로 보내는 방식도 가능하다.

결국 대규모 LLM 서비스의 성능은 모델 하나의 성능보다 다음 요소들의 곱에 가깝다.

  • 모델 병렬화
  • GPU 간 네트워크
  • KV 캐시 관리
  • 배치 스케줄링
  • 리전별 로드밸런싱
  • 전력·냉각·장애 복구 운영
  • 자체 컴파일러와 런타임 최적화

이 구조는 MareNostrum V와 HPC 실행 환경에서 다루는 HPC와 연결된다. 슈퍼컴퓨터와 LLM 데이터센터 모두 계산 자원 자체보다 데이터 이동, 통신, 스케줄링이 전체 효율을 결정한다.


관련 항목