주요 콘텐츠로 건너뛰기
AI 튜토리얼

AI 시스템 설계 단계별 학습: LLM 추론부터 프로덕션 에이전트까지

이 튜토리얼에서는 AI 시스템 설계 가이드를 활용해 LLM 추론, 확장, 캐싱, RAG, 에이전트, 안전성, 평가, 최적화를 학습하는 방법을 설명합니다. 저장소를 설정하고 학습 경로를 따라가며 설계 예제를 살펴본 뒤, 프로덕션 시스템과 기술 면접에 적용할 수 있는 반복 가능한 프레임워크를 익힙니다.

AI 시스템 설계 단계별 학습: LLM 추론부터 프로덕션 에이전트까지

AI 시스템 설계 프로젝트란?

AI 시스템 설계는 Outcome School의 설립자인 Amit Shekhar가 관리하는 오픈 소스 교육 가이드입니다. 이 가이드는 AI 제품을 단일 모델 API 호출로 다루는 대신, 대규모 언어 모델을 중심으로 전체 시스템을 설계하는 방법을 설명합니다.

이 가이드는 데이터베이스, 캐시, 큐, 로드 밸런서, 게이트웨이와 같은 익숙한 시스템 설계 구성 요소를 GPU, 토큰, 장시간 실행 요청, 스트리밍 출력, 비결정적 동작, 요청별 모델 비용과 같은 AI 특유의 제약 조건과 연결합니다.

AI 시스템 설계는 AI 모델이 새롭게 도입한 운영상의 제약 조건을 더한 기존 시스템 설계입니다.

이 자료는 AI 엔지니어, LLM 엔지니어, 백엔드 엔지니어, 머신러닝 엔지니어, 플랫폼 엔지니어, 아키텍트, 학생 및 AI 시스템 설계 면접을 준비하는 모든 사람을 대상으로 합니다.

AI 시스템 설계가 중요한 이유

스크립트에서 LLM API를 호출하는 데는 몇 줄의 코드만 필요할 수 있습니다. 하지만 많은 사용자를 대상으로 해당 기능을 운영하는 것은 전혀 다른 문제입니다. 프로덕션 시스템은 긴 프롬프트와 토큰 단위 응답을 처리하면서 지연 시간, 처리량, 안정성, 개인정보 보호, 출력 품질, 비용을 관리해야 합니다.

예를 들어 프로덕션 고객 지원 어시스턴트는 다음과 같은 작업을 수행해야 할 수 있습니다.

  • 트래픽이 증가하더라도 빠르게 응답을 시작합니다.
  • 검색을 통해 회사 문서를 근거로 답변을 생성합니다.
  • 개인정보가 유출되지 않도록 방지합니다.
  • 모델 오류, 시간 초과, 요청 한도를 처리합니다.
  • 비결정적인 출력에도 불구하고 답변 품질을 측정합니다.
  • 정해진 토큰 및 인프라 예산을 준수합니다.

이 저장소는 이러한 문제를 해결하는 데 필요한 구성 요소를 정리하고, 여러 주제를 더 자세히 설명하는 문서로 연결합니다.

주요 주제 및 기능

추론 기초

이 가이드는 토큰, 추론 서버, 추론 엔진, GPU, TPU, LPU와 같은 AI 하드웨어부터 시작합니다. 또한 LLM이 자기회귀 방식으로 텍스트를 생성하며, 하나의 토큰을 예측한 뒤 그 출력을 사용해 다음 토큰을 예측한다는 점을 설명합니다.

또한 추론의 두 가지 주요 단계를 소개합니다.

  • 프리필: 입력 프롬프트를 처리하고 생성을 위해 필요한 내부 상태를 구축하는 단계입니다.
  • 디코드: 한 번에 하나의 토큰씩 응답을 생성하는 단계입니다.

이러한 단계는 첫 토큰까지의 시간, 초당 토큰 수, 처리량 및 인프라 선택에 영향을 줍니다. 가이드에서는 청크 단위 프리필과 프리필 및 디코드 작업을 분리하는 방법도 다룹니다.

