개발자식

[Pytorch] Pytorch Template 본문

AI/Pytorch

[Pytorch] Pytorch Template

밍츠 2022. 10. 2. 02:42

ML 코드는 초기 단계에서 대화식 개발 과정이 유리하기 때문에 jupyter를 활용해서 학습과정, 디버깅 등을 진행하지만 배포 및 공유 단계에서는 notebook 공유가 어렵다.

 

ML/DL코드도 하나의 프로그램으로 작성하여 아래와 같은 장점을 얻는다

- 개발 용이성 확보

- 유지보수 향상

 

코드를 그러면 어떻게 짤까?

- OOP + 모듈 -> 프로젝트

- 코드도 레고 블록처럼 작성한다.

 

이러한 프로그램을 쉽게 구현하기 위해서 Pytorch template가 존재한다.

- 다양한 프로젝트 템플릿이 존재하고

- 사용자 필요에 따라 수정하여 사용이 가능하고

- 실행, 데이터, 모델, 설정, 로깅, 지표, 유틸리티 등 다양한 모듈들을 분리하여 프로젝트를 템플릿화한다.

 

대표 파이토치 템플릿 링크

- https://github.com/victoresque/pytorch-template

- https://github.com/FrancescoSaverioZuppichini/PyTorch-Deep-Learning-Template

- https://github.com/Lightning-AI/deep-learning-project-template

 

여기서 첫 번째 템플릿의 구조이다. (Folder Structure)

- 가장 좋음(?!)

pytorch-template/
│
├── train.py - main script to start training
├── test.py - evaluation of trained model
│
├── config.json - holds configuration for training
├── parse_config.py - class to handle config file and cli options
│
├── new_project.py - initialize new project with template files
│
├── base/ - abstract base classes
│   ├── base_data_loader.py
│   ├── base_model.py
│   └── base_trainer.py
│
├── data_loader/ - anything about data loading goes here
│   └── data_loaders.py
│
├── data/ - default directory for storing input data
│
├── model/ - models, losses, and metrics
│   ├── model.py
│   ├── metric.py
│   └── loss.py
│
├── saved/
│   ├── models/ - trained models are saved here
│   └── log/ - default logdir for tensorboard and logging output
│
├── trainer/ - trainers
│   └── trainer.py
│
├── logger/ - module for tensorboard visualization and logging
│   ├── visualization.py
│   ├── logger.py
│   └── logger_config.json
│  
└── utils/ - small utility functions
    ├── util.py
    └── ...

 

템플릿 구조를 잘 설명한 자료

https://eliza-dukim.tistory.com/29

https://hansonminlearning.tistory.com/8

 

vscode에서 ssh연결을 이용해 colab 환경에서 실행시킬 수 있다.

- colab_ssh 활용

https://dacon.io/en/forum/406050

- NGROK 활용

 

NGROK 방법으로 ssh 연결이 내 컴퓨터에서는 안 돼서 다른 방법도 찾아본 건데ㅠ 또 안된다.. 일단은 colab에서 돌려야겠다 ㅠㅠ 

Comments