생성형 AI 프롬프트 처리 메커니즘: 토큰화부터 프리필·디코드 추론과 KV 캐시 최적화까지

생성형 AI가 프롬프트를 처리하는 전체 메커니즘을 해설합니다. BPE 토큰화, 트랜스포머 연산의 프리필(Prefill)과 디코드(Decode) 단계, KV 캐시 메모리 병목, TTFT 및 ITL 지표와 API 비용 절감 전략을 확인하세요.
생성형 AI 프롬프트 처리 메커니즘: 토큰화부터 프리필·디코드 추론과 KV 캐시 최적화까지

1. 생성형 AI 프롬프트 처리 과정의 이해

생성형 AI(대형 언어 모델, LLM)에 질문이나 명령 형태의 프롬프트를 입력하면 불과 수백 밀리초에서 수 초 이내에 매끄러운 답변이 한 단어씩 화면에 출력됩니다. 일반 독자나 사용자의 눈에는 AI가 즉석에서 질문을 이해하고 자연스럽게 대답하는 것처럼 보입니다. 하지만 그 이면에 존재하는 GPU 하드웨어와 트랜스포머(Transformer) 신경망 내부에서는 매우 정교한 단계를 거치는 추론(Inference) 파이프라인이 동작하고 있습니다.

AI 기술을 서비스에 도입하려는 기업, 소프트웨어 개발자, 그리고 AI 생태계에 투자하는 자산가들에게 이 추론 메커니즘을 이해하는 것은 단순한 호기심 충족 이상의 의미를 갖습니다. 프롬프트가 처리되는 병목 구간과 메모리 구조를 이해해야 서비스 응답 속도(Latency)를 극대화하고, 불필요하게 낭비되는 API 비용을 획기적으로 줄일 수 있기 때문입니다. 본 글에서는 입력된 텍스트가 숫자로 바뀌는 토큰화부터, 트랜스포머 엔진의 프리필(Prefill) 및 디코드(Decode) 연산, KV 캐시(KV Cache) 최적화에 이르는 전 과정을 세밀히 분석합니다.

2. 1단계: 텍스트를 숫자로 바꾸는 토큰화와 임베딩

바이트 쌍 인코딩(BPE)과 서브워드 분할

인공지능 신경망은 인간이 사용하는 언어(한국어, 영어 등)를 텍스트 상태로 직접 읽거나 이해하지 못합니다. 신경망이 처리할 수 있는 데이터는 오직 수치화된 벡터(Vector)와 정수 연산뿐입니다. 따라서 프롬프트가 제출되는 순간 가장 먼저 작동하는 시스템이 바로 토크나이저(Tokenizer)입니다.

현대 대부분의 LLM은 바이트 쌍 인코딩(Byte Pair Encoding, BPE) 또는 유사한 서브워드(Subword) 분할 알고리즘을 사용합니다. BPE는 자주 쓰이는 단어는 하나의 독립된 토큰(Token)으로 할당하고, 드물게 쓰이거나 복합적인 단어는 여러 조각(Subword)으로 쪼개어 정수 ID로 변환합니다. 예를 들어 영문의 경우 ‘the’나 ‘inference’ 같은 보편적인 단어는 토큰 1개로 변환되지만, 어휘 집약도가 다른 희귀 단어나 조합어는 2~3개 이상의 토큰 ID로 나누어집니다.

특히 한국어는 조사와 어미가 발달한 아교목어적 특성으로 인해 영문 데이터 중심의 토크나이저를 거칠 때 동일한 길이의 문장이라도 영문 대비 1.5배에서 2.5배 더 많은 토큰으로 파편화되는 현상이 발생합니다. 이는 AI 모델의 처리 속도를 낮추고 API 호출 비용을 올리는 주요 원인이 됩니다.

토큰 임베딩과 포지셔널 인코딩

정수 ID 형태로 변환된 토큰 시퀀스는 다음으로 임베딩 레이어(Embedding Layer)를 통과합니다. 이 과정에서 각 토큰 ID는 수천 차원의 고차원 고정 길이 벡터로 변환되며, 데이터베이스에 축적된 수많은 단어 간의 의미적 유사성 정보가 벡터 공간상의 좌표로 배치됩니다.