확장, 라우팅 및 캐싱

확장 섹션에서는 수직 확장, 수평 확장, 텐서 병렬 처리, 파이프라인 병렬 처리, 오토스케일링, GPU 산정 및 비용 산정을 다룹니다. LLM 특화 로드 밸런싱 방식으로는 미처리 토큰 수가 가장 적은 방식, 프리픽스 인식 라우팅, 스티키 세션이 있습니다.

캐싱 자료에서는 다음과 같은 여러 계층을 구분합니다.

  • KV 캐시는 생성 중 어텐션 키와 값을 재사용합니다.
  • 프롬프트 캐시는 반복되는 프롬프트 프리픽스를 캐시합니다.
  • 시맨틱 캐시는 의미가 유사한 쿼리의 결과를 캐시합니다.
  • 임베딩 캐시는 반복적인 임베딩 계산을 방지합니다.

규칙 기반, 분류기 기반, 임베딩 기반, LLM 기반 및 캐스케이드 방식을 포함한 모델 라우팅도 다룹니다.

검색 및 컨텍스트 관리

이 가이드는 임베딩, 벡터 데이터베이스, 벡터 인덱스 및 일반적으로 RAG라고 부르는 검색 증강 생성에 대해 설명합니다. 검색 과정에는 문서 파싱, 수집, 청킹, 하이브리드 검색, HyDE 쿼리 변환, 재순위화, ColBERT, Agentic RAG, GraphRAG 및 벡터리스 RAG가 포함됩니다.

또한 잘라내기, 요약, 슬라이딩 윈도우, 압축 및 계층형 메모리를 통해 컨텍스트 윈도우의 한계를 다룹니다. 관련 개념으로는 컨텍스트 로트, 중간 정보 손실 현상, RoPE 감쇠 및 컨텍스트 엔지니어링이 있습니다.

에이전트 및 멀티 에이전트 시스템

에이전트 섹션에서는 AI 에이전트의 핵심 구성 요소, 엔드투엔드 에이전트 루프, 도구 호출, 구조화된 출력, 메모리 및 일반적인 장애 원인을 살펴봅니다. 또한 결정론적 AI 오케스트레이션과 보다 자율적인 에이전트 동작을 구분합니다.

그 밖에도 Model Context Protocol 또는 MCP, Agent Skills, 컴퓨터 사용 에이전트, 브라우저 에이전트, 루프 엔지니어링, 그래프 엔지니어링, 서브에이전트, 조정 패턴 및 Agent2Agent 프로토콜을 다룹니다.

프로덕션 운영

이 저장소는 모델 호출을 넘어 다음과 같은 프로덕션 관련 주제까지 확장합니다.

  • Server-Sent Events 또는 WebSockets를 통한 스트리밍
  • 장시간 작업을 위한 비동기 처리 및 메시지 큐
  • 요청 수, 토큰, 동시성 또는 비용을 기준으로 한 요청 한도
  • AI 게이트웨이 및 멀티 테넌트 아키텍처
  • 가드레일, 프롬프트 인젝션 방어 및 AI 레드 팀 활동
  • 개인정보 비식별화, 데이터 레지던시, 감사 로그 및 컴플라이언스 조항
  • 트레이싱, 옵저버빌리티, 평가 및 LLM-as-a-judge 워크플로
  • 시간 초과, 백오프를 적용한 재시도, 대체 모델 및 정상적인 성능 저하

또한 양자화, 연속 배칭, 추측 디코딩, Flash Attention, Mixture of Experts, 모델 증류 및 Grouped Query Attention과 같은 추론 최적화도 다룹니다.

설치 및 설정

이 저장소는 소프트웨어 라이브러리가 아니라 학습 가이드이므로 패키지 설치, API 키 또는 런타임 환경이 필요하지 않습니다. GitHub에서 바로 읽을 수 있습니다.

로컬 사본을 유지하려면 Git으로 저장소를 복제합니다.

git clone https://github.com/amitshekhariitbhu/ai-system-design.git
cd ai-system-design

