Deep Learning study
포스트 요약: 이 글에서는 PyTorch Autograd의 내부 동작 메커니즘을 단계별로 자세히 분석하고, 커스텀 autograd.Function을 활용하여 직접 backward 연산을 정의하는 방법까지 심도 있게 다룹니다.서론딥러닝 모델의 학습은 역전파(backpropagation) 에 기반하며, 이 과정에서 자동 미분(automatic differentiation) 은 필수적인 역할을 합니다. PyTorch의 Autograd는 사용자가 신경망 구조를 정의할 때 별도의 미분 코드를 작성하지 않아도, 입력부터 출력까지 연산 과정을 자동으로 기록하고, 역전파를 수행하여 gradient를 계산해 줍니다.왜 Autograd를 이해해야 하는가?학습 불안정성(Debugging): gradient가 사라지거나 폭주..
포스트 요약: FlashAttention과 PyTorch 내장 nn.MultiheadAttention의 연산 속도 및 메모리 사용량을 다양한 시퀀스 길이에서 비교하여, 대용량 트랜스포머 모델 최적화 방안을 제안합니다.서론글의 목적: FlashAttention CUDA 커널을 도입했을 때 얻을 수 있는 실질적 이점을 벤치마크를 통해 정량적으로 분석합니다.배경 및 중요성: 대규모 언어·비전 모델이 증가함에 따라, 어텐션 연산의 속도와 메모리 효율은 훈련 및 추론 비용에 큰 영향을 미칩니다.핵심 개념표준 MultiheadAttention: PyTorch의 nn.MultiheadAttention 모듈은 Q, K, V 행렬 곱셈과 소프트맥스, Dropout, 선형투영을 순차적으로 수행합니다.FlashAttenti..
주제: PyTorch의 DistributedDataParallel(DDP)을 활용한 대규모 멀티GPU 훈련 설정, 주요 옵션, 자주 발생하는 오류와 해결법을 정리합니다.1. DDP vs DataParallel구분DataParallelDistributedDataParallel (DDP)병렬 방식한 프로세스 내 여러 GPU각 GPU마다 하나의 프로세스성능GPU 간 통신 병목 발생통신 오버헤드 최소화, 우수한 확장성구현 복잡도간단프로세스/환경 설정 필요사용 권장 상황소규모 실험대규모 분산 훈련2. 기본 설정환경 변수 설정export MASTER_ADDR=localhostexport MASTER_PORT=12355프로세스 스폰python -m torch.distributed.launch \ --nproc_..
주제: PyTorch의 torch.cuda.amp 모듈을 활용한 혼합 정밀도 학습(Automatic Mixed Precision)으로, 메모리 절약 및 연산 속도 향상을 실현하는 방법을 정리합니다.1. AMP란 무엇인가?딥러닝 학습 시, 기본적으로 32비트 부동소수점(FP32) 연산을 사용합니다.반정밀도(FP16) 연산은 메모리 사용량을 절반으로 줄이고, 특정 GPU에서 더 빠른 처리 속도를 제공합니다.Automatic Mixed Precision(AMP)은 모델 파라미터는 FP32로 유지하면서 연산(곱셈·덧셈 등)만 FP16으로 자동 전환하여, 정밀도 손실 없이 메모리와 연산 효율을 극대화하는 기술입니다.2. 왜 사용해야 할까?이슈FP32만 사용 시AMP 적용 시메모리 사용량높음 (모든 텐서가 FP32..
주제: 긴 모델 또는 큰 배치를 사용할 때 GPU 메모리가 부족한 문제를 해결하기 위해, 순전파 활성화(activations)를 저장하지 않고 재연산하여 메모리를 줄이는 기법인 Gradient Checkpointing을 소개합니다.1. 왜 Gradient Checkpointing이 필요한가?대형 Transformer, ViT, ResNet 등 딥러닝 모델이 깊어질수록 또는 배치 크기가 커질수록, 순전파 과정의 활성화 메모리가 기하급수적으로 증가합니다.GPU 메모리가 부족하면 배치 크기 또는 모델 크기를 줄여야 하는데, 이것이 학습 효율을 떨어뜨립니다.Gradient Checkpointing은 일부 중간 활성화만 저장하고, backward 단계에서 필요한 경우 순전파를 재실행(recompute)하여 메모리..
FlashAttention: 메모리 효율적이고 빠른 어텐션 구현논문: "FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness" (Dao et al., NeurIPS 2022)링크: https://arxiv.org/abs/2205.141351. 문제 배경표준 Transformer의 어텐션 연산은 O(N²) 메모리·연산 복잡도를 가집니다.특히 긴 시퀀스(N>1,024)를 처리할 때, 메모리 사용량이 폭증하고 속도 저하가 심각해집니다.이때 FlashAttention은 I/O 효율성 관점에서 행렬 분할(tile) 방식을 도입하여, 메모리 피크를 줄이고 속도를 대폭 개선한 순정(Exact) 어텐션 알고리즘을 제시합니다.2. ..