REFERENCE
- https://lightning.ai/docs/pytorch/stable/data/datamodule.html
- https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.core.hooks.DataHooks.html
- https://lightning.ai/docs/pytorch/stable/data/iterables.html#multiple-dataloaders
1. prepare_data
- 데이터 다운로드 등의 기능을 수행할 메서드.
- setup 전에 호출 됨.
- main process + single process니까 device 별 실행 되야하는 기능은 해당 메서드에서 구현을 피해야 함.
- DO NOT set state to the model (use setup instead) since this is NOT called on every device
(e.g. self.split='train')
2. setup
- ㅇ
아래처럼 깔끔하게 사용할 수도 있지만, Dataset등의 내부 멤버 변수가 필요하면 수동으로 콜해도 문제 없다.
dm = MNISTDataModule()
model = Model()
trainer.fit(model, datamodule=dm)
trainer.test(datamodule=dm)
trainer.validate(datamodule=dm)
trainer.predict(datamodule=dm)
dm = MNISTDataModule()
dm.prepare_data()
dm.setup(stage="fit")
model = Model(num_classes=dm.num_classes, width=dm.width, vocab=dm.vocab)
trainer.fit(model, dm)
dm.setup(stage="test")
trainer.test(datamodule=dm)