README를 Markdown 뷰어 또는 Markdown을 렌더링할 수 있는 편집기에서 여세요. 가이드가 계속 확장되고 있으므로 로컬 사본을 주기적으로 업데이트하세요:

git pull

README에는 빌드 명령이 설명되어 있지 않습니다. 주요 설정 작업은 학습 경로를 선택하고 목차를 사용해 개념 사이를 탐색하는 것입니다.

가이드 사용 방법

옵션 1: 전체 학습 경로 따라가기

AI 시스템 설계가 처음이라면 가이드를 순서대로 읽으세요. 권장되는 개념 학습 순서는 다음과 같습니다:

  1. 토큰, 추론 서버, AI 하드웨어를 학습합니다.
  2. 프리필, 디코드, 지연 시간, 처리량을 이해합니다.
  3. 확장, 추정, 부하 분산을 학습합니다.
  4. 캐싱 및 모델 라우팅 전략을 비교합니다.
  5. 임베딩, 벡터 데이터베이스, RAG를 학습합니다.
  6. 컨텍스트 윈도우 관리를 학습합니다.
  7. 스트리밍, 큐, 속도 제한, 게이트웨이를 살펴봅니다.
  8. 에이전트, 도구, MCP, 구조화된 출력, 메모리를 학습합니다.
  9. 멀티 에이전트, 멀티모달, 음성 시스템으로 학습을 확장합니다.
  10. 가드레일, 개인정보 보호, 관측 가능성, 평가를 추가합니다.
  11. 비용 관리, 파인튜닝 인프라, 추론 최적화를 학습합니다.
  12. 저장소의 시스템 설계 문제 해결 프레임워크를 적용합니다.

옵션 2: 면접 준비하기

면접을 준비한다면 모든 AI 시스템 설계 문제를 해결하는 방법을 다루는 섹션부터 시작하세요. 그런 다음 각 설계 결정에 필요한 기술적 구성 요소를 다시 살펴보세요. 이 프레임워크는 다음 8단계로 구성됩니다:

  1. 요구 사항: 사용자, 규모, 지연 시간 목표, 개인정보 보호 요구 사항, 제약 조건을 파악합니다.
  2. AI 목표: 모델이 수행해야 할 작업을 정의합니다.
  3. 데이터 준비: 원천 데이터를 수집, 파싱, 정제, 인덱싱하는 방법을 결정합니다.
  4. 아키텍처 설계: 게이트웨이, 서비스, 모델, 검색, 캐시, 큐, 스토리지를 배치합니다.
  5. 모델 선택 및 프롬프팅: 품질, 지연 시간, 비용에 따라 모델과 프롬프트 전략을 선택합니다.
  6. 평가: 출력과 시스템 동작을 측정할 방법을 정의합니다.
  7. 배포 및 서빙: 추론, 확장, 스트리밍, 복원력을 계획합니다.
  8. 모니터링: 품질, 지연 시간, 오류, 토큰 사용량, 비용을 관찰합니다.

옵션 3: 참고 자료로 사용하기

이미 AI 애플리케이션을 개발하고 있다면 목차를 참고 자료로 활용하세요. 예를 들어 반복 계산을 줄일 때는 캐싱 섹션을, 검색 품질이 낮을 때는 RAG 섹션을, 시스템은 기술적으로 작동하지만 답변 품질이 불분명할 때는 관측 가능성과 평가 섹션을 참고할 수 있습니다.

기본 사용 예시: 지원 어시스턴트 설계

이 저장소는 실행 가능한 프레임워크가 아니므로 “사용”이란 개념을 설계 문제에 적용한다는 의미입니다. 비공개 회사 문서에서 질문에 답해야 하는 고객 지원 어시스턴트를 생각해 보세요.

1. 요구 사항 정의

모델을 선택하기 전에 기능 및 운영 요구 사항을 작성하세요:

사용 사례: 고객 지원 질문 답변
지식 원천: 비공개 제품 및 정책 문서
응답 방식: 스트리밍 텍스트
품질 요구 사항: 검색된 문서에 근거한 답변
안전 요구 사항: 비공개 데이터 유출 금지
운영 목표: 낮은 지연 시간, 통제된 비용, 내결함성

