dataset에서 GPU까지 data 대기 시간을 분해합니다
Data path(데이터 전달 경로): 저장된 데이터를 reader·CPU 처리·memory·GPU 입력으로 전달하는 실제 경로입니다.
학습 data는 storage에서 GPU memory로 순간 이동하지 않습니다. object/filesystem client, page cache, CPU memory, PCIe와 data loader queue를 거치며 각 경계의 대기와 변환이 GPU idle을 만듭니다.
큰 sequential shard는 bandwidth에, 작은 file과 random sample은 metadata·IOPS·latency에 민감합니다. compression·decode·augmentation은 storage 병목처럼 보이는 CPU 병목을 만들 수 있습니다.
GPU utilization이 낮다는 이유로 storage를 증설하기 전에 queue depth, CPU saturation, read throughput과 data loader wait를 같은 시간축으로 봅니다.
교육 사례에서 GPU 사용률은 30%인데 CPU 전처리 thread 하나가 계속 바쁩니다. storage bandwidth를 늘려도 해당 thread가 직렬로 처리하는 구간은 그대로 남습니다. 읽기 대기, decode·변환 시간과 GPU 대기를 구분한 뒤 한 변수를 바꿔 비교합니다. cache hit로 빨라진 두 번째 실행을 storage 개선 효과로 오해하지 않도록 cold·warm 조건도 기록합니다.
- 왜 이런가
- 큰 sequential shard는 bandwidth에, 작은 file과 random sample은 metadata·IOPS·latency에 민감합니다. compression·decode·augmentation은 storage 병목처럼 보이는 CPU 병목을 만들 수 있습니다.
- 언제 문제가 되는가
- GPU idle과 원인 signal의 시각 불일치 조건이면 진행 근거가 부족합니다.
- 초보자가 자주 하는 오해
- cache가 warm인 한 번의 결과와 cold start 결과를 섞지 않습니다. cache 조건과 dataset revision을 기록합니다.
- 직접 확인하는 방법
- sample 크기·file 수·access pattern과 batch 조건을 기록합니다. client read bandwidth·IOPS·latency와 cache hit을 수집합니다.