먼저 읽기

최종 업데이트

프리필·디코드 차이: TTFT와 tok/s 중 무엇을 봐야 하나

긴 입력은 TTFT, 긴 답은 디코드 속도가 기다림을 좌우해요

코드와 오류 설명을 보내면 LLM1은 먼저 입력을 읽고, 이어서 리뷰 답변을 만들어요. 입력 토큰2을 처리하는 단계는 프리필3(prefill), 답변 토큰을 차례로 만드는 단계는 디코드4(decode)예요. 프리필이 끝난 뒤 첫 답이 나오고, 디코드 동안 나머지 답이 이어져요.

코드와 오류 설명이 길면 첫 답을 기다리는 시간이 늘 수 있어요. 자세한 답을 요청하면 문장이 이어지는 시간도 길어질 수 있죠. 같은 코드 리뷰도 입력과 출력 길이에 따라 기다리는 구간이 달라져요. 두 단계를 알면 내 작업에 필요한 속도를 비교하기 쉬워요.

실행 조건과 핵심 내용
  • 프리필은 입력 토큰을 처리해 답변 준비 상태를 만드는 단계예요.
  • TTFT는 요청을 보낸 뒤 첫 출력 토큰을 받을 때까지 걸린 전체 시간이에요.
  • 디코드는 첫 토큰 뒤에 답변 토큰을 이어 만드는 단계예요.

첫 글자가 나오기 전, 입력을 읽어요

코드 리뷰 요청에는 코드, 오류 상황, 원하는 답의 범위가 들어가요. 모델은 답을 쓰기 전에 입력을 토큰 단위로 처리하고 토큰 사이의 관계를 계산해 답변에 쓸 상태를 준비해요. 이 과정이 프리필이에요. 그 뒤 디코드에서 답변 토큰을 차례로 만들어요. 파일 여러 개를 붙이면 입력 토큰이 늘어 첫 답까지 더 기다릴 수 있어요.

프리필 비교에서는 파일 수나 줄 수보다 실제 입력 토큰 수를 맞추는 게 중요해요. 코드의 token 분할 방식이 다르고, 앱이 관련 파일만 보낼지 저장소 내용을 넓게 포함할지도 다르기 때문이에요. 리뷰 앱이 모델에 실제로 보낸 입력 길이를 확인하면 처리 속도를 더 정확히 비교할 수 있어요.

긴 입력을 처리하는 프리필과 첫 토큰 뒤 답을 잇는 디코드 구간이 나뉘어 있어요.
첫 토큰 전 대기와 그 뒤 답변을 생성하는 시간은 다른 구간이에요.

첫 토큰까지의 기다림을 TTFT라고 해요

요청을 보낸 순간부터 첫 출력 토큰이 화면에 나타날 때까지가 TTFT5(time to first token)예요. 프리필 외에도 앱의 입력 준비와 요청 대기열, 토큰화, 실행 준비가 포함될 수 있어요. 프리필 처리량6은 입력 토큰을 처리하는 속도이고, TTFT는 요청부터 첫 토큰까지 사용자가 기다린 시간이에요.

입력 토큰/초는 프리필 처리량을, 첫 답까지의 기다림은 TTFT를 보면 돼요. 앱에서 대기열이나 입력 전처리 시간을 따로 보여주지 않을 수 있으므로, 실제 화면에 첫 토큰이 나타날 때까지 직접 잰 시간도 기록해요.

코드 리뷰 요청에서 각 지표가 가리키는 시간이에요.
단계·지표하는 일사용자가 기다리는 순간
프리필입력 토큰과 문맥을 처리해 답을 준비해요.코드와 오류 설명을 보낸 뒤 첫 토큰 전
TTFT요청부터 첫 출력 토큰까지의 전체 지연이에요.화면에 답변 첫 부분이 나타날 때까지
디코드첫 토큰 뒤 출력 토큰을 차례로 생성해요.답변이 화면에 계속 이어지는 동안
완료 시간첫 토큰 전 지연과 답변 생성이 모두 끝날 때까지예요.전체 리뷰가 완성될 때까지
GPU와 ANE를 함께 쓰면 프리필은? — M3 Ultra 512GB · Qwen3.8-27B oQ4e · oMLX 0.6.3rc2
4K와 16K 입력의 캐시 없는 공개 기록입니다. 0.7.0 측정값이 아니라 0.6.3rc2의 실행 경로 비교입니다.

답이 이어지는 속도는 디코드로 비교해요

첫 토큰 뒤 답변이 이어지는 속도는 초당 토큰 수(tok/s)로 나타내요. 같은 토큰 수의 답이라면 tok/s가 높을수록 디코드 시간이 짧아요. 다만 한국어 글자 수와 토큰 수는 일대일이 아니므로, tok/s만으로 완료 시간을 정확히 계산할 수는 없어요.

오류 원인 한 줄만 물으면 출력이 짧아 첫 토큰까지의 기다림이 더 크게 느껴질 수 있어요. 여러 파일의 수정 방향과 근거를 요청하면 답이 길어져, 시작은 빨라도 끝까지 받는 데 시간이 걸릴 수 있죠. 원하는 답의 길이에 따라 더 중요하게 볼 지표가 달라져요.

긴 입력·짧은 출력 작업과 짧은 입력·긴 출력 작업의 길이를 나란히 비교해요.
문서 요약과 글쓰기·코딩은 입력과 출력의 비중이 달라 살펴볼 지표도 달라요.

첫 응답부터 완료까지 시간을 계산해요