실제 측정값을 확보할 수 있다면 예상 트래픽, 프롬프트 길이, 출력 길이, 최대 동시성, 허용 가능한 지연 시간도 추가하세요. 이러한 값은 토큰, GPU, 처리량, 비용 추정의 기준이 됩니다.

2. 요청 경로 개요 작성

가이드의 구성 요소를 조합한 상위 수준의 설계는 다음과 같이 나타낼 수 있습니다:

클라이언트
  -> AI 게이트웨이
  -> 인증 및 속도 제한
  -> 입력 가드레일 및 PII 처리
  -> 검색 파이프라인
       -> 쿼리 임베딩
       -> 벡터 또는 하이브리드 검색
       -> 재순위화
  -> 프롬프트 구성
  -> 모델 라우터 또는 추론 서버
  -> 출력 검증 및 가드레일
  -> 스트리밍 응답
  -> 추적, 평가, 비용 모니터링

이는 저장소에서 제공하는 코드가 아니라 설계 작업 문서입니다. 각 구성 요소는 가이드에서 다루는 주제에 해당합니다.

3. 검색 파이프라인 설계

원천 문서를 파싱하고 수집한 뒤 적절한 청크로 나누고, 임베딩을 생성하여 검색 가능한 표현을 저장하세요. 쿼리 시 관련 청크를 검색하고, 벡터 유사도만으로 충분한 관련성을 제공하지 못할 때는 하이브리드 검색이나 재순위화를 고려하세요.

최종 컨텍스트가 모델의 컨텍스트 윈도우 안에 들어가도록 유지하세요. 검색된 자료, 대화 기록, 지침이 공간을 두고 경쟁할 때는 가이드의 컨텍스트 관리 전략이 도움이 될 수 있습니다.

4. 지연 시간 및 스트리밍 계획

첫 번째 토큰까지의 시간과 생성 속도를 별도로 측정하세요. 프리필은 생성이 시작되는 속도에 영향을 주고, 디코드는 이후 토큰이 도착하는 속도에 영향을 줍니다. SSE 또는 WebSockets를 통한 스트리밍은 기본 모델 연산을 줄이지 않고도 체감 응답성을 높일 수 있습니다.

5. 안정성 및 안전성 추가

타임아웃, 백오프를 적용한 재시도, 대체 모델, 점진적 성능 저하, 출력 검증을 사용하세요. 모델 앞뒤에 입력 및 출력 가드레일을 배치하고, 프롬프트 인젝션을 방어하며, 필요한 경우 PII를 비식별화하고, 적절한 감사 로그를 보관하세요.

6. 평가 및 관찰

모델 호출만 모니터링하지 말고 전체 요청을 추적하세요. 가이드에서 제시하는 유용한 측정 항목에는 지연 시간, 처리량, 토큰 사용량, 비용, 검색 동작, 모델 출력 품질, 도구 실행, 에이전트 동작이 포함됩니다. LLM 출력은 비결정적이므로 평가에는 기존의 정확 일치 단위 테스트 이상의 방법이 필요합니다.

고급 팁

올바른 지연 시간 단계를 최적화하세요

모델 지연 시간을 하나의 숫자로 취급하지 마세요. 병목이 프리필(prefill), 디코드(decode), 검색, 대기열 처리 또는 외부 도구 중 어디에 있는지 진단하세요. 첫 토큰까지의 시간과 초당 토큰 수는 서로 다른 사용자 경험을 나타내며, 각각 다른 최적화가 필요할 수 있습니다.

모든 작업에 하나의 모델을 사용하지 말고 요청을 라우팅하세요

이 가이드에서는 여러 모델 라우팅 전략을 소개합니다. 프로덕션 설계에서는 요청을 분류하여 간단한 작업은 더 저렴한 모델로 보내고, 어려운 작업에는 더 강력한 모델을 사용할 수 있습니다. 캐스케이드 라우팅은 이전 응답이 충분하지 않을 때 다음 모델로 요청을 단계적으로 전환할 수 있습니다.

