챕터별 상세
강의 개요 및 리소스 회계의 중요성
텐서 기초와 메모리 저장 방식
Float32는 부호 1비트, 지수 8비트, 가수 23비트로 구성되어 정밀도가 높지만 메모리 소모가 큽니다.
BFloat16과 수치적 안정성
동적 범위(Dynamic Range)가 넓으면 아주 작은 값부터 아주 큰 값까지 표현 가능하여 학습 안정성이 높아집니다.
혼합 정밀도 학습(Mixed Precision Training)
GPU 메모리 이동 및 관리
Einops를 활용한 직관적 텐서 조작
Einsum(Einstein Summation) 표기법을 기반으로 하며, 차원의 의미를 텍스트로 명시하는 방식입니다.
연산량 측정 단위: FLOPs
FLOP은 연산 횟수(단위), FLOPs는 연산 속도(단위/시간)를 의미합니다.
행렬 곱셈의 연산량 계산
z = einsum(x, y, "batch seq1 hidden, batch seq2 hidden -> batch seq1 seq2")Einops 라이브러리를 사용하여 복잡한 텐서 차원 조작과 행렬 곱셈을 직관적으로 수행하는 예시
연산 밀도(Arithmetic Intensity) 분석
Roofline 모델은 연산 밀도에 따른 프로세서의 실제 성능 한계를 시각화한 그래프입니다.
모델 연산 활용도(MFU)의 이해
그래디언트 계산의 연산량(6ND 공식)
이 공식은 Transformer 모델의 학습 시간을 예측하는 가장 표준적인 방법입니다.
옵티마이저 상태와 메모리 오버헤드
Adam 옵티마이저는 파라미터당 추가로 8바이트(4+4)의 메모리를 소모합니다.
그래디언트 누적(Gradient Accumulation)
활성화 체크포인팅(Activation Checkpointing)
메모리 사용량은 층 수(L)에 비례하던 것에서 루트 L(√L) 수준으로 줄어듭니다.
강의 요약 및 결론
def forward(self, x):
for layer in self.layers:
x = torch.utils.checkpoint.checkpoint(layer, x)
return xPyTorch의 checkpoint 기능을 사용하여 메모리 효율적인 순전파를 구현하는 예시
용어 해설
- 부동소수점 연산 수(FLOPs)
- — 컴퓨터가 수행한 총 연산량을 나타내는 지표로, 모델의 크기와 학습 데이터 토큰 수에 비례하여 계산됩니다. 모델의 학습 비용과 필요한 하드웨어 자원을 산정하는 핵심 기준이 됩니다.
- 모델 연산 활용도(MFU)
- — 하드웨어가 이론적으로 제공하는 최대 연산 성능 대비 실제 모델 학습에 유효하게 사용된 연산의 비율입니다. 데이터 이동 병목이나 통신 오버헤드로 인해 보통 0.5 내외의 값을 가집니다.
- 연산 밀도(Arithmetic Intensity)
- — 메모리에서 읽어온 데이터 1바이트당 수행하는 연산의 횟수입니다. 이 수치가 낮으면 메모리 대역폭에 제한을 받는 Memory-bound 상태가 되고, 높으면 프로세서 성능에 제한을 받는 Compute-bound 상태가 됩니다.
- 활성화 체크포인팅(Activation Checkpointing)
- — 학습 시 역전파를 위해 모든 층의 활성화 값을 저장하는 대신, 일부만 저장하고 나머지는 필요할 때 다시 계산하여 메모리 사용량을 줄이는 기법입니다. 메모리와 연산 시간 사이의 트레이드오프를 활용합니다.
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.