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

학습에 필요한 메모리가 같은 모델의 추론보다 훨씬 커지는 이유로 해당하지 않는 것은 무엇인가?

  1. A학습에서는 가중치의 수가 추론의 몇 배로 늘어나기 때문
  2. B역전파에 사용하기 위해 순전파 중간 결과(활성화)를 저장해 두어야 하기 때문
  3. C가중치와 같은 수의 기울기와 옵티마이저 상태를 가져야 하기 때문
정답과 해설 보기

정답: A. 학습에서는 가중치의 수가 추론의 몇 배로 늘어나기 때문

모델의 가중치 수는 학습에서나 추론에서나 같습니다. 그러나 학습에서는 역전파로 기울기를 계산하기 위해 순전파의 중간 결과를 각 층에서 저장해야 하고, 가중치와 같은 수의 기울기와 Adam 등의 옵티마이저가 가지는 가중치별 값(두 개의 이동 평균 등)도 필요합니다. 그래서 학습의 메모리는 가중치만으로 충분한 추론의 몇 배가 되며, 큰 모델의 학습에는 다수의 GPU가 필요합니다.

  • A. 정답입니다. 가중치의 수는 학습에서나 추론에서나 같습니다.
  • B. 활성화 저장은 학습 메모리의 큰 부분을 차지합니다.
  • C. 기울기와 옵티마이저 상태로 가중치의 몇 배에 달하는 메모리가 필요합니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 파라미터 수 70억(7B)의 모델을 가중치, 기울기, Adam의 두 상태를 모두 FP32(4바이트)로 가지고 학습한다. 활성화를 제외하고 필요한 메모리에 가장 가까운 것은 무엇인가?
  2. 파라미터 수 70억(7B)의 모델 가중치를 FP16(2바이트)으로 가지면, 가중치 메모리는 대략 얼마인가?
  3. 앞 문제의 7B 모델을 FP16(약 14 GB)에서 4비트 정수(INT4)로 양자화하면, 가중치 메모리는 대략 얼마가 되는가?
  4. M×K 행렬과 K×N 행렬의 곱을 계산할 때의 부동소수점 연산 횟수(곱셈과 덧셈을 따로 센다)는 대략 얼마인가?
  5. N×N의 FP16(2바이트) 행렬끼리의 곱에서, 두 입력을 한 번씩 읽고 결과를 한 번 쓴다고 하자. 연산 강도(1바이트당 연산 수)는 대략 얼마인가?