Skip to content

boostcampaitech7/level2-nlp-generationfornlp-nlp-13-lv3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ† LV.2 NLP ν”„λ‘œμ νŠΈ : Generation For NLP

이 ν”„λ‘œμ νŠΈλŠ” β€œν•œκ΅­ 수λŠ₯ μ‹œν—˜μ—μ„œ μš°μˆ˜ν•œ 성적을 λ‚Ό 수 μžˆλŠ” μ†Œκ·œλͺ¨ AI λͺ¨λΈβ€ 을 λ§Œλ“€κΈ° μœ„ν•΄ μ‹œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€. GPT, Claude, Gemini λ“± λŒ€κ·œλͺ¨ μ–Έμ–΄ λͺ¨λΈμ΄ 이미 λ‹€μ–‘ν•œ μ‹œν—˜μ—μ„œ 쒋은 성적을 거두고 μžˆμ§€λ§Œ, μ œν•œλœ μžμ›μœΌλ‘œλ„ λ›°μ–΄λ‚œ μ„±λŠ₯을 λ‚Ό 수 μžˆλŠ” μ†Œκ·œλͺ¨ λͺ¨λΈμ— λŒ€ν•œ 연ꡬ 및 μ˜€ν”ˆμ†ŒμŠ€ μƒνƒœκ³„κ°€ ν•„μš”ν•˜λ‹€κ³  νŒλ‹¨ν–ˆμŠ΅λ‹ˆλ‹€.

λ³Έ ν”„λ‘œμ νŠΈμ—μ„œλŠ” Multiple-Choice QA νƒœμŠ€ν¬μ— λŒ€ν•œ μ†”λ£¨μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

Requirements

  • GPU : Tesla V100 GPU Server 32GB
  • Python: 3.10.x
  • CUDA: 12.1
  • PyTorch: 2.5.1+cu121

How To Use

Installation

1. git clone

git clone https://github.com/boostcampaitech7/level2-nlp-generationfornlp-nlp-13-lv3.git
cd level2-nlp-generationfornlp-nlp-13-lv3

2. install libraries

pip install -r requirements.txt

Usage

1. Prepare Data

기본적으둜 ν˜Έν™˜λ˜λŠ” 데이터 양식은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

id paragraph question choices answer question_plus
1 μ˜ˆμ‹œ 지문1 μ˜ˆμ‹œ 질문1 A, B, C, D A μΆ”κ°€ 지문1
2 μ˜ˆμ‹œ 지문2 μ˜ˆμ‹œ 질문2 A, B, C, D C μΆ”κ°€ 지문2
3 μ˜ˆμ‹œ 지문3 μ˜ˆμ‹œ 질문3 A, B, C, D, E D μΆ”κ°€ 지문3

둜 이루어진 λ°μ΄ν„°μž…λ‹ˆλ‹€.

각 μ»¬λŸΌμ€ λ‹€μŒμ„ 의미 ν•©λ‹ˆλ‹€.

  • id(str) - 데이터 고유의 idλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  • paragraph(str) - 문제의 지문을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  • question(str) - 문제의 μ§ˆλ¬Έμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  • choices(list) - 선택지λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  • answer(str) - 선택지 μ€‘μ˜ μ •λ‹΅ ν•˜λ‚˜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  • question_plus(str) - μΆ”κ°€ 지문을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

μœ„ ν˜•μ‹μ˜ csv νŒŒμΌμ„ μ•„λž˜ 예처럼 λ„£μ–΄μ£Όλ©΄ λ©λ‹ˆλ‹€.

level2-nlp-generationfornlp-nlp-13-lv3/
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ train/
β”‚   β”‚   └── train.csv
β”‚   β”œβ”€β”€ val/
β”‚   β”‚   └── val.csv
β”‚   └── test/
β”‚       └── test.csv
...

2. Training

huggingface.co μ—μ„œ API Keyλ₯Ό λ°œκΈ‰ 받은 ν›„
run/run_train_qwen_best.sh μ•ˆμ˜ HUGGINGFACE_TOKEN에 λ„£λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

