1. 개요

ITL(Inter-Token Latency)은 LLM 이 토큰 하나를 낸 뒤 다음 토큰을 낼 때까지의 간격이다. 첫 토큰(TTFT)이 나온 뒤 이어지는 출력 단계(decode)의 속도이고, 화면에 글자가 타다닥 찍히는 속도가 바로 ITL 이다.

TTFT 가 “언제 나오기 시작하나"라면 ITL 은 “얼마나 빨리 나오나"다.

요청 하나 (입력 1,000토큰 → 출력 8토큰)대기 줄입력 처리 (prefill)토큰토큰토큰토큰토큰토큰토큰토큰↑ 느린 간격TTFT — 첫 토큰까지ITLE2E 지연 — 마지막 토큰까지TPOT = (E2E − TTFT) ÷ (출력 토큰 − 1) — 간격들의 평균. ITL 은 간격 하나하나라서 튀는 간격이 p95 에 드러난다
TTFT 는 '언제 나오기 시작하나', ITL 은 '얼마나 빨리 나오나', E2E 는 '언제 끝나나'

2. ITL 과 TPOT

이름이 비슷해 자주 헷갈리는 두 지표다.1

지표뜻읽는 법
ITL토큰 사이 간격 하나하나간격을 모두 모아 백분위수로 읽는다. 끊김이 보인다
TPOT (Time Per Output Token)요청 하나에서 첫 토큰 뒤 간격의 평균요청마다 한 값. (E2E 지연 − TTFT) ÷ (출력 토큰 수 − 1)

3. 얼마나 빨라야 하나

사람이 읽는 속도는 초당 몇~십여 토큰이다. 토큰 간격이 50ms(초당 20토큰) 보다 짧으면 출력이 읽는 속도보다 빠르다. 그보다 더 빨라져도 채팅에서는 체감 차이가 크지 않다.2

4. 길어지는 원인

토큰 하나를 만드는 단계는 처리 중인 요청을 한 번에 묶어(배치) 돌린다. 동시 요청이 많아 묶은 요청이 늘면 그 단계가 길어지고, 모든 요청의 ITL 이 함께 길어진다.

경우이유
MoE 모델의 높은 동시요청마다 다른 전문가를 읽어, 묶을수록 읽는 가중치가 늘어난다
큰 dense 모델토큰마다 가중치 전체를 메모리에서 읽어 메모리 대역폭에 막힌다

5. 여담

  • ITL 은 평균보다 분포가 중요하다. 평균이 30ms 라도 가끔 1초씩 멈추면 사용자는 “버벅인다"고 느낀다. 그래서 보통 p95·p99 로 본다.
  • 출력 단계는 계산보다 메모리에서 가중치를 읽는 속도에 막히는 경우가 많다. 그래서 같은 GPU 라도 토큰마다 읽는 가중치가 적은 MoE 모델이 dense 모델보다 ITL 이 짧게 나오곤 한다.

6. 관련 문서

  • TTFT — 첫 토큰까지의 시간
  • Concurrency — 동시 요청과 지연이 꺾이는 지점
  • MoE — 토큰 하나에 읽는 가중치를 줄이는 구조

7. 출처


  1. 도구마다 이름과 계산법이 조금씩 다르다. vLLM 의 vllm bench serve 는 ttft, tpot, itl, e2el 을 따로 낸다. ↩︎

  2. 사람이 아니라 프로그램(에이전트)이 결과를 받아 다음 일을 하는 경우는 다르다. 이때는 ITL 이 짧을수록 전체 작업이 빨리 끝난다. ↩︎