모델: 효과적 처리

ㅁ 효과적 처리

ㅇ 정의:
미니배치 내 시퀀스 길이가 다를 때 불필요한 패딩 연산을 줄이고 연산 효율을 높이는 기법들을 총칭함.

ㅇ 특징:
– 시퀀스 데이터 처리 시 GPU 연산 낭비를 방지함
– 모델 학습 속도와 메모리 사용 효율을 향상시킴

ㅇ 적합한 경우:
– 자연어 처리, 음성 인식 등 길이가 다양한 시퀀스 데이터 처리 시

ㅇ 시험 함정:
– 모든 경우에 패딩을 없앨 수 있는 것은 아님
– 배치 구성 방식에 따라 학습 결과가 달라질 수 있음

ㅇ 시험 대비 “패턴 보기” 예시:
O: “시퀀스 길이에 맞춰 패딩 크기를 동적으로 조정하는 방법”
X: “항상 고정된 최대 길이로 패딩하는 방법”

================================

1. Dynamic Padding

ㅇ 정의:
각 배치마다 가장 긴 시퀀스 길이에 맞춰 패딩을 적용하는 방식

ㅇ 특징:
– 배치별로 패딩 길이가 다름
– 불필요한 0 패딩을 줄여 연산 효율 증가

ㅇ 적합한 경우:
– 시퀀스 길이 편차가 큰 데이터셋

ㅇ 시험 함정:
– 배치마다 길이가 달라 GPU 병렬 효율이 일정치 않을 수 있음

ㅇ 시험 대비 “패턴 보기” 예시:
O: “배치 내 최장 시퀀스에 맞춰 패딩 길이를 결정”
X: “데이터 전체에서 최장 시퀀스 기준으로 패딩”

================================

2. Bucketing

ㅇ 정의:
비슷한 길이의 시퀀스를 같은 그룹(버킷)에 모아 배치를 구성하는 방식

ㅇ 특징:
– 패딩 낭비 최소화
– 배치 간 길이 편차 감소

ㅇ 적합한 경우:
– 데이터 전처리 시간이 허용되는 경우
– 대규모 데이터셋에서 효율적 학습 필요 시

ㅇ 시험 함정:
– 버킷 수를 너무 적게 하면 효과가 감소
– 버킷 분류 기준이 부적절하면 오히려 비효율 발생

ㅇ 시험 대비 “패턴 보기” 예시:
O: “비슷한 길이끼리 묶어 배치 구성”
X: “길이가 제각각인 시퀀스를 무작위로 배치 구성”

================================

3. Packed Sequence

ㅇ 정의:
패딩 토큰을 완전히 제거하고 실제 시퀀스 길이 정보와 함께 모델에 입력하는 방식 (PyTorch의 pack_padded_sequence 등)

ㅇ 특징:
– 패딩 연산 자체를 생략하여 연산량 절감
– RNN/LSTM 계열에서 자주 사용

ㅇ 적합한 경우:
– 가변 길이 시퀀스를 RNN 계열 모델로 처리할 때

ㅇ 시험 함정:
– 입력 시퀀스는 길이 기준으로 정렬되어야 함
– 일부 레이어/모델에서는 지원하지 않음

ㅇ 시험 대비 “패턴 보기” 예시:
O: “패딩 토큰 없이 시퀀스 길이 정보로 연산”
X: “패딩 토큰을 포함하여 동일 길이로 연산”

ㅁ 추가 학습 내용

Dynamic Padding / Bucketing / Packed Sequence 비교표

1. Dynamic Padding
– 장점: 구현이 간단하고 빠르게 적용 가능
– 단점: 배치마다 시퀀스 길이가 달라져 GPU 활용률이 일정하지 않을 수 있음
– 필수 전처리 조건: 배치 내 최대 길이에 맞춰 패딩
– 지원 모델 유형: 대부분의 RNN, Transformer 등 패딩 처리 가능한 모델

2. Bucketing
– 장점: 비슷한 길이의 시퀀스를 묶어 패딩 낭비 최소화, 연산 효율 향상
– 단점: 버킷 구성 및 데이터 재배치로 전처리 시간 증가
– 필수 전처리 조건: 길이 기준으로 데이터 분류 후 배치 구성
– 지원 모델 유형: 패딩 기반 처리 모델 전반

3. Packed Sequence
– 장점: 불필요한 패딩 연산 제거로 연산 효율 극대화
– 단점: 구현 복잡, 시퀀스 길이별 정렬 필요, 일부 모델/레이어와 호환성 제한
– 필수 전처리 조건: 시퀀스 길이 내림차순 정렬, lengths 정보 제공
– 지원 모델 유형: PyTorch RNN 계열(LSTM, GRU 등)에서 pack_padded_sequence 지원하는 경우

Previous Article

답글 남기기

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

*
*