boostcampaitech2 / klue-level2-nlp-02

klue-level2-nlp-02 created by GitHub Classroom
0 stars 6 forks source link

Pstage_02_KLUE

Solution for KLUE Competitions in 2nd BoostCamp AI Tech by 메타몽팀 (2조)

Content

Competition Abstract

Hardware

Operating System

Archive Contents

klue-level2-nlp-02/
├── best_models/
├── results/
├── prediction/
│   └── all/
├── modules/
│   ├── preprocesor.py
│   ├── augmentation.py
│   ├── loss.py
│   ├── make_rtt_csv.py
│   ├── concat_csv.py
│   ├── UNK_token_text_search.ipynb
│   └── crawling_papago_rtt.ipynb
├── dict_label_to_num.pkl
├── dict_num_to_label.pkl
├── train.py
├── train_mlm.py
├── load_data.py
├── tokenization.py
├── model.py
├── model_ensemble.py
└── inference.py

Getting Started

Dependencies

Install Requirements

sh requirement_install.sh

Training

Options-train.py

argument description default
save_dir 모델 저장 경로 설정 ./best_models
PLM 사용할 모델 선택(checkpoint) klue/bert-base
MLM_checkpoint MLM 모델 불러오기 ./best_models/klue-roberta-large-rtt-pem-mlm
entity_flag typed entity marker punct 사용 False
use_mlm MaskedLM pretrained model 사용 유무 False
epochs train epoch 횟수 지정 3
lr learning rate 지정 5e-5
train_batch_size train batch size 설정 16
warmup_steps warmup step 설정 500
weigth_decay weight decay 설정 0.01
evaluatoin_stratgey evaluation_strategy 설정 steps
ignore_mismatched pretrained model load 시, mismatched size 무시 유무 False
eval_flag validation data 사용 유무 False
eval_ratio evalation data size ratio 설정 0.2
seed random seed 설정 2
dotenv_path 사용자 env 파일 경로 설정 /opt/ml/wandb.env
wandb_unique_tag wandb tag 설정 bert-base-high-lr
entity_flag 사용자 env 파일 경로 설정 False
preprocessing_cmb 데이터 전처리 방식 선택(0: 특수 문자 제거, 1: 특수 문자 치환, 2: date 보정, 3: 한글 띄워주기) set ex: 0 1 2
mecab_flag mecab을 활용한 형태소 분리 False
add_unk_token unk token vocab에 저장 False
k_fold Stratified K Fold 사용 0
adea_flag adea 사용 유무 False
augmentation_flag rtt augmentation dataset 사용 유무 False
model_type 대,소분류 진행할 class 입력 default
model_name custom 모델 입력 None

Options-train_mlm.py

train.py의 --use_pem, --model_type 제외 동일

argument description default
use_pem 데이터 전처리 방식 선택 유무 False
$ python train_mlm.py --PLM klue/roberta-large --use_pem --preprocessing_cmb 0 1 2 --use_rtt
$ python train.py --PLM klue/roberta-large --wandb_unique_tag AddLayerNorm_lr_2e5_k_fold_10 --entity_flag --preprocessing_cmb 0 1 3 --mecab_flag --model_name AddLayerNorm --lr 2e-5 --k_fold 10

Inference

Options-inference.py

argument description default
model_dir 선택할 모델 경로 ./best_models
PLM 모델 checkpoint klue/bert-base
entity_flag typed entity marker punct 사용 유무 False
preprocessing_cmb 데이터 전처리 방식 선택(0: 특수 문자 제거, 1: 특수 문자 치환, 2: date 보정, 3: 한글 띄워주기) set ex: 0 1 2
mecab_flag Mecab을 활용해 형태소를 분리 유무 False
add_unk_token unk token vocab에 저장한 tokenizer 사용 유무 False
k_fold Stratified K Fold 사용 0
model_type 대,소분류 진행 유무 False
model_name custom 모델 입력 None
$ python inference.py --PLM klue-roberta-large --k_fold 10 --entity_flag --preprocessing_cmb 0 1 2 --mecab_flag

Soft-voting Ensemble

단일 모델(혹은 k-fold 모델)의 결과 csv 파일들에서 probs열을 soft-voting 하여 최종 ensemble 결과 csv를 생성합니다.

Options-model_ensemble.py

argument description default
dir 앙상블할 모델 경로 선택 all
$ python model_ensemble.py --dir all

Architecture

  1. Model

    1. Model 1

      스크린샷 2021-10-08 오전 10.59.06.png

    2. Model 2

      스크린샷 2021-10-08 오전 11.00.00.png

    3. Model 3

      스크린샷 2021-10-08 오전 11.00.27.png

    4. Model 4

      스크린샷 2021-10-08 오전 11.00.48.png

    5. Model 5

      스크린샷 2021-10-08 오전 11.00.48.png

  2. Model Ensemble

    스크린샷 2021-10-08 오전 11.02.36.png

Result

micro_f1 AUPRC RANK
Public 73.860 81.085 11
Private 73.069 82.295 7