135
4
장
파이토치 데이터셋
n
번째 배치를 준비하는 시간이 항상 같지는 않습니다. 훈련 시간이 더 빠르면
GPU
/
TPU
에 유
휴 시간이 생깁니다. 훈련 시간이 더 느리면
CPU
에 유휴 시간이 생깁니다. 적절한 배치 크기
를 정하면 이 간격을 최적화하는 데 도움이 됩니다.
GPU
/
TPU
비용이 더 비싸므로 가능하면
GPU
/
TPU
의 유휴 시간을 줄이는 것이 좋습니다.
이것이
MNIST
와 같은 간단한 예제에서도 배치를 사용하는 이유 중 하나입니다. 파이프라이닝
모델이 적용되어 있으므로 데이터셋의 크기와 관계없이
ETL
을 일관된 패턴으로 처리할 수 있
습니다.
4.7
DataLoader
클래스 사용하기
DataLoader
클래스는 이미 여러 번 보았지만, 머신러닝 워크플로에서 최대한 활용할 수 있도
록 조금 더 깊이 살펴보겠습니다. 이 클래스는 다음과 같은 기능을 제공합니다.
4.7.1
배치
직관적으로 정방향 계산이 한 번에 하나의 데이터를 처리한다고 생각할 수 있습니다. 그렇게
할 수도 있지만, 확률적 경사 하강법과 같은 일부 옵티마이저는 입력이 배치로 전달될 때 더 정
확하게 계산하므로 훨씬 더 잘 작동합니다. 배치는 고정된 메모리 크기를 가진
GPU
를 사용하
는 대규모 훈련에서 속도를 높일 수도 있습니다. 해당 메모리를 완전히 채우도록 데이터 배치
를 만드는 것이 가장 효율적입니다.
DataLoader
를 사용하는 경우 간단히 매개변수를 설정해
배치를 처리할 수 있습니다.
4.7.2
셔플링
데이터 셔플링
shuffling
은 특히 배치를 만들 매우 중요합니다. ...