동시에 트랜스포머 아키텍처는 문장을 순차적으로 읽는 이전의 RNN(순환신경망)과 달리 전체 문장을 한 번에 병렬로 읽어 들이므로, 단어의 위치 정보를 알려주는 포지셔널 인코딩(Positional Encoding) 벡터가 결합됩니다. 이 단계가 완료되어야 비로소 AI 엔진이 프롬프트 내 각 단어의 위치와 의미적 기초를 다루는 수치 데이터를 완성하게 됩니다.

3. 2단계: 트랜스포머 추론의 두 얼굴, 프리필과 디코드

트랜스포머 신경망 내부에서 일어나는 추론 작업은 단일한 과정으로 진행되지 않습니다. 컴퓨팅 리소스의 사용 특성이 서로 완전히 다른 두 가지 핵심 단계인 프리필(Prefill)과 디코드(Decode) 단계로 명확히 나누어집니다.

프리필 단계(Prefill Phase): 프롬프트의 병렬 맥락 연산

프리필 단계는 사용자가 제출한 전체 프롬프트(시스템 지침, 이전 대화 기록, 첨부된 RAG 문서 등)를 입력받아 동시에 처리하는 과정입니다. 모델은 입력된 모든 토큰 사이의 관계를 한 번에 계산하는 **셀프 어텐션(Self-Attention)** 연산을 수행합니다.

이 단계의 가장 큰 특징은 **연산 집약적(Compute-Bound)**이라는 점입니다. 입력된 수백~수천 개의 토큰에 대한 행렬 곱셈 연산이 GPU의 수천 개 스트리밍 다중 프로세서(SM)에서 동시에 병렬 처리됩니다. 따라서 프리필 단계는 GPU의 최고 연산 성능(TFLOPS)을 최대로 활용하며, 질문을 던진 후 첫 번째 단어가 화면에 출력되기까지 걸리는 시간인 **TTFT(Time to First Token)**를 직접적으로 결정짓습니다.

디코드 단계(Decode Phase): 자기회귀적 토큰 순차 생성

첫 번째 출력 토큰이 결정되고 나면 모델은 디코드 단계로 전환됩니다. 디코드 단계에서는 한 번에 단 하나의 토큰만을 예측하여 생성하는 **자기회귀(Autoregressive)** 연산을 수행합니다. 새로 생성된 토큰은 즉시 다음 연산의 입력으로 포함되며, 이 루프가 완료 신호(End-of-Sequence)가 나올 때까지 반복됩니다.

디코드 단계의 핵심 특징은 **메모리 대역폭 집약적(Memory-Bandwidth Bound)**이라는 점입니다. 한 번에 단 하나의 토큰만을 연산하기 때문에 GPU 연산 코어의 가동률은 낮아지는 반면, 수십~수백억 개의 모델 가중치 파라미터를 GPU VRAM 메모리에서 연산 장치로 매 단어 생성 시점마다 지속적으로 읽어 들여야 합니다. 따라서 디코드 단계의 속도는 GPU의 연산력보다는 메모리 대역폭(TB/s)에 의해 제한되며, 토큰과 토큰 사이의 생성 간격을 나타내는 **ITL(Inter-Token Latency)**을 좌우합니다.

4. 추론 성능을 결정하는 KV 캐시와 메모리 최적화

Key-Value 캐시(KV Cache)의 원리와 필요성

디코드 단계에서 매번 새로운 단어를 생성할 때마다 이전 프롬프트와 기존 출력 단어 전체를 처음부터 다시 트랜스포머 어텐션 레이어에 넣어 계산한다면 연산량은 토큰 길이에 비례해 제곱(O(N^2))으로 폭증할 것입니다. 이를 방지하기 위해 사용되는 기술이 바로 **KV 캐시(Key-Value Cache)**입니다.

