TL;DR
NVIDIA Dynamo의 Shadow Engine Recovery는 LLM 추론 worker가 프로세스 장애를 겪을 때 같은 GPU에 미리 초기화한 standby engine을 활성화해 serving capacity를 복구하는 기능입니다. GPU Memory Service (GMS)가 HBM의 가중치를 엔진 프로세스와 분리해 관리하므로 active와 shadow가 가중치를 복제하지 않고 공유하며, CUDA context·communicator·CUDA graphs도 장애 전에 준비해 둡니다. GLM-5.2를 NVIDIA B200에서 실험한 결과 두 번째 worker의 serving 재개 시간은 cold restart의 283초에서 7.3초로 줄었고, 장애 후 TTFT p50은 23,815ms에서 1,311ms로 낮아졌습니다. 현재 preview는 프로세스 장애에 한정되고 KV cache 승계가 아직 지원되지 않으며, Kubernetes 1.34 이상과 DRA 환경이 필요합니다.
빠른 이해
새로운 점
GPU 메모리의 물리 페이지 수명과 엔진 프로세스의 수명을 분리해 shadow engine을 같은 GPU에 상주시킨 뒤, 프로세스 장애 복구를 수분 단위 cold restart에서 초 단위 failover로 바꾼 점입니다.
핵심 메커니즘
GMS가 HBM의 가중치를 엔진 프로세스와 독립적으로 보존하고 active·shadow engine의 CUDA context에 각각 매핑합니다. Shadow engine은 communicator와 CUDA graph를 미리 초기화한 채 KV cache 없이 대기하다가 active 프로세스의 POSIX flock이 해제되면 잠금을 획득하고, 가중치 재매핑과 KV cache materialization 후 router에 재등록합니다.
핵심 수치
- 두 번째 worker serving 재개 시간: Cold restart 283 s vs Shadow Engine Recovery 7.3 s- 7.3초는 장애 감지 1.7초와 shadow 승격 5.6초로 구성됩니다.
- 장애 후 TTFT p50: 23,815 ms vs 1,311 ms- GLM-5.2, 두 worker 중 한 worker SIGKILL 후 관측값입니다.
- 장애 후 Decode rate p50: 12 tok/s/user vs 46 tok/s/user- Cold restart와 Shadow Engine Recovery 비교입니다.
- 5초 초과 TTFT 요청: 201 of 399 vs 1 of 398- 장애 후 비교 window의 요청 수입니다.
- 20 tok/s/user 미만 요청: 226 of 399 vs 0 of 398- 장애 후 사용자별 decode rate 기준입니다.
- 장애 중 baseline inter-token latency: 84 ms for 283 s- 50 ms SLA ceiling을 초과한 cold restart baseline 값입니다.
섹션별 상세
Shadow Engine Recovery의 핵심 구조

LLM 추론 복구가 느린 이유
GMS가 가중치를 유지하는 방식

미리 초기화한 Shadow Engine
await engine.initialize() # weight load, torch.compile, autotune, CUDA graph capture...
# put the engine to sleep while we wait on the lock
await engine.sleep()
lock = FlockFailoverLock(lock_path)
await lock.acquire(engine_id=engine.id) # wait on the lock to wake
await engine.wake()각 엔진이 초기화한 뒤 공유 잠금을 기다리고, 활성 프로세스가 종료되면 대기 엔진이 잠금을 획득해 깨어나는 failover 흐름입니다.
Worker와 라우터의 장애 전환


메모리 구성과 장애 후 복구

GLM-5.2 벤치마크 결과
TTFT와 Inter-token Latency 변화


현재 범위와 배포 조건
용어 해설
- Shadow Engine Recovery
- — 활성 LLM 추론 엔진과 같은 GPU에 미리 초기화한 대기 엔진을 유지해 프로세스 장애 때 즉시 트래픽을 넘기는 복구 방식입니다. 가중치와 CUDA 초기화 상태를 재사용해 cold restart의 장시간 재로딩을 피하는 것이 핵심입니다.
- GPU 메모리 서비스(GPU Memory Service)
- — 추론 엔진 프로세스와 별도로 GPU 물리 메모리 영역의 수명을 관리하는 NVIDIA Dynamo 구성 요소입니다. 여러 엔진이 동일한 HBM 가중치를 각자의 CUDA 가상 주소에 매핑하므로 프로세스가 종료돼도 가중치를 유지할 수 있습니다.
- KV 캐시(KV cache)
- — LLM이 이전 토큰의 Key와 Value를 저장해 긴 문맥을 다시 계산하지 않도록 하는 메모리 영역입니다. 현재 Shadow Engine Recovery에서는 활성 엔진만 물리적으로 보유하며, 대기 엔진이 승격될 때 새로 materialize하므로 전환 직후 TTFT가 잠시 증가합니다.
- CUDA 그래프(CUDA graphs)
- — GPU 연산 그래프를 미리 캡처해 반복 실행 시 커널 실행 오버헤드를 줄이는 CUDA 기능입니다. 캡처 시점의 가상 주소에 묶이므로 기존 프로세스에서 새 프로세스로 이전하기 어렵고, shadow engine이 시작할 때 미리 캡처해 둡니다.
- Dynamic Resource Allocation
- — Kubernetes에서 GPU 같은 자원을 동적으로 할당하고 워크로드에 연결하는 기능입니다. NVIDIA Dynamo의 현재 Shadow Engine Recovery preview는 Kubernetes 1.34 이상, DRA 활성화, NVIDIA GPU DRA driver 설치를 배포 조건으로 요구합니다.
- Cold restart
- — 장애 난 추론 엔진을 처음부터 다시 시작하는 복구 절차입니다. 저장소에서 가중치를 HBM으로 로드하고 KV cache 크기를 정한 뒤 autotune과 CUDA graph 캡처를 반복하므로 대형 LLM에서는 serving capacity 회복까지 수분이 걸릴 수 있습니다.
기술
- NVIDIA Dynamo
- GPU Memory Service (GMS)
- CUDA Virtual Memory Management API
- vLLM
- SGLang
- NVIDIA TensorRT-LLM
- NCCL
- NIXL
- CUDA graphs
- Kubernetes
- Dynamic Resource Allocation
- NVIDIA GPU DRA driver
- Dynamo Snapshot
- GLM-5.2
- NVFP4
- FP8 KV cache
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.