run/run_train_qwen_best.sh --nohup
  • --nohup: nohup λͺ¨λ“œ μ‹€ν–‰ μ—¬λΆ€

3. Inference

huggingface.co μ—μ„œ API Keyλ₯Ό λ°œκΈ‰ 받은 ν›„
run/run_inference_qwen_best.sh μ•ˆμ˜ HUGGINGFACE_TOKEN에 λ„£λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

run/run_inference_qwen_best.sh --nohup
  • --nohup: nohup λͺ¨λ“œ μ‹€ν–‰ μ—¬λΆ€

4. Training + Inference 순차 μ‹€ν–‰ νŒŒμ΄ν”„λΌμΈ

huggingface.co μ—μ„œ API Keyλ₯Ό λ°œκΈ‰ 받은 ν›„
run/run_train+inference_qwen_best.sh μ•ˆμ˜ HUGGINGFACE_TOKEN에 λ„£λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

run/run_train+inference_qwen_best.sh

5. ν›ˆλ ¨ νŒŒλΌλ―Έν„° 및 데이터 경둜 지정 (μ˜΅μ…˜)

config/qwen2.5_32B_unsloth_best_config.yaml 에 ν›ˆλ ¨ νŒŒλΌλ―Έν„° 및 데이터 κ²½λ‘œκ°€ μ§€μ •λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€.
configμ—μ„œ 지정 ν•΄μ•Όν•  key-value pairλŠ” default_arguments.py와 qwen_arguments.pyλ₯Ό μ°Έμ‘°λ°”λžλ‹ˆλ‹€.

level2-nlp-generationfornlp-nlp-13-lv3
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ qwen2.5_32B_unsloth_best_config.yaml
β”‚   β”œβ”€β”€ default_arguments.py
β”‚   └── qwen_arguments.py
β”‚       
...



πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

폴더 ꡬ쑰 μ„€λͺ…

project-name/
β”‚
β”œβ”€β”€ data/                     # 데이터셋 폴더
β”‚   
β”œβ”€β”€ notebooks/                # 개인용 μž‘μ—…μž₯(ν”„λ‘œμ νŠΈ μ°Έμ—¬μžκ°€ ν•˜κ³  싢은 μ‹€ν—˜)
β”‚
β”œβ”€β”€ src/                      # μ†ŒμŠ€ μ½”λ“œ
β”‚   β”œβ”€β”€ data/                 # 데이터 λ‘œλ“œ, μ €μž₯ 및 처리 μ½”λ“œ
β”‚   β”œβ”€β”€ models/               # λͺ¨λΈ μ •μ˜ 및 ꡬ쑰 μ½”λ“œ
β”‚   β”œβ”€β”€ training/             # ν•™μŠ΅ 루프, 손싀 ν•¨μˆ˜, μ΅œμ ν™” κ΄€λ ¨ μ½”λ“œ
β”‚   β”œβ”€β”€ evaluation/           # λͺ¨λΈ 평가 μ½”λ“œ (λ©”νŠΈλ¦­ 계산 λ“±)
β”‚   β”œβ”€β”€ utils/                # 보쑰 ν•¨μˆ˜λ‚˜ μœ ν‹Έλ¦¬ν‹° μ½”λ“œ
β”‚   └── visualization/        # μ‹œκ°ν™” μ½”λ“œ
β”‚
β”œβ”€β”€ experiments/              # μ‹€ν—˜ 관리 폴더(checkpoint λ“±)
β”‚   
β”‚
β”œβ”€β”€ scripts/                  # μ‹€ν–‰ κ°€λŠ₯ν•œ 슀크립트 (주둜 파이썬 μ§„μž…μ )
β”‚   β”œβ”€β”€ train.py              # ν•™μŠ΅ 슀크립트
β”‚   β”œβ”€β”€ evaluate.py           # 평가 슀크립트
β”‚   └── predict.py            # 예츑 슀크립트
β”‚
β”œβ”€β”€ run                       # μ½˜μ†” μ‹€ν–‰ μžλ™ν™” 슀크립트
|   β”œβ”€β”€ run.sh          
β”œβ”€β”€ config/                   # μ„€μ • 파일 (ν•˜μ΄νΌνŒŒλΌλ―Έν„° 및 경둜 μ„€μ •)
β”‚
β”‚
β”œβ”€β”€ requirements.txt          # ν•„μš”ν•œ Python νŒ¨ν‚€μ§€ λͺ©λ‘
β”œβ”€β”€ README.md                 # ν”„λ‘œμ νŠΈ κ°œμš” 및 μ„€λͺ…
└── .gitignore                # Gitμ—μ„œ μ œμ™Έν•  파일 λͺ©λ‘

