AI 하드웨어·소프트웨어 스택

대규모 언어 모델의 추론은 입력 문장을 한꺼번에 처리하는 단계(프리필)와 토큰을 하나씩 출력으로 만드는 단계(디코드)로 나뉜다. 각각의 성능을 주로 결정하는 것의 조합으로 올바른 것은 무엇인가(배치가 작은 경우)?

  1. A프리필은 메모리 대역폭, 디코드는 연산 성능
  2. B프리필은 연산 성능, 디코드는 메모리 대역폭
  3. C둘 다 스토리지의 속도
정답과 해설 보기

정답: B. 프리필은 연산 성능, 디코드는 메모리 대역폭

프리필에서는 입력의 수백~수천 토큰을 한꺼번에 계산하므로 가중치를 많은 토큰에서 재사용할 수 있고, 행렬끼리의 곱이 되어 연산 율속이 됩니다. 디코드에서는 토큰 하나를 만들 때마다 모든 가중치를 읽어 오면서 토큰 한 개분의 계산만 하므로 연산 강도가 낮아 메모리 율속이 됩니다. 그래서 디코드의 속도는 대체로 메모리 대역폭 ÷ 가중치 크기로 결정됩니다.

  • A. 반대입니다.
  • B. 정답입니다. 디코드는 토큰마다 모든 가중치를 읽습니다.
  • C. 추론 중에 가중치는 메모리에 올라가 있습니다.
이 분야 연습하기 분야로 돌아가기

AI 하드웨어·소프트웨어 스택의 다른 문제

  1. 대규모 언어 모델의 추론에서 사용되는 KV 캐시의 역할로 올바른 것은 무엇인가?
  2. 대규모 언어 모델의 추론에서 긴 문장이나 큰 배치를 다룰 때 문제가 되기 쉬운 것은 무엇인가?
  3. FP16으로 약 14 GB의 가중치를 가진 모델을 메모리 대역폭 2 TB/s의 GPU에서 배치 크기 1로 디코드한다. 토큰 하나를 생성하는 데 걸리는 시간의 하한에 가장 가까운 것은 무엇인가?
  4. Transformer 셀프 어텐션의 계산량은 입력 시퀀스 길이 n에 대해 어떻게 늘어나는가?
  5. FlashAttention 등 고속 어텐션 구현의 주된 발상으로 올바른 것은 무엇인가?