프리필 단계 및 이전 디코드 단계에서 이미 계산된 토큰들의 Key 벡터와 Value 벡터를 GPU VRAM에 메모리로 보관해두고, 새 토큰을 연산할 때는 이 캐시된 데이터만 불러와 어텐션을 수행합니다. KV 캐시를 활용하면 불필요한 재연산을 완벽히 배제할 수 있어 긴 문장을 생성할 때 추론 속도를 획기적으로 향상시킬 수 있습니다.

KV 캐시의 메모리 병목과 PagedAttention 혁신

그러나 KV 캐시는 또 다른 차원의 문제인 메모리 용량 부족(VRAM Bottleneck)을 야기합니다. 토큰 1개당 필요한 KV 캐시 용량은 다음과 같은 공식으로 결정됩니다.

KV 캐시 크기 = 2 × (레이어 수) × (어텐션 헤드 수 × 헤드 차원) × (정밀도 바이트 수)

예를 들어 대규모 파라미터 모델에서 프롬프트 길이가 길어지거나 동시 접속 사용자 수(Batch Size)가 늘어나면, KV 캐시가 점유하는 메모리가 수십~수백 기가바이트에 달해 모델 자체 가중치보다 커지는 현상이 발생합니다. 이에 따라 2026년 현재 최신 AI 서빙 프레임워크(vLLM 등)는 가상 메모리 페이징 기법을 응용한 **PagedAttention** 기술을 도입하여, 메모리 파편화를 방지하고 KV 캐시를 효율적으로 분할 관리함으로써 고밀도 병렬 추론을 구현하고 있습니다.

5. 성능 지표와 API 비용 구조 절감 전략

성능 지표: TTFT와 ITL의 차이점

생성형 AI 시스템의 성능을 평가할 때는 단순 대기 시간이 아닌 두 가지 정밀 지표를 구분하여 측정해야 합니다.

  • TTFT (Time to First Token): 사용자가 프롬프트를 전송한 후 첫 번째 토큰이 응답될 때까지의 시간입니다. 프리필 연산 속도와 직결되며, 시스템 프롬프트나 RAG 컨텍스트가 길수록 길어집니다.
  • ITL (Inter-Token Latency): 첫 토큰이 나온 이후, 다음 토큰들이 연속적으로 출력되는 시간 간격입니다. 디코드 메모리 대역폭 및 모델 크기에 직결됩니다.

API 토큰 비용 및 프롬프트 캐싱(Prompt Caching)

주요 대형 언어 모델 제공업체(OpenAI, Anthropic, Google 등)는 API 사용료를 산정할 때 입력 토큰(Input Token)과 출력 토큰(Output Token)의 단가를 다르게 책정합니다. 프리필 단계에서 소비되는 입력 토큰은 단가가 상대적으로 저렴하지만, 긴 컨텍스트를 반복 송신하면 누적 비용이 커집니다.

이를 극복하기 위해 최신 API 환경에서는 **프롬프트 캐싱(Prompt Caching)**을 적극 활용합니다. 자주 변경되지 않는 고정 시스템 지침, 페르소나 설정, 대용량 참조 문서 데이터를 프롬프트의 맨 앞부분에 고정 배치하면, 서버 측에서 해당 구간의 KV 캐시를 유지하여 재사용합니다. 이를 통해 입력 비용을 최대 50~80% 절감하고 TTFT 대기 시간을 획기적으로 줄일 수 있습니다.

6. 실무자를 위한 프롬프트 추론 최적화 체크리스트

