2021 AI Online Competition (TEAM Minions)
.
├── ARA
│ ├── config
│ │ ├── predict_config.yml
│ │ └── train_config.yml
│ ├── data
│ │ ├── kobert-0-train.pkl
│ │ ├── kobert-0-valid.pkl
│ │ ├── kobert-1-train.pkl
│ │ ├── kobert-1-valid.pkl
│ │ ├── kobert-2-train.pkl
│ │ ├── kobert-2-valid.pkl
│ │ ├── kobert-3-train.pkl
│ │ ├── kobert-3-valid.pkl
│ │ ├── kobert-4-train.pkl
│ │ └── kobert-4-valid.pkl
│ ├── data_split.py
│ ├── kfold_train.py
│ ├── model
│ │ └── model.py
│ ├── modules
│ │ ├── dataset.py
│ │ ├── earlystoppers.py
│ │ ├── metrics.py
│ │ ├── recorders.py
│ │ ├── trainer.py
│ │ └── utils.py
│ ├── predict.py
│ └── train.py
├── IKHYO
│ ├── configs
│ │ ├── inference
│ │ │ └── base_config.json
│ │ └── train
│ │ └── base_config.json
│ ├── model
│ │ └── model.py
│ ├── modules
│ │ ├── criterion.py
│ │ ├── dataset.py
│ │ ├── earlystoppers.py
│ │ ├── metrics.py
│ │ ├── optimizer.py
│ │ ├── recorders.py
│ │ ├── scheduler.py
│ │ ├── trainer.py
│ │ └── utils.py
│ ├── predict.py
│ └── train.py
├── MINYONG
│ ├── configs
│ │ ├── inference
│ │ │ └── base_config.json
│ │ └── train
│ │ └── base_config.json
│ ├── model
│ │ └── model.py
│ ├── modules
│ │ ├── criterion.py
│ │ ├── dataset.py
│ │ ├── earlystoppers.py
│ │ ├── metrics.py
│ │ ├── optimizer.py
│ │ ├── recorders.py
│ │ ├── scheduler.py
│ │ └── utils.py
│ ├── predict.py
│ └── train.py
├── models
│ ├── bertsum0.pt
│ ├── bertsum1.pt
│ ├── bertsum2.pt
│ ├── bertsum3.pt
│ ├── bertsum4.pt
│ ├── Ik_fold0.pt
│ ├── Ik_fold1.pt
│ ├── Ik_fold2.pt
│ ├── Ik_fold3.pt
│ ├── Ik_fold4.pt
│ ├── kobert0.pt
│ ├── kobert1.pt
│ ├── kobert2.pt
│ ├── kobert3.pt
│ ├── kobert4.pt
│ ├── koelectra.pt
│ └── sentavg.pt
├── README.md
├── requirements.txt
└── train.sh
코드 구조
config
: 학습과 추론시에 설정할 환경들을 저장하는 json / yml config file이 존재하는 폴더data
: 5 Fold에 사용되는 데이터를 저장하는 폴더 for KoBERT baselinemodel > model.py
: 모델 구현 파일(pytorch)modules
criterion.py
: loss function을 정의하는 file로 config file을 통해 지정한 대상을 학습시에 사용dataset.py
: 학습에 사용될 pytorch dataset 정의 파일earlystoppers.py
: 학습시에 Overfitting을 방지하기 위해 Hitrate Score 또는 loss를 기준으로 EarlyStopping을 할 수 있는 객체 정의metrics.py
: Hitrate Score를 계산하는 함수 정의optimizer.py
: optimizer를 정의하는 file로 config file을 통해 지정한 대상을 학습시에 사용recorders.py
: 모델 저장 작업 및 logging 작업을 하는 PerformanceRecorder 객체 정의scheduler.py
: scheduler를 정의하는 file로 config file을 통해 지정한 대상을 학습시에 사용trainer.py
: 모델 training, validation, test 작업을 하는 Trainer 객체 정의utils.py
: Config File Parsing, Seed 통일 등 학습과 추론에 필요한 다양한 util 함수 정의
results
: train시에 logging 기록들을 저장하는 공간(loss graph, score graph, log in CSV, 학습시 사용한 config file, 학습시 logger를 통해 기록된 모든 log)data_split.py
: 5 Fold로 훈련하는데 사용할 데이터를 나누어 저장하는 파일predict.py
: 학습된 모델에 대해서 prediction을 하는 파일train.py
: 모델 학습하는 파일
models
폴더 : 학습된 모든 모델을 저장하는 공간
Ik_fold0 ~ Ik_fold4.pt
: 5-Fold를 기준으로 학습된 OneSentenceBert 모델bertsum0 ~ bertsum4.pt
: 5-Fold를 기준으로 학습된 BertSumExt 모델kobert0 ~ kobert4.pt
: 5-Fold를 기준으로 학습된 KoBert Base 모델sentavg.pt
: 학습된 SentAvg 모델koelectra.pt
: 학습된 KoElectra Base 모델
.
├── submissions
│ ├── bertsum0.json
│ ├── bertsum1.json
│ ├── bertsum2.json
│ ├── bertsum3.json
│ ├── bertsum4.json
│ ├── final_submission.json
│ ├── ikhyo0.json
│ ├── ikhyo1.json
│ ├── ikhyo2.json
│ ├── ikhyo3.json
│ ├── ikhyo4.json
│ ├── bertsum0.json
│ ├── bertsum1.json
│ ├── bertsum2.json
│ ├── bertsum3.json
│ ├── bertsum4.json
│ ├── kobert0.json
│ ├── kobert1.json
│ ├── kobert2.json
│ ├── kobert3.json
│ ├── kobert4.json
│ ├── koelectra.json
│ ├── sample_submission.json
│ └── sentavg.json
├── ensemble.py
└── inference.sh
submissions
폴더: 제출에 필요한 모든 prediction json file을 저장하는 공간
final_submission.json
: 앙상블을 통한 최종 prediction filebertsum0 ~ bertsum4.json
: BertSumExt 모델의 5-Fold Resultikhyo0 ~ ikhyo4.json
: OneSentenceBert 모델의 5-Fold Resultkobert0 ~ kobert4.json
: KoBert Base 모델의 5-Fold Resultsentavg.json
: SentAvg 모델의 Resultkoelectra.json
: KoElectra Baseline 모델의 Resultsample_submission.json
: 결과물을 생성하기위해 존재하는 prediction form
ensemble.py
- submissions 폴더 내에 있는 json 파일로(sample_submission.json 제외) hard voting 기반 ensemble을 수행하여 최종 제출 파일 생성
(Minions Folder 내부에서) bash train.sh
(Minions Folder 내부에서) bash inference.sh