예를 들어 TTFT가 8초이고 답변이 500토큰, 디코드 속도가 50 tok/s라면 생성에 500÷50=10초가 걸려요. 첫 토큰까지 기다린 시간도 더해 완료까지 약 18초예요. 프리필이 개선돼 TTFT가 4초가 되면 약 14초, 디코드가 100 tok/s가 되면 약 13초로 계산돼요. 실제 완료 시간은 첫 토큰 전 지연과 남은 답변 생성 시간을 합친 값이에요. 아래는 계산을 단순화한 가정이지 장비 실측이 아니에요.

좌우로 밀어 표 전체를 비교하세요.

500토큰 답변을 가정한 완료 시간 계산이에요.
가정TTFT디코드 속도완료까지
기준8초50 tok/s약 18초 (8+500÷50)
프리필 개선4초50 tok/s약 14초 (4+500÷50)
디코드 개선8초100 tok/s약 13초 (8+500÷100)

반복 입력과 새 입력은 다르게 처리돼요

같은 코드 리뷰를 이어갈 때 입력 앞부분이 반복되면 프롬프트7 캐시가 그 계산 상태를 재사용해 TTFT를 줄일 수 있어요. 이는 SSD8에서 모델 파일을 다시 불러오는 일과 달라요. 캐시가 유지되는지, 질문 앞부분이 얼마나 일치하는지에 따라 재사용량이 달라져요.

SpecPrefill9은 긴 새 입력에서 처리할 토큰을 선별해 본 모델이 계산할 양을 줄이려는 방법이에요. 프롬프트 캐시가 이전 요청의 공통 입력을 다시 쓴다면, SpecPrefill은 새 입력에서 처리할 부분을 골라요. 코드 리뷰에서는 빠진 부분에 오류 원인이 있을 수 있으므로 필요한 근거가 답에서 유지되는지 원본 코드와 대조해요.

후속 질문은 문서의 다른 구절이나 앞선 대화를 더 포함할 수 있어 입력 전체가 짧아지지는 않아요. 새로 검색된 문단은 처리해야 하고, 캐시가 일부 공통 prefix를 재사용할 수 있어요. 자료 이름, 질문, 문서 처리 방식, 모델, 앱 버전을 기록하면 결과를 다시 확인하기 쉬워요.

처음부터 입력을 계산하는 요청과 저장한 캐시를 재사용하는 요청을 비교해요.
캐시 상태를 맞춰야 TTFT 비교에서 공통 입력 재사용의 영향을 알 수 있어요.

내 작업에서 기다리는 구간을 직접 비교해요

같은 코드와 질문을 고정해 모델을 비교하면 첫 답이 늦는지, 답변이 천천히 이어지는지 나눠 볼 수 있어요. 같은 조건으로 몇 번 실행해 TTFT와 완료 시간을 따로 적고, 새 대화의 첫 요청인지 캐시가 남은 후속 질문인지 표시해요.

비교 화면에서 입력 길이를 바꾸거나 전체 모드와 디코드만 모드를 선택할 수 있어요. 전체 모드는 첫 토큰 전 지연과 답변 생성을 합쳐 보여주고, 디코드만 모드는 출력이 이어지는 속도를 비교해요. 표시값은 선택한 조건의 예상치라 실제 앱에서 같은 코드를 실행한 시간과 다를 수 있어요.

용어 각주

  1. 대규모 언어 모델 — 대규모 텍스트 데이터에서 언어 패턴을 학습해 문맥에 맞는 텍스트를 처리하고 생성하는 모델입니다.

    본문으로 돌아가기
  2. 토큰 — 모델이 입력이나 출력을 나누어 처리하는 단위입니다.

    본문으로 돌아가기
  3. 프리필 — LLM이 입력 프롬프트를 읽고 각 토큰의 내부 표현을 계산하는 단계입니다. 입력이 길수록 처리할 토큰이 많아집니다.

    본문으로 돌아가기
  4. 토큰 디코드 — 입력과 앞서 만든 답변을 바탕으로 다음 출력 토큰을 차례로 생성하는 단계입니다.

    본문으로 돌아가기
  5. 첫 토큰 지연 — 요청을 보낸 뒤 첫 출력 토큰이 도착하기까지 걸린 시간입니다.

    본문으로 돌아가기
  6. 처리량 — 일정 시간 동안 처리하거나 생성한 작업량입니다. 토큰/초, 요청/초처럼 단위를 함께 확인해야 비교할 수 있습니다.

    본문으로 돌아가기
  7. 프롬프트 — 모델에 보내는 입력문입니다. 생성 모델에서는 만들 결과를 설명하는 문장이 되어 출력의 구성과 내용을 크게 좌우합니다.

    본문으로 돌아가기
  8. SSD — 플래시 메모리를 사용하는 데이터 저장 장치입니다. 전원이 꺼져도 데이터가 보존됩니다.

    본문으로 돌아가기
  9. SpecPrefill — 가벼운 모델로 입력 토큰의 중요도를 추정하고, 선택한 토큰을 본 모델에 전달해 프리필 계산을 줄이는 기법입니다. 본 모델이 읽지 않는 문맥이 생기므로 토큰 선택이 답변에 반영될 정보를 바꿀 수 있습니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
코드와 오류 설명을 보내면 LLM은 먼저 입력을 읽고, 이어서 리뷰 답변을 만들어요. 입력 토큰을 처리하는 단계는 프리필(prefill), 답변 토큰을 차례로 만드는 단계는 디코드(decode)예요. 프리필이 끝난 뒤 첫 답이 나오고, 디코드 동안 나머지 답이 이어져요.