AI 서비스를 구축하거나 프롬프트 엔지니어링을 수행할 때 추론 효율을 극대화하기 위해 점검해야 할 핵심 실천 지침은 다음과 같습니다.

  1. 고정 컨텍스트 상단 배치: 시스템 지침과 공통 참조 자료는 프롬프트 최상단에 고정하여 서버의 프롬프트 캐시 적중률(Hit Rate)을 높입니다.
  2. 불필요한 수식어 제거: BPE 토큰화 단계를 감안하여 과도하게 긴 한국어 수식어나 중복 문장을 정제함으로써 프리필 단계의 컴퓨팅 부담을 줄입니다.
  3. 양자화(Quantization) 모델 활용: 16비트(FP16) 가중치를 8비트(INT8) 또는 4비트(INT4)로 압축한 양자화 모델을 추론 환경에 적용하여 VRAM 사용량을 축소하고 디코드 메모리 대역폭 병목을 완화합니다.
  4. 추측 디코딩(Speculative Decoding) 도입: 크기가 작은 초안 모델(Draft Model)이 여러 토큰을 빠르게 생성하고, 대형 메인 모델이 이를 한 번에 검증하는 방식을 채택하여 전체 ITL을 2~3배 축소합니다.

7. 추론 과정의 리스크와 한계점

프롬프트 처리 및 추론 메커니즘을 이해할 때 주의해야 할 리스크 요소도 존재합니다.

첫째, **확률적 샘플링에 따른 할루시네이션(Hallucination)**입니다. 디코드 단계에서 다음 토큰을 선택할 때 사용되는 소프트맥스(Softmax) 확률 분포와 온도가 높게 설정되면, 이전 토큰의 미세한 오차가 뒤이어 생성되는 전체 문장의 심각한 사실 왜곡으로 누적될 수 있습니다.

둘째, **VRAM OOM(Out of Memory) 현상**입니다. 동시 요청량이 순간적으로 폭증하거나 사용자가 예측 범위를 초과하는 긴 프롬프트를 입력하면, KV 캐시 용량이 GPU 메모리 한계를 초과하여 서버가 중단되는 리스크가 발생합니다.

8. 2026년 추론 생태계 전망

2026년 현재 생성형 AI 산업은 모델 학습(Training) 중심에서 **추론(Inference) 효율화** 중심으로 급격히 축이 이동하고 있습니다. 거대 데이터센터에 의존하던 추론 환경은 NPU(신경망처리장치) 기반의 **온디바이스(On-Device) AI**로 빠르게 확산되고 있으며, 수백만 토큰 이상의 초장문 컨텍스트를 처리하기 위한 선형 어텐션(Linear Attention) 등 신규 아키텍처 연구가 활발히 진행 중입니다.

결론적으로 프롬프트 처리 과정의 토큰화, 프리필과 디코드의 연산 차이, 그리고 KV 캐시의 메커니즘을 정확히 파악하는 것은 AI 시스템의 비용 효율성과 사용자 경험을 결정짓는 핵심적인 경쟁력이 됩니다.

자주 묻는 질문 (FAQ)

Q1. 프롬프트가 길어지면 왜 AI의 첫 번째 답변 출력(TTFT)이 느려지나요?

프롬프트가 길어지면 트랜스포머의 프리필(Prefill) 단계에서 처리해야 할 토큰 수가 늘어납니다. 이 단계에서는 모든 토큰 간의 관계를 계산하는 셀프 어텐션 연산량이 급증하므로, 첫 번째 토큰이 생성되기까지의 시간인 TTFT가 늘어나게 됩니다.

Q2. KV 캐시(KV Cache)란 무엇이며 왜 메모리를 많이 차지하나요?

KV 캐시는 이전 토큰들의 연산 결과(Key, Value)를 GPU VRAM에 저장해 두어, 다음 단어 생성 시 매번 처음부터 다시 연산하지 않도록 돕는 메모리 기술입니다. 단어 생성 속도를 비약적으로 높여주지만, 문장이 길어지거나 동시 사용자가 많아지면 수십 기가바이트 이상의 VRAM을 점유하게 됩니다.

Q3. AI API 비용을 줄이기 위한 가장 효과적인 프롬프트 구성법은 무엇인가요?

자주 사용되는 시스템 지침이나 대용량 참조 문서를 프롬프트 최상단에 고정 배치하여 API 공급업체의 ‘프롬프트 캐싱’ 기능을 활성화하는 것입니다. 또한 불필요한 토큰 생성을 유발하는 유미어 및 중복 표현을 다이어트하는 것이 비용 절감의 핵심입니다.

출처