AI 시스템 성능 엔지니어링
요약
이 자료는 GPU 최적화, 분산 학습, 추론 확장성 등 AI 시스템 전반의 성능 튜닝에 대한 내용을 다룹니다. Nsight와 PyTorch 프로파일러를 활용하여 병목 현상을 진단하고, 컴파일러 스택(PyTorch + Triton)으로 커널을 제작하는 방법을 배웁니다. 또한 vLLM/SGLang 등을 이용해 고처리량 추론 및 랙 단위 확장을 다룹니다.
핵심 포인트
- goodput 기반의 프로파일 우선 엔지니어링 필요
- Nsight와 PyTorch로 병목 현상 진단 및 최적화
- PyTorch 컴파일러 스택과 Triton으로 커널 제작
- vLLM/SGLang 등으로 고처리량 추론 마스터
AI Performance Engineering
업데이트: 이 자료에 대한 실습 과정에 관심이 있으신가요?
그렇다면 폼를 작성하여 관심을 표현하고 알림을 받으세요._
이 저장소에 대하여
GPU 최적화, 분산 학습(distributed training), 추론 확장성(inference scaling), 그리고 현대 AI 워크로드의 전체 스택 성능 튜닝을 다루는 O'Reilly 도서용 AI 시스템 성능 엔지니어링 코드, 툴링 및 리소스입니다.
이 책과 직접 채팅하세요!
그냥 코드로 저를 데려가 주세요.
O'Reilly 도서 – 2025년 11월
Amazon에서 구매 가능
AI 시스템 성능 엔지니어링 도서
현대 AI 시스템은 단순한 FLOPs 이상의 것을 요구합니다. 하드웨어, 소프트웨어, 알고리즘 전반에 걸쳐 goodput 기반의 프로파일 우선(profile-first) 엔지니어링이 필요합니다. 이 실습 가이드는 GPU, 상호 연결 장치(interconnects), 런타임 스택을 효율적이고 신뢰할 수 있는 학습 및 추론 파이프라인으로 전환하는 방법을 보여줍니다.
Nsight와 PyTorch 프로파일러를 사용하여 실제 병목 현상을 진단하고, 대역폭과 메모리를 최적화하며, 컴파일러 스택(PyTorch + OpenAI Triton)을 활용하여 높은 영향도의 커널(kernels)을 제작하는 방법을 배웁니다. 서비스 제공 측면에서는 vLLM/SGLang, TensorRT-LLM, NVIDIA Dynamo를 이용해 고처리량 추론을 마스터하고, 비분리형 사전 채우기/디코딩(disaggregated prefill/decode) 및 페이지된 KV 캐시(paged KV cache)까지 다루며 예산을 초과하지 않고 랙 단위로 확장하는 방법을 배웁니다.
실습 중심의 경험적 방법론과 사례 연구, 프로파일링 데이터를 활용하여, 이 책은 대규모로 학습(training) 또는 추론(inference)을 구축하거나 운영하는 AI/ML 엔지니어, 시스템 엔지니어, 연구원 및 플랫폼 팀에게 유용합니다. 이 책에는 최신 NVIDIA GPU를 위한 수천 줄의 PyTorch 및 CUDA C++ 코드 예제가 포함되어 있습니다.
-
단순히 활용률(utilization)이 아닌 좋은 처리량(goodput)을 프로파일링하세요—Nsight Systems/Compute와 PyTorch profiler를 사용하여 실제 지연 지점(stall points)을 찾으세요.
-
메모리 및 대역폭(bandwidth)을 활용하세요—GPU에 지속적으로 데이터를 공급하기 위해 레이아웃, 캐싱, 데이터 이동을 최적화하세요.
-
컴파일러로 튜닝하세요—C++의 반복적인 코드를 작성하지 않고도 높은 영향도의 커널(kernel)을 생성하기 위해 PyTorch 컴파일러 스택과 Triton을 활용하세요.
-
학습을 체계적으로 확장하세요—병렬 처리 전략(DP, FSDP, TP, PP, CP, MoE)을 적용하고 계산/통신 오버랩을 통해 버블(bubbles)을 최소화하세요.
-
수조 개 매개변수 모델을 효율적으로 서빙하세요—vLLM, SGLang, TensorRT-LLM 및 NVIDIA Dynamo를 사용하여 분리된 프리필(prefill)/디코드와 KV-캐시 이동을 구현하세요.
-
토큰당 비용을 줄이세요—최고 속도뿐만 아니라 와트당 성능(performance-per-watt)과 달러당 처리량(throughput per dollar)에 맞춰 엔지니어링하세요.
-
AI 지원 최적화를 도입하세요—시스템이 수동 튜닝의 범위를 벗어날 때, AI가 커널을 합성하고 튜닝하도록 하세요.
-
자신감을 갖고 배포하세요—200개 이상의 항목으로 구성된 체크리스트를 적용하여 팀 전반에 걸쳐 성공 사례를 재현하고 회귀(regressions)를 방지하세요.
저자 소개
Chris Fregly는 성능 엔지니어이자 AI 제품 리더로, Netflix, Databricks, 그리고 Amazon Web Services (AWS)에서 혁신을 주도해 왔습니다. 그는 AI/ML 제품을 구축하고, 시장 출시 이니셔티브를 확장하며, 대규모 생성형 AI 및 분석 워크로드의 비용을 절감한 성능 중심 엔지니어링 팀을 이끌었습니다.
Chris는 다른 두 권의 O’Reilly 책인 Data Science on AWS와 Generative AI on AWS의 저자이기도 합니다. 또한 Andrew Ng와 함께 O’Reilly 과정 “High-Performance AI in Production with NVIDIA GPUs” 및 DeepLearning.ai 과정
그의 작업 범위는 커널 레벨 튜닝, 컴파일러 기반 가속화, 분산 학습(distributed training), 그리고 고처리량 추론(high-throughput inference)에 걸쳐 있습니다. Chris는 AI Performance Engineering이라는 이름의 월간 모임을 주최합니다.
200개 이상의 항목 성능 체크리스트 checklist
이 책에는 전체 라이프사이클을 포괄하는 현장 테스트를 거친 최적화 방안들을 담은 **200개 이상의 항목 성능 체크리스트 checklist**가 포함되어 있습니다. 이 내용들은 즉시 적용할 수 있습니다:
- ✅ 성능 튜닝 마인드셋 및 비용 최적화
- ✅ 재현성(Reproducibility) 및 문서화 모범 사례
- ✅ 시스템 아키텍처 및 하드웨어 계획
- ✅ 운영 체제(Operating System) 및 드라이버 최적화
- ✅ GPU 프로그래밍 및 CUDA 튜닝
- ✅ 분산 학습 및 네트워크 최적화
- ✅ 효율적인 추론 및 서비스 제공(serving)
- ✅ 전력 및 열 관리(Power and thermal management)
- ✅ 최신 프로파일링 도구 및 기법
- ✅ 아키텍처별 최적화
링크
- 도서: Amazon에서 AI 시스템 성능 엔지니어링 구매하기
- 모임: AI Performance Engineering
- YouTube: AI Performance Engineering 채널
샌프란시스코에서 AI 성능 엔지니어링 커뮤니티를 위해 제작되었습니다
주요 중점 영역
- GPU 아키텍처, PyTorch, CUDA, 그리고 OpenAI Triton 프로그래밍
- 분산 학습 및 추론(Distributed Training & Inference)
- 메모리 최적화 및 프로파일링
- PyTorch 성능 튜닝
- 다중 노드 확장 전략(Multi-Node Scaling Strategies)
도서 장(Book Chapters)
제1장: 서론 및 AI 시스템 개요
-
AI 시스템 성능 엔지니어
-
벤치마킹 및 프로파일링
-
분산 학습 및 추론 확장
-
리소스 효율적 관리
-
팀 간 협업
-
투명성 및 재현성
-
CPU 및 GPU "슈퍼칩" (Superchip)
-
NVIDIA Grace CPU & Blackwell GPU
-
NVIDIA GPU Tensor Cores 및 Transformer Engine
-
스트리밍 멀티프로세서(Streaming Multiprocessors), 스레드(Threads), 워프(Warps)
-
초거대 규모 네트워킹 (Ultra-Scale Networking)
-
NVLink 및 NVSwitch
-
다중 GPU 프로그래밍 (Multi-GPU Programming)
챕터 3: OS, Docker, 그리고 Kubernetes 튜닝
- 운영체제 구성 (Operating System Configuration)
- GPU 드라이버 및 소프트웨어 스택 (GPU Driver and Software Stack)
- NUMA 인식 및 CPU 고정 (NUMA Awareness and CPU Pinning)
- 컨테이너 런타임 최적화 (Container Runtime Optimizations)
- 토폴로지 인식을 위한 Kubernetes 오케스트레이션 (Kubernetes for Topology-Aware Orchestration)
- 메모리 격리 및 리소스 관리 (Memory Isolation and Resource Management)
챕터 4: 분산 네트워킹 통신 튜닝
- 통신과 연산의 중첩 (Overlapping Communication and Computation)
- 분산 다중 GPU 통신을 위한 NCCL
- NCCL에서의 토폴로지 인식 (Topology Awareness in NCCL)
- 분산 데이터 병렬 전략 (Distributed Data Parallel Strategies)
- NVIDIA 추론 전송 라이브러리 (NVIDIA Inference Transfer Library, NIXL)
- 네트워크 내 SHARP 집계 (In-Network SHARP Aggregation)
챕터 5: GPU 기반 스토리지 I/O 최적화
- 빠른 스토리지 및 데이터 지역성 (Fast Storage and Data Locality)
- NVIDIA GPUDirect Storage
- 분산 병렬 파일 시스템 (Distributed, Parallel File Systems)
- NVIDIA DALI를 사용한 다중 모드 데이터 처리 (Multi-Modal Data Processing with NVIDIA DALI)
- 고품질 LLM 데이터셋 생성 (Creating High-Quality LLM Datasets)
챕터 6: GPU 아키텍처, CUDA 프로그래밍, 및 점유율 극대화
- GPU 아키텍처 이해 (Understanding GPU Architecture)
- 스레드, 워프, 블록, 그리드 (Threads, Warps, Blocks, and Grids)
- CUDA 프로그래밍 복습 (CUDA Programming Refresher)
- GPU 메모리 계층 구조 이해 (Understanding GPU Memory Hierarchy)
- 높은 점유율 및 GPU 활용도 유지 (Maintaining High Occupancy and GPU Utilization)
- Roofline 모델 분석 (Roofline Model Analysis)
챕터 7: GPU 메모리 접근 패턴 프로파일링 및 튜닝
- 병합형 대 비병합형 전역 메모리 접근 (Coalesced vs. Uncoalesced Global Memory Access)
- 벡터화된 메모리 접근 (Vectorized Memory Access)
- 공유 메모리를 사용한 타일링 및 데이터 재사용 (Tiling and Data Reuse Using Shared Memory)
- 워프 셔플 인트린식 (Warp Shuffle Intrinsics)
- 비동기 메모리 프리페칭 (Asynchronous Memory Prefetching)
챕터 8: 점유율 튜닝, 워프 효율성, 및 명령어 수준 병렬성
- GPU 병목 현상 프로파일링 및 진단 (Profiling and Diagnosing GPU Bottlenecks)
- Nsight Systems 및 컴퓨트 분석 (Nsight Systems and Compute Analysis)
- 점유율 튜닝 (Tuning Occupancy)
- 워프 실행 효율 개선 (Improving Warp Execution Efficiency)
- 명령어 수준 병렬성 노출 (Exposing Instruction-Level Parallelism)
챕터 9: CUDA 커널 효율성 및 산술 강도 증가
- Multi-Level Micro-Tiling
- 커널 퓨전 (Kernel Fusion)
- 혼합 정밀도 및 텐서 코어 (Mixed Precision and Tensor Cores)
- 최적 성능을 위한 CUTLASS 사용
- 인라인 PTX 및 SASS 튜닝
제10장: 커널 내부 파이프라이닝 및 협업 스레드 블록 클러스터 (Intra-Kernel Pipelining and Cooperative Thread Block Clusters)
- 커널 내부 파이프라이닝 기법 (Intra-Kernel Pipelining Techniques)
- 워프 특화 프로듀서-컨슈머 모델 (Warp-Specialized Producer-Consumer Model)
- 지속형 커널 및 메가커널 (Persistent Kernels and Megakernels)
- 스레드 블록 클러스터 및 분산 공유 메모리 (Thread Block Clusters and Distributed Shared Memory)
- 협업 그룹 (Cooperative Groups)
제11장: 커널 간 파이프라이닝 및 CUDA 스트림 (Inter-Kernel Pipelining and CUDA Streams)
- 데이터 전송과 컴퓨팅 오버랩을 위한 스트림 사용 (Using Streams to Overlap Compute with Data Transfers)
- 스트림 순서 메모리 할당자 (Stream-Ordered Memory Allocator)
- 이벤트를 이용한 세밀한 동기화 (Fine-Grained Synchronization with Events)
- CUDA 그래프를 사용한 오버헤드 없는 실행 (Zero-Overhead Launch with CUDA Graphs)
제12장: 동적 및 디바이스 측 커널 오케스트레이션 (Dynamic and Device-Side Kernel Orchestration)
- 원자적 작업 큐를 이용한 동적 스케줄링 (Dynamic Scheduling with Atomic Work Queues)
- CUDA 그래프를 사용한 배치 반복 커널 실행 (Batch Repeated Kernel Launches with CUDA Graphs)
- 동적 병렬성 (Dynamic Parallelism)
- NVSHMEM을 이용한 다중 GPU 오케스트레이션 (Orchestrate Across Multiple GPUs with NVSHMEM)
제13장: PyTorch 프로파일링, 튜닝 및 스케일링 (Profiling, Tuning, and Scaling PyTorch)
- NVTX 마커 및 프로파일링 도구 (NVTX Markers and Profiling Tools)
- PyTorch 컴파일러 (torch.compile)
- PyTorch 메모리 프로파일링 및 튜닝 (Profiling and Tuning Memory in PyTorch)
- PyTorch 분산으로 스케일링 (Scaling with PyTorch Distributed)
- HTA를 이용한 다중 GPU 프로파일링 (Multi-GPU Profiling with HTA)
제14장: PyTorch 컴파일러, XLA 및 OpenAI Triton 백엔드 (PyTorch Compiler, XLA, and OpenAI Triton Backends)
- PyTorch 컴파일러 심층 분석 (PyTorch Compiler Deep Dive)
- OpenAI Triton을 사용한 커스텀 커널 작성 (Writing Custom Kernels with OpenAI Triton)
- PyTorch XLA 백엔드 (PyTorch XLA Backend)
- 고급 Triton 커널 구현 (Advanced Triton Kernel Implementations)
제15장: 다중 노드 추론 병렬성 및 라우팅 (Multi-Node Inference Parallelism and Routing)
- 분리형 프리필 및 디코드 아키텍처 (Disaggregated Prefill and Decode Architecture)
- MoE 모델을 위한 병렬성 전략 (Parallelism Strategies for MoE Models)
- 추측적 및 병렬 디코딩 기법 (Speculative and Parallel Decoding Techniques)
- 동적 라우팅 전략 (Dynamic Routing Strategies)
제16장: 대규모 추론의 프로파일링, 디버깅 및 튜닝 (Profiling, Debugging, and Tuning Inference at Scale)
- 성능 프로파일링 및 튜닝 워크플로우 (Workflow for Profiling and Tuning Performance)
- 동적 요청 배치 및 스케줄링 (Dynamic Request Batching and Scheduling)
- 시스템 레벨 최적화 (Systems-Level Optimizations)
- 실시간 추론을 위한 양자화 접근법 (Quantization Approaches for Real-Time Inference)
- 애플리케이션 레벨 최적화 (Application-Level Optimizations)
제17장: 분리형 프리필 및 디코드 스케일링 (Scaling Disaggregated Prefill and Decode)
- Prefill-Decode 분리(Disaggregation)의 이점
- Prefill 워커 설계
- Decode 워커 설계
- 분산형 라우팅 및 스케줄링 정책
- 확장성 고려 사항
Chapter 18: 고급 Prefill-Decode 및 KV 캐시 튜닝
- 최적화된 Decode 커널 (FlashMLA, ThunderMLA, FlexDecoding)
- KV 캐시 활용 및 관리 튜닝
- 이종 하드웨어 및 병렬성 전략
- SLO(Service Level Objective) 인식 요청 관리
Chapter 19: 동적 및 적응형 추론 엔진 최적화
- 적응형 병렬성 전략
- 동적 정밀도 변경
- 커널 자동 튜닝
- 런타임 튜닝을 위한 강화학습(RL) 에이전트
- 적응형 배치 및 스케줄링
Chapter 20: AI 지원 성능 최적화
- AlphaTensor가 발견한 알고리즘
- 자동 GPU 커널 최적화
- 자체 개선 AI 에이전트
- 수백만 개 GPU 클러스터로의 확장
커뮤니티 리소스
20개 이상의 도시에서 10만 명 이상의 회원이 참여하는 월간 모임:
최근 세션:
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub GameDev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기