Skip to content

ldahee/NIA-MSC-hackathon

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NIA-MSC-hackathon ("내일은 칼퇴근" 팀)

  • 사용한 pre-trained model: ETRI-t5-base
  • 최종 훈련된 모델 경로: /workspace/model/1216_shuffle
  • 학습 로그: /workspace/code/script/train.log

학습된 모델 다운로드

  • 구글 드라이브에서 hackathon.tar.gz 파일 다운로드
  • tar -zxvf hackathon.tar.gz 명령어로 압축 해제
  • 압축이 해제된 폴더를 프로젝트 폴더로 설정

Docker

docker run -it --network host  -v {프로젝트 폴더}/:/workspace/ --gpus all --name {컨테이너 이름} dhlee9706/hackathon:latest /bin/bash

Train

방법 1. train.py 실행

export CUDA_VISIBLE_DEVICES=0,1,2 # (필수) gpu 번호 지정
export CUDA_DEVICE_ORDER=PCI_BUS_ID


# pre-trained model
PRETRAIN_MODEL=/workspace/model/etri_t5



DATASET_DIR=/workspace/data
TRAIN_PATH=$DATASET_DIR/train_memory2.jsonl
DEV_PATH=$DATASET_DIR/valid_memory2.jsonl

# (필수) 학습 모델 저장 경로 지정
TRAIN_OUTPUT_PATH=/workspace/model/{학습 모델 저장 경로}/

mkdir $TRAIN_OUTPUT_PATH

nohup python -u train.py \
--pretrained_model $PRETRAIN_MODEL \
--train_fpath $TRAIN_PATH \
--dev_fpath $DEV_PATH \
--output_fpath $TRAIN_OUTPUT_PATH \
\
--do_train \
--model_name_or_path $PRETRAIN_MODEL \
--save_steps 10000 \
--per_device_train_batch_size 12 \
--gradient_accumulation_steps 1 \
--num_train_epochs 3.0 \
--n_gpu 3 \  # (선책) 사용할 gpu 개수 설정
--parallel_mode ParallelMode.NOT_DISTRIBUTED \
--train_dataloader random \
--do_predict \
--predict_with_generate 1> {학습 로그 경로} 2>&1 & # (필수) 학습 로그 경로 지정

방법 2. train.sh 실행

cd script
nohup ./train.sh 1> {학습 로그 경로} 2>&1 & # (필수) 학습 로그 경로 지정

Inference

cd code
python generate_chat.py --input_folder ./input --output_folder ./output

Code Structure

├── code
│   ├── arguments.py
│   ├── generate_chat.py
│   ├── input
│   ├── output
│   ├── runs
│   ├── script
│   ├── seq2seq
│   ├── seq2seq_data_processor.py
│   ├── seq2seq_dataset_et5.py
│   ├── seq2seq_data_utils.py
│   ├── submit.py
│   └── train.py
├── data
│   ├── train.jsonl
│   └── valid.jsonl
├── dockerfile
├── model
│   ├── 1216_shuffle
│   ├── etri_t5
│   └── pbert_iq_ns
├── README.md
└── requirements.txt

활용 모델

pre-trained model로 ETRI에서 공개한 ET5-base 모델을 사용하였다.

  • 모델 세부 내용

    • 학습데이터: 136GB 원시 말뭉치
    • 딥러닝 라이브러리: pytorch
    • HuggingFace model 및 SentencePiece tokenizer model 파일
    • Latin alphabets: Cased
  • 모델 파라미터

    • 45100 vocabs
    • 12 layers (인코더/디코더 각각)
    • 12 heads
    • 768 d_model
    • 64 d_kv
    • 3072 d_ff

PBERT

  • 개요
    • 문장 임베딩 모델(SBERT-IQ)를 응용하여, Passage와 Sentence 간 유사도를 비교하는 모델 (SBERT-IQ: "SBERT-IQ: 키워드 정보량을 고려한 Sentence-BERT 기반의 임베딩 모델", 솔트룩스, KCC 2022)
    • Dialogue Context의 3-turn과 Memory의 Sentence 간 유사도 비교를 통해, 현재 대화와 관련있는 Memory 검색
    • Generator(ET5)에 발화생성에 참고할 Memory Span 제공

멀티세션 대화 데이터 피드백 내용

  • 다음 대화 시작이 "16시간만이네요.", "3일만이네요."와 같은 패턴으로 시작되는 것이 부자연스러워 보였습니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.7%
  • Shell 1.3%