- Pytorch의 Dataset과 DataLoader 클래스의 개념에서 기반
DataLoader
- DataLoader는 MMEngine의 Runner에 3가지 형태의 인수로 구성됨
- train_dataloader: 모델에 학습 데이터를 제공할기 위해 Runner.train()를 사용
- val_dataloader: 일정한 간격으로 모델 평가를 위해 Runner.train() Runner.val()를 사용
- test_dataloader: 최종 평가때 Runner.test()를 사용
- PyTorch의 DataLoader를 지원. Registry Mechanism of MMEngine 덕분에 dict형태로 인자를 받아들임.
- dict형태로 Runner 전달시 lazily built in
runner = Runner(
train_dataloader = dict(
batch_size=32,
sampler=dict(
type="DefaultSampler",
shuffle=True),
dataset=torchvision.datasets.CIFAR10(...),
collate_fn=dict(type="default_collate")
)
)
- 사용 인자 확인시 torch.utils.data 확인
- building procedure의 상세 내용은 build_dataloader 참고(dataset, sampler, dataloader)
- sampler 사용시 shuffle은 False. 실제로 shuffle이 True일 경우 dataloader는 RandomSampler로 자동 전환
from mmengine.dataset import DefaultSampler
dataset = torchvision.dadtasets.CIFAR10()
sampler = DefaultSampler(dataset, shuffle=True)
runner = Runner(
train_dataloader=DataLoader(
batch_size=32,
sampler=sampler,
dataset=dataset,
collate_fn=default_collate
)
)
- 단일 프로세스로 처리 되저간 runner에게 랜덤하지 않은 인자를 전달시에만 동등성이 유지. Sampler는 분산 환경 설정 후 구축해야 정확
- Runner는 dict 입력에만 가능한 lazy 초기화 기법을 사용해서 올바른 순서와 random seed를 보장. 문제를 방지하기 위해 Sampler에 dict로 전달하기를 추천
- DefaultSampelr가 받는 인자: shuffle, seed, round_up이 True인 경우 Pytorch의 DataLoader의 drop_last=False처럼 동작
Dataset
'OpenMMLab(미공개) > MMEngine' 카테고리의 다른 글
[MMEngine] Tutorial - Runner (0) | 2024.01.14 |
---|---|
[MMEngine] 빠른 Tutorial (0) | 2024.01.14 |
[MMEngine] 환경 설정 (0) | 2024.01.14 |
[MMEngine] 개요 (0) | 2024.01.14 |