GPU 놀게 두지 마
Model은 데이터 도착 속도만큼만 train돼. CPU가 다음 batch 로드/전처리하는 동안 GPU가 놀고 있으면 비싼 compute 태우는 거야. tf.data는 데이터 pipeline을 lazy + 병렬 stream으로 만들어서 — 이전 batch 끝나기 전에 GPU에 다음 거 먹여.
tf.data가 주는 다섯 가지:
- Prefetching — GPU가 batch N 처리하는 동안 batch N+1 준비
- Parallelism — 여러 CPU 스레드에서 동시 전처리
- Caching — 매 epoch 비싼 전처리 반복 안 함
- Memory 효율 — 필요한 만큼만 필요할 때 로드
- Composability — 읽기 좋게 변환 chain
ImageNet 규모 (1.28M 이미지) dataset에서 naive Python loop는 GPU 굶겨. 제대로 튜닝한 tf.data pipeline은 GPU 100% 가까이 유지. 차이는 training 속도 5–10배.