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

FlashAttention 등 고속 어텐션 구현의 주된 발상으로 올바른 것은 무엇인가?

  1. A계산을 타일로 나누어 칩 위의 메모리에서 진행하고, n×n의 큰 중간 표를 HBM에 쓰지 않음으로써 메모리 읽기/쓰기를 줄인다
  2. B어텐션 계산을 생략하고 근사한 답을 낸다
  3. C어텐션을 CPU에서 계산한다
정답과 해설 보기

정답: A. 계산을 타일로 나누어 칩 위의 메모리에서 진행하고, n×n의 큰 중간 표를 HBM에 쓰지 않음으로써 메모리 읽기/쓰기를 줄인다

단순한 구현에서는 n×n 표를 HBM에 쓰고, 소프트맥스를 위해 다시 읽고, 다시 Value와의 곱을 위해 또 읽으므로 메모리 읽기/쓰기가 성능을 결정해 버립니다. FlashAttention은 Query와 Key·Value를 블록으로 나누어 공유 메모리에 읽어 들이고, 소프트맥스를 조금씩 갱신하면서 계산을 한 번에 진행하여 표를 HBM에 쓰지 않습니다. 계산량은 같아도 메모리 읽기/쓰기가 크게 줄어 빨라집니다.

  • A. 정답입니다. 결과는 일반 어텐션과 같습니다.
  • B. 근사가 아니라 같은 결과를 정확하게 냅니다.
  • C. GPU의 칩 위 메모리를 활용합니다.
이 분야 연습하기 분야로 돌아가기

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

  1. AI 계산에서 사용되는 '연산 융합(오퍼레이터 퓨전)'의 주된 목적은 무엇인가?
  2. 행렬 곱의 결과에 바이어스를 더하고 ReLU를 통과시키는 처리를 3개의 별개 커널에서 하나로 융합했다. 주로 줄어드는 것은 무엇인가?
  3. XLA, TVM, PyTorch의 컴파일 기능과 같은 AI 컴파일러가 수행하는 주된 처리로 올바른 것은 무엇인가?
  4. AI 프레임워크나 컴파일러에서 사용되는 '계산 그래프'의 설명으로 올바른 것은 무엇인가?
  5. ONNX의 설명으로 올바른 것은 무엇인가?