[PyTorch] 03. PyTorch 프로젝트 구조 이해하기

Angie·2022년 1월 24일
0

부스트캠프 AI Tech

목록 보기
3/11

Jupyter?

  • (개발 )초기 단계에서는 대화식 개발 과정이 유리
    • 학습과정과 디버깅 등 지속적인 확인
  • 배포 및 공유 단계에서는 notebook 공유의 어려움
    • 쉬운 재현의 어려움, 실행순서 꼬임
  • DL 코드도 하나의 프로그램
    • 개발 용이성 확보와 유지보수 향상 필요

→ 딥러닝이나 머신러닝에 기본적인건 가능, 개발과 배포로 연결되는 프로젝트의 단계에서는 한계

프로젝트: OOP + 모듈

프로젝트 템플릿

  • 다양한 프로젝트 템플릿이 존재
  • 사용자 필요에 따라 수정하여 사용
  • 실행, 데이터, 모델, 설정, 로깅, 지표, 유틸리티 등 다양한 모듈들을 분리하여 프로젝트 템플릿화

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

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
    └── ...
  • train.py, test.py : 실행
  • config.json, parse_config.py: 설정
  • base: abstract module
  • data_loader, data/ : data
  • model: architecture, loss, metric
  • savel: 저장소-로그, 모델 상태
  • trainer: 학습 수행하기 위한 trigger
  • logger: 로깅 설정
  • utils: 유틸리티

실습

위에꺼 클론해오기

git clone[https://github.com/victoresque/pytorch-template](https://github.com/victoresque/pytorch-template)

이동후

cd pytorch-template

실행시킴

conda activate torch

MyProject라는 새로운 project 생성

python new_project.py MyProject

Myproject로 이동하여

cd MyProject

실행

code .

실행을 원할 때

python train.py -c config.json

(Colab에서)

Google Colaboratory

  • ngrok 사용
    • token
  • remote_SSH 설치 in vscode
  • Ctrl+shift+p : add new SSH Host ‘ssh root@8.tcp.ngrok.io -p 19610’
  • Ctrl+shift+p : Connect to host ‘8.tcp.ngrok.io’

train.py

__main__ 부분에서 ConfigParser는 parse_config

config.json

read_json: 파일을 읽어와서 dict파일로 만들어줌

얘들 config에 저장

cls로 return : 객체 생성

train.py

profile
Hi there 👋

0개의 댓글