AI: 패딩 및 배치 처리 – Dynamic Padding

ㅁ 패딩 및 배치 처리

ㅇ 정의:
– Dynamic Padding은 입력 데이터의 길이에 맞춰 배치 내에서만 패딩 길이를 동적으로 조정하는 기법으로, 불필요한 패딩 연산을 줄여 메모리와 연산 효율을 높인다.

ㅇ 특징:
– 배치마다 최대 시퀀스 길이를 기준으로 패딩 적용
– 전체 데이터셋의 최대 길이를 기준으로 하지 않으므로 메모리 절약
– RNN, Transformer 등 시퀀스 모델 학습 시 효율성 향상
– 구현 시 DataLoader나 Collate 함수에서 처리

ㅇ 적합한 경우:
– 텍스트, 음성 등 가변 길이 시퀀스 데이터 처리
– GPU 메모리 한계가 있는 환경
– 배치별 길이 편차가 큰 데이터셋

ㅇ 시험 함정:
– Dynamic Padding은 모든 배치에서 동일한 패딩 길이를 사용한다고 오해하기 쉬움 (X)
– Padding을 완전히 제거하는 기술로 착각하기 쉬움 (X)
– Static Padding과 비교 시 전체 메모리 사용량 감소가 핵심임을 간과

ㅇ 시험 대비 “패턴 보기” 예시:
– “Dynamic Padding은 배치마다 최대 시퀀스 길이에 맞춰 패딩한다” (O)
– “Dynamic Padding은 데이터셋 전체 최대 길이에 맞춰 패딩한다” (X)
– “Dynamic Padding은 패딩 자체를 제거하는 방법이다” (X)
– “Dynamic Padding은 메모리 효율성을 높인다” (O)

ㅁ 추가 학습 내용

구분 | Static Padding | Dynamic Padding
— | — | —
패딩 기준 | 전체 데이터셋의 최대 시퀀스 길이 | 배치(batch) 내 최대 시퀀스 길이
구현 난이도 | 구현이 단순함 | 구현 복잡도가 높음 (Collate function 필요)
메모리 효율 | 불필요한 패딩으로 메모리 낭비 큼 | 불필요한 패딩 최소화로 메모리 효율 높음
마스크 처리 | 필요 없음 또는 단순 | 시퀀스 마스크(mask) 필수
연산 효율 | 짧은 시퀀스도 긴 길이에 맞춰 연산 → 비효율 가능 | warp divergence 감소로 GPU 연산 효율 개선
적용 사례 | 간단한 모델, 데이터 길이 차이가 적을 때 | 길이 차이가 큰 시퀀스 데이터 처리
프레임워크 구현 예시 | PyTorch: Dataset → DataLoader 기본 설정 | PyTorch: Dataset + custom collate_fn에서 배치별 패딩 적용
학습 속도 영향 | 패딩으로 인해 불필요한 연산 증가, 속도 저하 가능 | 연산량 감소로 학습 속도 향상
메모리 사용량 영향 | 데이터셋 최대 길이에 비례하여 메모리 사용량 증가 | 배치별 길이에 비례하여 메모리 사용량 감소
구체적 수치 예시 | 최대 길이 512, 평균 길이 200일 경우 약 2.5배 메모리 낭비 | 동일 조건에서 메모리 사용량 약 40% 절감 가능

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*