프리필 (Prefill)
이 페이지는 자동화 문맥에서 자주 쓰이는 프리필 (Prefill)의 뜻과 쓰임을 중급 난이도 기준으로 정리한 AI 용어사전 항목입니다. 정의와 맥락, 관련 용어 5개 순서로 묶었으니, 아래 설명을 먼저 읽고 연결된 개념과 글까지 이어서 보면 이해가 빨라집니다.
프리필(Prefill)은 언어 모델이 답변을 만들기 전에 요청의 입력 토큰을 읽고, 그 토큰들의 문맥을 계산해 KV 캐시를 채우는 추론 구간입니다. 일반적인 디코더 전용 텍스트 모델에서는 입력의 마지막 위치에서 다음 토큰 후보의 점수인 로짓(logits)도 얻습니다. 이 점수에 토큰 선택 규칙을 적용하면 첫 응답 토큰을 고를 수 있으므로, 프리필은 입력을 단순히 받아두는 일이 아니라 생성이 시작될 상태를 만드는 과정입니다.
입력을 읽는 구간
사용자가 긴 계약서와 함께 “해지 조건만 알려줘”라고 보냈다고 가정해 보겠습니다. 서비스는 먼저 질문과 계약서 전체를 토크나이저로 나누고 모델에 넣습니다. 프리필 동안 각 입력 토큰은 자신과 앞선 토큰들을 참고하며 처리되고, 어텐션에 필요한 키와 값이 층마다 KV 캐시에 저장됩니다. Hugging Face의 KV 캐시 설명은 자기회귀 모델이 토큰 하나씩 예측할 때 이전 계산을 다시 하지 않도록 이 값을 재사용한다고 설명합니다.
입력이 길수록 프리필에서 처리할 토큰도 늘어납니다. 짧은 질문만 보낼 때는 이 구간이 눈에 잘 띄지 않지만, 대화 기록과 문서 여러 장을 함께 넣으면 첫 출력 토큰이 나오기 전 기다림의 큰 부분이 될 수 있습니다. 다만 실제 시간은 토큰 수만으로 정해지지 않습니다. 모델 크기, 하드웨어, 배치 크기, 다른 요청의 대기열, 토큰화와 서버 처리도 함께 영향을 줍니다. 그래서 프리필 시간을 TTFT(Time to First Token)와 같은 값으로 두면 안 됩니다. TTFT에는 요청이 도착한 뒤의 대기와 입력 준비, 프리필, 첫 토큰의 선택과 전송이 함께 들어갈 수 있습니다. 첫 토큰을 프리필의 끝으로 볼지 디코드의 첫 단계로 볼지도 구현과 측정 정의에 따라 다릅니다.
첫 토큰 전의 시간
프리필은 보통 입력 토큰을 여럿 묶어 계산하므로, 생성 토큰을 하나씩 내는 구간과 다른 작업 특성을 보일 수 있습니다. vLLM의 청크 프리필 안내는 프리필은 보통 연산 처리 성능에, 디코드는 보통 메모리 대역폭에 제약을 받는 작업으로 설명합니다. 이는 모든 모델과 GPU에서 고정된 법칙이라는 뜻은 아닙니다. 입력 길이, 배치 구성, 메모리 대역폭, 어텐션 방식이 달라지면 병목도 달라질 수 있습니다.
여러 사람이 동시에 요청하면 서버는 입력이 짧은 요청과 긴 요청을 함께 다뤄야 합니다. 긴 프롬프트 하나를 끝까지 프리필하면 이미 답변을 생성 중인 요청의 다음 토큰이 늦어질 수 있습니다. 청크 프리필은 큰 입력을 작은 조각으로 나누고, 남는 배치 예산에 넣어 디코드 요청과 함께 스케줄하는 방법입니다. vLLM은 이때 디코드를 먼저 배치하고 남은 토큰 예산으로 프리필을 넣는 정책을 문서화합니다. 처리량과 첫 토큰 지연, 토큰 사이 지연 사이에는 이런 조정이 필요합니다.
캐시와 운영
KV 캐시는 프리필의 결과이면서 이후 디코드가 출발하는 기록입니다. 같은 대화의 다음 차례에서는 이전 대화와 시스템 지시처럼 바뀌지 않은 앞부분을 다시 계산하지 않도록 설계할 수 있습니다. vLLM의 자동 접두사 캐싱도 두 요청이 같은 접두사를 가질 때 그 공유 부분의 KV 캐시를 재사용해 프리필 계산을 건너뜁니다. 긴 문서를 같은 지시와 함께 여러 번 묻는 경우에 특히 도움이 될 수 있습니다.
하지만 접두사 캐시는 모든 요청을 빠르게 만들지 않습니다. 공유 접두사가 없으면 재사용할 계산도 없고, 답변이 길면 새 토큰을 만드는 디코드 시간이 더 큰 비중을 차지할 수 있습니다. 같은 문서라도 앞에 붙는 시스템 지시나 대화 순서가 달라져 공유 부분이 줄면 기대한 재사용이 일어나지 않을 수 있습니다. 운영 중에는 긴 입력과 짧은 입력을 나누고, 각 그룹의 평균 TTFT와 95번째 백분위 지연처럼 느린 요청의 수준을 나타내는 지표를 함께 살펴봅니다. 입력 길이는 주로 프리필과 첫 응답의 체감 시간에, 출력 길이는 디코드 횟수와 전체 완료 시간에 영향을 줍니다. 그래서 서비스 성능을 볼 때는 입력과 출력 길이, TTFT, 토큰 사이 지연, 처리량을 따로 기록하는 편이 원인을 찾기 쉽습니다. 프리필은 입력 문맥을 처리하는 구간이므로, 첫 응답이 늦는 원인을 살필 때 따로 측정할 필요가 있습니다.
관련 용어
프리필 (Prefill)와 함께 자주 언급되는 개념들입니다. 비슷한 말처럼 보여도 역할과 쓰임은 다를 수 있습니다.