적절한 계층에 캐싱을 적용하세요

KV, 프롬프트, 시맨틱, 임베딩 캐시는 서로 다른 문제를 해결합니다. 먼저 반복되는 대상이 생성 상태인지, 프롬프트 접두사인지, 의미적으로 동일한 질문인지, 임베딩 계산인지 파악하세요. 그런 다음 이에 맞는 캐시를 선택하고 정확성, 최신성, 개인정보 보호 및 테넌트 경계를 고려하세요.

검색 품질을 파이프라인으로 다루세요

RAG 품질은 벡터 데이터베이스에만 좌우되지 않습니다. 파싱, 청킹, 임베딩, 쿼리 변환, 하이브리드 검색, 재순위화 및 컨텍스트 조합이 모두 최종 답변에 영향을 줍니다. 언어 모델을 탓하기 전에 검색 중간 결과를 평가하세요.

워크플로에 필요할 때만 에이전트를 사용하세요

예측 가능한 오케스트레이션과 도구 또는 작업을 동적으로 선택하는 에이전트를 구분하세요. 또한 이 가이드에서는 MCP가 표준화된 도구 및 컨텍스트 통합에 유용할 수 있지만, 단순한 워크플로에는 과도할 수 있다고 설명합니다. 요구사항을 충족하는 가장 단순한 접근 방식을 선택하세요.

토큰, GPU 및 비용을 초기에 추정하세요

대략적인 추정만으로도 구현 전에 비용이 많이 드는 가정을 드러낼 수 있습니다. 요청당 입력 및 출력 토큰 수, 요청량, 동시성, 처리량 요구사항 및 예상 모델 비용을 추정하세요. 영어 텍스트는 토큰당 평균 약 4자이지만, 실제 토큰화는 모델의 토크나이저에 따라 달라진다는 점을 기억하세요.

각 주제를 자신의 말로 설명하세요

README에서는 완료한 각 섹션을 다른 사람에게 설명해 보라고 권장합니다. 여기에 유용한 방법을 더한다면, 모든 아키텍처 선택의 트레이드오프를 문서화하는 것입니다. 대기열이 필요한 이유, 특정 캐시가 도움이 되는 이유, 폴백 모델을 허용할 수 있는 이유, 그리고 해당 선택이 품질, 지연 시간, 안전성 또는 비용에 미치는 영향을 기록하세요.

권장 실습 계획

  1. 가이드에서 주요 섹션 하나를 읽습니다.
  2. 본문을 보지 않고 해당 섹션의 목적과 트레이드오프를 요약합니다.
  3. 샘플 아키텍처에 해당 구성 요소를 추가합니다.
  4. 해당 구성 요소에 대한 측정 지표를 하나 이상 정의합니다.
  5. 장애 모드 하나와 완화 방법 하나를 설명합니다.
  6. 개요만으로 충분하지 않을 때 링크된 심화 문서를 읽습니다.
  7. 코딩 어시스턴트나 실시간 음성 에이전트 같은 사례 연구를 활용해 실습을 반복합니다.

이 접근 방식은 저장소를 단순한 참고 목록에서 실용적인 설계 커리큘럼으로 바꿔 줍니다.

결론

AI System Design은 LLM 추론의 기초부터 RAG, 에이전트, 안전성, 평가, 관측 가능성, 장애 허용 및 비용 최적화와 같은 프로덕션 고려사항까지 폭넓게 다루는 초보자 친화적인 학습 경로를 제공합니다. 설치하는 패키지가 아니라 AI 구성 요소가 함께 작동하는 방식을 이해하기 위한 체계적인 가이드입니다.

처음 시작한다면 기초부터 학습하고, 면접을 준비 중이라면 8단계 설계 프레임워크부터 시작하세요. 어느 경우든 모든 개념을 구체적인 시스템에 적용하고, 그 영향을 측정하며, 결정의 근거가 된 트레이드오프를 기록하세요.