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

N×N의 FP16(2바이트) 행렬끼리의 곱에서, 두 입력을 한 번씩 읽고 결과를 한 번 쓴다고 하자. 연산 강도(1바이트당 연산 수)는 대략 얼마인가?

  1. A1/3
  2. BN/3
  3. C3N
정답과 해설 보기

정답: B. N/3

연산 수는 2N³, 메모리 읽기/쓰기는 세 행렬로 3N² 요소이며 FP16이므로 6N² 바이트입니다. 연산 강도는 2N³ ÷ 6N² = N/3이고, N=1024이면 약 340이 됩니다. 행렬 곱은 클수록 1바이트당 계산이 늘어나므로 연산기의 성능을 끌어내기 쉬운 처리입니다. 반면 요소별 덧셈 같은 처리는 연산 강도가 1 미만이며 메모리 대역폭으로 속도가 결정됩니다.

  • A. N에 비례하여 커집니다.
  • B. 정답입니다. 2N³ ÷ 6N² = N/3입니다.
  • C. 연산 수를 너무 많이 어림했습니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 피크 성능 100 TFLOPS, 메모리 대역폭 2 TB/s의 가속기에서 연산 강도가 10 FLOP/바이트인 처리를 실행한다. Roofline 모델로 어림한 달성 가능한 성능은 얼마인가?
  2. 입력이 하나뿐일 때(배치 크기 1), 완전 연결층의 계산(가중치 행렬과 벡터의 곱)이 메모리 율속이 되기 쉬운 이유로 올바른 것은 무엇인가?
  3. 추론에서 배치 크기(한꺼번에 처리하는 입력의 수)를 키우면 전체 처리 효율이 올라가기 쉬운 이유는 무엇인가?
  4. 추론에서 배치 크기를 지나치게 키웠을 때의 단점으로 올바른 것은 무엇인가?
  5. 대규모 언어 모델의 추론은 입력 문장을 한꺼번에 처리하는 단계(프리필)와 토큰을 하나씩 출력으로 만드는 단계(디코드)로 나뉜다. 각각의 성능을 주로 결정하는 것의 조합으로 올바른 것은 무엇인가(배치가 작은 경우)?