Contributing

ν”„λ‘œμ νŠΈμ— κΈ°μ—¬ν•˜κ³  μ‹ΆμœΌμ‹œλ©΄ [email protected] 에 연락을 μ£Όμ„Έμš”.
이슈λ₯Ό λ°œκ²¬ν•˜μ…¨μœΌλ©΄ issue tracker에 λ¦¬ν¬νŠΈν•΄μ£Όμ„Έμš”.

If you'd like to contribute to this project, please contact us at [email protected].
If you find any issues, please report them in the issue tracker.

Contact

기타 질문 및 ν† λ‘  사항은 Github Discussion에 λ‚¨κ²¨μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.

For any other questions or discussion topics, please leave them in the GitHub Discussion.

Credit

πŸ‘¨β€πŸ’» Contributors

κΉ€ν˜„μ„œ 이재룑 이정인 μ΄ν˜„ν’ μž„ν•œνƒ μ΅œν˜„μš°
κΉ€ν˜„μ„œ 이재룑 이정인 μ΄ν˜„ν’ μž„ν•œνƒ μ΅œν˜„μš°

πŸ‘Ό Role

νŒ€μ› μ—­ν• 
κΉ€ν˜„μ„œ νŒŒμΈνŠœλ‹ 라이브러리 탐색, λͺ¨λΈ 탐색, ν•˜μ΄νΌνŒŒλΌλ―Έν„° μ‹€ν—˜, μ–΄λŒ‘ν„° 병합 μ‹€ν—˜, μ™ΈλΆ€ 데이터셋 μ „μ²˜λ¦¬
이재룑 λͺ¨λΈ 탐색, λͺ¨λΈ κ²½λŸ‰ν™”, ν•˜λ“œμ›¨μ–΄ μ΅œμ ν™”, λ©”λͺ¨λ¦¬ 뢄석
이정인 EDA, 데이터 필터링 및 μ „μ²˜λ¦¬, 데이터 증강 및 주제 λΆ„λ₯˜, ν•˜μ΄νΌνŒŒλΌλ―Έν„° μ‹€ν—˜
μ΄ν˜„ν’ EDA, PDF QA pair 생성, ν”„λ‘¬ν”„νŠΈ μ‘°ν•©, 힌트 생성 LLM νŒŒμΈνŠœλ‹ μ‹œλ„
μž„ν•œνƒ EDA, 데이터 필터링 및 μ „μ²˜λ¦¬, 데이터 증강, λͺ¨λΈ 탐색 및 μ‹€ν—˜, LoRA 및 λͺ¨λΈ ν•˜μ΄νΌνŒŒλΌλ―Έν„° μ΅œμ ν™”, νŒŒμΈνŠœλ‹ μ‹€ν—˜, 앙상블 μ‹€ν—˜
μ΅œν˜„μš° EDA, 데이터 필터링 및 μ „μ²˜λ¦¬, λͺ¨λΈ μ‹€ν—˜ ν™˜κ²½ ꡬ성, μ½”λ“œλ² μ΄μŠ€ κ°œμ„  및 μ‚¬μš©μ„± ν–₯상, μ‹€ν—˜ μˆ˜ν–‰ 및 보고

Mentors and Reviewers

monologg (Jangwon Park)

Sponsors

boostai_logo

About

level2-nlp-generationfornlp-nlp-13-lv3 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published