Skip to content

AIBootcamp13/upstageailab-nlp-summarization-nlp_1

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

65 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NLP Summarization Competition

Team

๋ฌธ๊ตญํ˜„ ๋ฅ˜์ง€ํ—Œ ์ด์Šนํ˜„ ์ •์žฌํ›ˆ ์กฐ์„ ๋ฏธ ์ด๋‚˜๊ฒฝ ์ด์ค€์„
๋ฌธ๊ตญํ˜„ ๋ฅ˜์ง€ํ—Œ ์ด์Šนํ˜„ ์ •์žฌํ›ˆ ์กฐ์„ ๋ฏธ ์ด๋‚˜๊ฒฝ ์ด์ค€์„
ํŒ€์žฅ, ๋ชจ๋ธ๋ง ์ด๊ด„ ๋ชจ๋ธ ์‹คํ—˜ ๋ฐ ์ตœ์ ํ™” EDA ๋ฐ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๋ชจ๋ธ ๊ฒ€์ฆ ๋ฐ ์„ฑ๋Šฅ ๋ถ„์„ ๋ชจ๋ธ ์‹คํ—˜ ๋ฐ ์ตœ์ ํ™” EDA ๋ฐ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๋ชจ๋ธ ๊ฒ€์ฆ ๋ฐ ์„ฑ๋Šฅ ๋ถ„์„

0. Overview

Environment

  • Python 3.10.13 ์ด์ƒ
  • CUDA ์ง€์› GPU ํ™˜๊ฒฝ (PyTorch 2.7.1)
  • uv ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €

Requirements

์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ:

  • torch>=2.7.1 - ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ
  • transformers>=4.54.0 - Hugging Face Transformers
  • pytorch-lightning>=2.5.2 - PyTorch Lightning
  • wandb>=0.21.0 - ์‹คํ—˜ ์ถ”์  ๋ฐ ์‹œ๊ฐํ™”
  • accelerate>=0.26.0 - ๋ถ„์‚ฐ ํ•™์Šต ์ง€์›
  • rouge>=1.0.1 - ROUGE ํ‰๊ฐ€ ์ง€ํ‘œ
  • pandas>=2.3.1 - ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
  • python-dotenv>=1.1.1 - ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ

1. Competiton Info

Overview

  • ๋Œ€ํšŒ๋ช…: Dialogue Summarization | ์ผ์ƒ ๋Œ€ํ™” ์š”์•ฝ
  • ๋ชฉํ‘œ: ์ผ์ƒ ๋Œ€ํ™”๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์š”์•ฝํ•˜๋Š” ๋ชจ๋ธ ๊ฐœ๋ฐœ
  • ์ฃผ์ œ: ํ•™๊ต ์ƒํ™œ, ์ง์žฅ, ์น˜๋ฃŒ, ์‡ผํ•‘, ์—ฌ๊ฐ€, ์—ฌํ–‰ ๋“ฑ ๊ด‘๋ฒ”์œ„ํ•œ ์ผ์ƒ ์ƒํ™œ ์ค‘ ๋‚˜๋ˆ„๋Š” ๋Œ€ํ™”๋“ค์— ๋Œ€ํ•œ ์š”์•ฝ
  • ์„ค๋ช…: ํšŒ์˜๋‚˜ ํ† ์˜๋Š” ๋ฌผ๋ก ์ด๊ณ , ์‚ฌ์†Œํ•œ ์ผ์ƒ ๋Œ€ํ™” ์ค‘์—๋„ ์„œ๋กœ ๋‹ค์–‘ํ•œ ์ฃผ์ œ์™€ ์ž…์žฅ๋“ค์„ ์ฃผ๊ณ  ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋Œ€ํ™”๋ฅผ ๋…น์Œํ•ด๋‘๋”๋ผ๋„ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋“ค์„ ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์š”์•ฝ์ด ํ•„์š”ํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•œ ํ†ตํ™” ๋น„์„œ์™€ ๊ฐ™์€ ์„œ๋น„์Šค๋“ค๋„ ๋“ฑ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Timeline

  • ๋Œ€ํšŒ ์‹œ์ž‘: 2025๋…„ 7์›” 25์ผ 10:00
  • ๋Œ€ํšŒ ์ข…๋ฃŒ: 2025๋…„ 8์›” 6์ผ 19:00

2. Components

Directory

โ”œโ”€โ”€ code # ์ฝ”๋“œ ๊ด€๋ จ ํด๋”
โ”‚ย  ย โ”œโ”€โ”€ baseline # ๋ฒ ์ด์Šค๋ผ์ธ ์ฝ”๋“œ ํด๋”
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ baseline.ipynb # ๋ฒ ์ด์Šค๋ผ์ธ ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ๋ฒ„์ „
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ baseline.py # ๋ฒ ์ด์Šค๋ผ์ธ .py ๋ฒ„์ „
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ config.yaml # ๋ชจ๋ธ ์„ค์ • ํŒŒ์ผ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ env_template.txt # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ…œํ”Œ๋ฆฟ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ requirements.txt # ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉ๋ก
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ solar_api.ipynb # Solar API ํ™œ์šฉ ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ
โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ solar_api.py # Solar API ํ™œ์šฉ .py ๋ฒ„์ „
โ”‚ย  ย โ”œโ”€โ”€ jhryu # ํŒ€์› ํด๋”
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ aeda_augmentation.py # EDA ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ augmented_data # EDA ์ฆ๊ฐ• ๋ฐ์ดํ„ฐ ์ €์žฅ ๋””๋ ‰ํ† ๋ฆฌ
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ aeda_report.json # EDA ์ฆ๊ฐ• ๊ฒฐ๊ณผ ๋ฐ ๋ฆฌํฌํŠธ
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ augmentation_report.json # ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ๊ฒฐ๊ณผ ๋ฐ ๋ฆฌํฌํŠธ
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ train2.csv # ์ฆ๊ฐ•๋œ ํ•™์Šต ๋ฐ์ดํ„ฐ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ baseline.py # ๊ฐœ์„ ๋œ ๋ฒ ์ด์Šค๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ config # ์‹คํ—˜๋ณ„ ์„ค์ • ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ config_sweep_solar.yaml # Solar API sweep ์„ค์ •
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ config_sweep.yaml # sweep ์„ค์ • ํŒŒ์ผ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ config.yaml # ๋ฉ”์ธ ๋ชจ๋ธ ์„ค์ • ํŒŒ์ผ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ data_augmentation.py # ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ ensemble_inference_best.py # ์•™์ƒ๋ธ” ์ถ”๋ก  ์Šคํฌ๋ฆฝํŠธ - ๋ฆฌ๋”๋ณด๋“œ ๊ฐฑ์‹ 
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ ensemble_inference.py # ์•™์ƒ๋ธ” ์ถ”๋ก  ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ ensemble_usage.md # ์•™์ƒ๋ธ” ์‚ฌ์šฉ๋ฒ• ๋ฌธ์„œ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ env_template.txt # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ…œํ”Œ๋ฆฟ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ inference.py # ๋‹จ์ผ ๋ชจ๋ธ ์ถ”๋ก  ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ solar_api_sweep.py # Solar API sweep ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ solar_api.py # Solar API ํ™œ์šฉ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ wandb_sweep.py # wandb sweep ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”œโ”€โ”€ Moon # ํŒ€์žฅ ํด๋”
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ conf # ์„ค์ • ํŒŒ์ผ ํด๋”
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ config.yaml # ๋ฉ”์ธ ์„ค์ • ํŒŒ์ผ
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ data # ๋ฐ์ดํ„ฐ ์„ค์ •
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ default.yaml # ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์„ค์ •
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ inference # ์ถ”๋ก  ์„ค์ •
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ default.yaml # ๊ธฐ๋ณธ ์ถ”๋ก  ์„ค์ •
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ model # ๋ชจ๋ธ ์„ค์ •
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ model.yaml # ๊ธฐ๋ณธ ๋ชจ๋ธ ์„ค์ •
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ training # ํ•™์Šต ์„ค์ •
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย  ย  ย โ””โ”€โ”€ default.yaml # ๊ธฐ๋ณธ ํ•™์Šต ์„ค์ •
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ docs # ๋ฌธ์„œ ํด๋”
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ Wandb.README.md # Wandb ๋ฌธ์„œ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ input # ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ํด๋”
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ get_data.sh # ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ jupyter # ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ํด๋”
โ”‚ย  ย โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ EDA.ipynb # EDA ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ
โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ src # ์†Œ์Šค์ฝ”๋“œ ํด๋”
โ”‚ย  ย โ”‚ย  ย  ย  ย โ”œโ”€โ”€ check_gpu.py # GPU ํ™•์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚ย  ย โ”‚ย  ย  ย  ย โ”œโ”€โ”€ data.py # ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย  ย  ย โ”œโ”€โ”€ inference.py # ์ถ”๋ก  ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย  ย  ย โ”œโ”€โ”€ main.ipynb # ๋ฉ”์ธ ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ
โ”‚ย  ย โ”‚ย  ย  ย  ย โ”œโ”€โ”€ main.py # ๋ฉ”์ธ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย  ย  ย โ”œโ”€โ”€ model.py # ๋ชจ๋ธ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย  ย  ย โ”œโ”€โ”€ train.py # ํ•™์Šต ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย  ย  ย โ””โ”€โ”€ utils.py # ์œ ํ‹ธ๋ฆฌํ‹ฐ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”œโ”€โ”€ seung_notebook # ํŒ€์› ํด๋”
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ baseline.py # ๋ฒ ์ด์Šค๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ”‚ย  ย โ”œโ”€โ”€ eda.ipynb # EDA ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ
โ”‚ย  ย โ”‚ย  ย โ””โ”€โ”€ preprocess.py # ์ „์ฒ˜๋ฆฌ ์Šคํฌ๋ฆฝํŠธ
โ”‚ย  ย โ””โ”€โ”€ utils # ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋”
โ”‚ย  ย  ย  ย โ”œโ”€โ”€ check_gpu.py # GPU ํ™•์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚ย  ย  ย  ย โ””โ”€โ”€ log_util.py # ๋กœ๊น… ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”œโ”€โ”€ config.yaml # ๋ฉ”์ธ ์„ค์ • ํŒŒ์ผ
โ”œโ”€โ”€ data # ๋ฐ์ดํ„ฐ ํด๋”
โ”‚ย  ย โ”œโ”€โ”€ dev_clean.csv # ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ (ํด๋ฆฐ)
โ”‚ย  ย โ”œโ”€โ”€ dev.csv # ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ
โ”‚ย  ย โ”œโ”€โ”€ sample_submission.csv # ์ œ์ถœ ์˜ˆ์‹œ
โ”‚ย  ย โ”œโ”€โ”€ test_clean.csv # ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ (ํด๋ฆฐ)
โ”‚ย  ย โ”œโ”€โ”€ test.csv # ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ
โ”‚ย  ย โ”œโ”€โ”€ train_clean.csv # ํ•™์Šต ๋ฐ์ดํ„ฐ (ํด๋ฆฐ)
โ”‚ย  ย โ””โ”€โ”€ train.csv # ํ•™์Šต ๋ฐ์ดํ„ฐ
โ”œโ”€โ”€ docs # ๋ฌธ์„œ ํด๋”
โ”‚ย  ย โ””โ”€โ”€ Wandb.README.md # Wandb ๋ฌธ์„œ
โ”œโ”€โ”€ input # ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ํด๋”
โ”‚ย  ย โ””โ”€โ”€ get_data.sh # ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ pyproject.toml # ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ •์˜ (UV)
โ”œโ”€โ”€ README.md # ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ
โ””โ”€โ”€ uv.lock # ์˜์กด์„ฑ ๋ฒ„์ „ ์ž ๊ธˆ ํŒŒ์ผ (UV)

์ฐธ๊ณ  ์‚ฌํ•ญ

  • cd input && ./get_data.sh ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜์—ฌ dataํด๋”๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • UV๋กœ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
uv run code/baseline/baseline.py

3. Data descrption

Dataset overview

  • ๋ฐ์ดํ„ฐ์…‹ ํฌ๊ธฐ:

    • Train: 12,457๊ฐœ
    • Dev: 499๊ฐœ
    • Test: 250๊ฐœ
  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ:

    • fname: ํŒŒ์ผ๋ช… (์˜ˆ: train_0)
    • dialogue: ๋Œ€ํ™” ๋‚ด์šฉ (์ตœ์†Œ 2๋ช…์—์„œ ์ตœ๋Œ€ 7๋ช… ์ฐธ์—ฌ)
    • summary: ๋Œ€ํ™” ์š”์•ฝ๋ฌธ (train/dev์—๋งŒ ์กด์žฌ)
    • topic: ๋Œ€ํ™” ์ฃผ์ œ
  • ๋Œ€ํ™” ์ฐธ์—ฌ์ž ํ‘œ์‹œ:

    • #Person1#, #Person2#, #Person3# ๋“ฑ์œผ๋กœ ํ™”์ž ๊ตฌ๋ถ„
    • ๊ฐœ์ธ์ •๋ณด๋Š” #PhoneNumber#, #Address#, #PassportNumber# ๋“ฑ์œผ๋กœ ๋งˆ์Šคํ‚น

EDA

  • ๋Œ€ํ™” ๊ธธ์ด ๋ถ„์„: ํ‰๊ท  512 ํ† ํฐ ์ด๋‚ด์˜ ๋Œ€ํ™”
  • ์š”์•ฝ๋ฌธ ๊ธธ์ด: ํ‰๊ท  100 ํ† ํฐ ์ด๋‚ด
  • ์ฃผ์ œ ๋ถ„ํฌ: ์ผ์ƒ์ƒํ™œ, ์ง์žฅ, ํ•™๊ต, ์˜๋ฃŒ, ์‡ผํ•‘ ๋“ฑ ๋‹ค์–‘ํ•œ ์ฃผ์ œ
  • ํ™”์ž ์ˆ˜ ๋ถ„ํฌ: 2-7๋ช…์˜ ํ™”์ž๊ฐ€ ์ฐธ์—ฌํ•˜๋Š” ๋Œ€ํ™”

Data Processing

  • Special Tokens ์ฒ˜๋ฆฌ:

    • ํ™”์ž ํ† ํฐ: #Person1#, #Person2#, #Person3#
    • ๊ฐœ์ธ์ •๋ณด ๋งˆ์Šคํ‚น: #PhoneNumber#, #Address#, #PassportNumber#
    • ํ† ํฌ๋‚˜์ด์ €์— special_tokens๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ถ„ํ•ด๋˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌ
  • ํ† ํฌ๋‚˜์ด์ € ์„ค์ •:

    • Encoder ์ตœ๋Œ€ ๊ธธ์ด: 512 ํ† ํฐ
    • Decoder ์ตœ๋Œ€ ๊ธธ์ด: 100 ํ† ํฐ
    • BOS ํ† ํฐ: <s>
    • EOS ํ† ํฐ: </s>
  • ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ:

    • Train ์‹œ: decoder_input์— BOS ํ† ํฐ ์ถ”๊ฐ€, decoder_output์— EOS ํ† ํฐ ์ถ”๊ฐ€
    • Inference ์‹œ: ์ƒ์„ฑ๋œ ์š”์•ฝ๋ฌธ์—์„œ ํŠน์ˆ˜ ํ† ํฐ ์ œ๊ฑฐ

Data Augmentation

AEDA (An Easier Data Augmentation)

  • ์ฆ๊ฐ• ๋ฐฉ์‹:

    • ๊ตฌ๋‘์  ์‚ฝ์ž…: ๋ฌธ์žฅ ์ค‘๊ฐ„์— ์‰ผํ‘œ, ๋ง์ค„์ž„ํ‘œ ๋“ฑ ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ตฌ๋‘์  ์ถ”๊ฐ€
    • ๊ฐํƒ„์‚ฌ/์ถ”์ž„์ƒˆ ์‚ฝ์ž…: '์Œ', '์•„', '๊ทธ๋Ÿฐ๋ฐ', '๊ทธ๋Ÿฌ๋‹ˆ๊นŒ' ๋“ฑ ํ•œ๊ตญ์–ด ์ž์—ฐ์Šค๋Ÿฌ์šด ์ถ”์ž„์ƒˆ ์ถ”๊ฐ€
    • ์œ ์˜์–ด ๊ต์ฒด: '์ข‹์•„'โ†’'๊ดœ์ฐฎ์•„', '๋„ค'โ†’'์˜ˆ' ๋“ฑ ๊ธฐ๋ณธ์ ์ธ ์œ ์˜์–ด ๋ณ€ํ™˜
    • ๋†’์ž„๋ง/๋ฐ˜๋ง ๋ณ€ํ™˜: ๋ฌธ์ฒด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์กด๋Œ“๋ง๊ณผ ๋ฐ˜๋ง ๊ฐ„ ๋ณ€ํ™˜
    • ๋ฌธ์žฅ ๋ถ„ํ• /๊ฒฐํ•ฉ: ๊ธด ๋ฌธ์žฅ ๋ถ„๋ฆฌ ๋˜๋Š” ์งง์€ ๋ฌธ์žฅ๋“ค์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒฐํ•ฉ
  • ์ฆ๊ฐ• ๊ฐ•๋„: medium (์ƒ˜ํ”Œ๋‹น 2๊ฐœ ๋ณ€ํ˜• ์ƒ์„ฑ)

  • ํŠน์ง•: API ์—†์ด ๋น ๋ฅธ ์†๋„๋กœ ํ•œ๊ตญ์–ด ๋Œ€ํ™”๋ฌธ์— ํŠนํ™”๋œ ์ฆ๊ฐ• ์ˆ˜ํ–‰

  • ์„ฑ๋Šฅ ๊ฒฐ๊ณผ:

    • AEDA 2์•™์ƒ๋ธ”: 49.52(Mid) 45.61(Final)
    • ์ฆ๊ฐ•์—†์Œ 3์•™์ƒ๋ธ”: 49.69(Mid) 46.54(Final)
    • ๋ถ„์„: ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๋ฏธ๋ฏธํ•˜์—ฌ ๋‹จ์ˆœํ•œ ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ฆ๊ฐ•์œผ๋กœ๋Š” ์‹ค์งˆ์  ์„ฑ๋Šฅ ํ–ฅ์ƒ ํ•œ๊ณ„ ํ™•์ธ

4. Modeling

Model descrition

  • ์‚ฌ์šฉ ๋ชจ๋ธ: digit82/kobart-summarization

    • KoBART ๊ธฐ๋ฐ˜ ํ•œ๊ตญ์–ด ์š”์•ฝ ์ „์šฉ ๋ชจ๋ธ
    • Encoder-Decoder ๊ตฌ์กฐ์˜ Seq2Seq ๋ชจ๋ธ
    • ํ•œ๊ตญ์–ด ๋‰ด์Šค ๊ธฐ์‚ฌ ์š”์•ฝ์œผ๋กœ ์‚ฌ์ „ ํ•™์Šต๋จ
  • ์„ ํƒ ์ด์œ :

    • ํ•œ๊ตญ์–ด ์š”์•ฝ ํƒœ์Šคํฌ์— ํŠนํ™”๋œ ์‚ฌ์ „ ํ•™์Šต ๋ชจ๋ธ

    • BART์˜ ๊ฐ•๋ ฅํ•œ ์ƒ์„ฑ ๋Šฅ๋ ฅ๊ณผ ํ•œ๊ตญ์–ด ์ดํ•ด ๋Šฅ๋ ฅ ๊ฒฐํ•ฉ

    • Fine-tuning์„ ํ†ตํ•ด ๋Œ€ํ™” ์š”์•ฝ ํƒœ์Šคํฌ์— ์ ์‘ ๊ฐ€๋Šฅ

    • ์‚ฌ์šฉ ๋ชจ๋ธ: psyche/KoT5-summarization

    • T5 ๊ธฐ๋ฐ˜ ํ•œ๊ตญ์–ด ์š”์•ฝ ์ „์šฉ ๋ชจ๋ธ

    • ์„ ํƒ ์ด์œ :

    • ํ•œ๊ตญ์–ด ์š”์•ฝ ํƒœ์Šคํฌ์— ํŠนํ™”๋œ ์‚ฌ์ „ ํ•™์Šต ๋ชจ๋ธ

    • T5์˜ ์œ ์—ฐํ•œ ์ธ์ฝ”๋”-๋””์ฝ”๋” ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•œ ์•ˆ์ •์ ์ธ ์„ฑ๋Šฅ

    • Encoder์™€ Decoder์˜ embedding ๊ณต์œ 

Modeling Process

1. ํ•™์Šต ์„ค์ •

  • Epochs: 20
  • Learning Rate: 1e-5
  • Batch Size:
    • Train: 50
    • Eval: 32
  • Optimizer: AdamW
  • LR Scheduler: Cosine
  • Mixed Precision: FP16 ์‚ฌ์šฉ

2. ํ•™์Šต ์ „๋žต

  • Early Stopping:
    • Patience: 3 epochs
    • Threshold: 0.001
  • ํ‰๊ฐ€ ์ „๋žต: Epoch ๋‹จ์œ„ ํ‰๊ฐ€
  • ๋ชจ๋ธ ์ €์žฅ: ์ตœ๊ณ  ์„ฑ๋Šฅ ๋ชจ๋ธ ์ €์žฅ (save_total_limit: 5)

3. ์ƒ์„ฑ ์„ค์ •

  • Beam Search: num_beams=4
  • No Repeat N-gram: size=2
  • Max Length: 100 ํ† ํฐ
  • Early Stopping: True

4. ํ•™์Šต ๊ณผ์ • ๋ชจ๋‹ˆํ„ฐ๋ง

  • Wandb๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง (์„ ํƒ์‚ฌํ•ญ)
  • ROUGE ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ์„ฑ๋Šฅ ํ‰๊ฐ€
  • ํ•™์Šต/๊ฒ€์ฆ ์†์‹ค ์ถ”์ 

Hyperparameter Optimization

WandB Sweep์„ ํ†ตํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ตœ์ ํ™”

1. ๋ฒ ์ด์Šค๋ผ์ธ ๋ชจ๋ธ ์ตœ์ ํ™” (wandb_sweep.py)

  • ์ตœ์ ํ™” ๋ฐฉ๋ฒ•: Bayesian Optimization
  • ๋ชฉํ‘œ ์ง€ํ‘œ: eval/rouge-1 ์ตœ๋Œ€ํ™”
  • ์ฃผ์š” ์ตœ์ ํ™” ํŒŒ๋ผ๋ฏธํ„ฐ:
    • Learning Rate: 1e-5 ~ 5e-4 (log uniform)
    • Batch Size: [8, 16, 32, 48]
    • Epochs: 5 ~ 20
    • Warmup Ratio: 0.0 ~ 0.2
    • Scheduler: [cosine, linear, polynomial]
    • Sequence Length: encoder(256768), decoder(40120)
    • Beam Search: [4, 6, 8, 10, 12]

2. Solar API ํŒŒ๋ผ๋ฏธํ„ฐ ์ตœ์ ํ™” (solar_api_sweep.py)

  • ์ตœ์ ํ™” ๋ฐฉ๋ฒ•: Bayesian Optimization
  • ๋ชฉํ‘œ ์ง€ํ‘œ: eval/rouge_avg ์ตœ๋Œ€ํ™”
  • ์ฃผ์š” ์ตœ์ ํ™” ํŒŒ๋ผ๋ฏธํ„ฐ:
    • Model: [solar-pro2, solar-pro, solar-mini, solar-1-mini-chat ๋“ฑ]
    • Few-shot Count: [1, 2, 3, 4, 5]
    • Temperature: 0.1 ~ 0.5 (์ฐฝ์˜์„ฑ ์กฐ์ ˆ)
    • Top-p: 0.1 ~ 0.9 (ํ† ํฐ ์„ ํƒ ๋ฒ”์œ„) ํŠน์ง•:
  • API Rate Limit ๊ณ ๋ คํ•œ 10๋ถ„ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ํฌํ•จ
  • ํŒŒ๋ผ๋ฏธํ„ฐ ์˜ค๋ฒ„๋ผ์ด๋“œ ๊ธฐ๋Šฅ์œผ๋กœ ํŠน์ • ๊ฐ’ ๊ณ ์ • ๊ฐ€๋Šฅ

Model Ensemble

5๊ฐ€์ง€ ์•™์ƒ๋ธ” ๊ธฐ๋ฒ• (ensemble_inference.py)

์•™์ƒ๋ธ” ๋ฐฉ๋ฒ•:

๐Ÿ”„ Post-Generation ์•™์ƒ๋ธ” (๊ฐœ๋ณ„ ๋ชจ๋ธ ์ถ”๋ก  ํ›„ ๊ฒฐ๊ณผ ํ›„์ฒ˜๋ฆฌ):

  1. Hard Voting: ๊ฐ ๋ชจ๋ธ์ด ์™„์ „ํ•œ ํ…์ŠคํŠธ ์ƒ์„ฑ ํ›„ ํ† ํฐ๋ณ„ ๋‹ค์ˆ˜๊ฒฐ ํˆฌํ‘œ
  2. Score-based Selection: ๊ฐ ๋ชจ๋ธ์ด Beam Search๋กœ ์—ฌ๋Ÿฌ ํ›„๋ณด ์ƒ์„ฑ ํ›„ ์ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฒฐ๊ณผ ์„ ํƒ
  3. Length Based: ๊ฐ ๋ชจ๋ธ ๊ฒฐ๊ณผ ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์„ ์„ ํƒ

โšก Real-time ์•™์ƒ๋ธ” (์‹ค์‹œ๊ฐ„์œผ๋กœ ํ† ํฐ๋ณ„ ์•™์ƒ๋ธ” ์ถ”๋ก ): 4. Logit Beam Search: ๊ฐ ์Šคํ…์—์„œ ์ƒ์œ„ k๊ฐœ์˜ ๋น”์„ ์œ ์ง€ํ•˜๊ณ  ์ ์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์ข… ์„ ํƒ 5. Logit Greedy Decoding: ๋งค ํ† ํฐ๋งˆ๋‹ค ๋ชจ๋“  ๋ชจ๋ธ์˜ ํ™•๋ฅ  ๋ถ„ํฌ๋ฅผ ํ‰๊ท ํ•˜์—ฌ ์ƒ์„ฑ

์„ฑ๋Šฅ ๊ฒฐ๊ณผ (ROUGE-avg ๊ธฐ์ค€):

  • 1์œ„: Logit Beam Search - 0.296869 (292.5์ดˆ) - ๋ฆฌ๋”๋ณด๋“œ ๊ฐฑ์‹ 
  • 2์œ„: Length Based - 0.276318 (269.7์ดˆ)
  • 3์œ„: Score-based Selection - 0.215161 (272.5์ดˆ)
  • 4์œ„: Logit Greedy Decoding - 0.211966 (216.3์ดˆ)
  • 5์œ„: Hard Voting - 0.197943 (271.1์ดˆ)

์‹คํ–‰ ์‹œ๊ฐ„ ์ˆœ์œ„:

  • 1์œ„: Logit Greedy Decoding - 216.3์ดˆ (๊ฐ€์žฅ ๋น ๋ฆ„)
  • 2์œ„: Length Based - 269.7์ดˆ
  • 3์œ„: Hard Voting - 271.1์ดˆ
  • 4์œ„: Score-based Selection - 272.5์ดˆ
  • 5์œ„: Logit Beam Search - 292.5์ดˆ

ํŠน์ง•:

  • 8๊ฐœ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์„ ํ™œ์šฉํ•œ ์•™์ƒ๋ธ”๋กœ ๋ฆฌ๋”๋ณด๋“œ ๊ฐฑ์‹  (Rougeํ‰๊ท  49.6957)
  • ๊ฐ ๋ฐฉ๋ฒ•๋ณ„ ์ฆ‰์‹œ ROUGE ์ ์ˆ˜ ์ถœ๋ ฅ ๋ฐ ์„ฑ๋Šฅ ๋น„๊ต
  • baseline.py์™€ ๋™์ผํ•œ ํ‰๊ฐ€ ๋ฐฉ์‹์œผ๋กœ ์ •ํ™•ํ•œ ์„ฑ๋Šฅ ์ธก์ •

5. Result

Leader Board

  • ํ‰๊ฐ€ ์ง€ํ‘œ: ROUGE-L F1 Score
  • ์ œ์ถœ ํŒŒ์ผ ํ˜•์‹: CSV (fname, summary ์ปฌ๋Ÿผ)

์ตœ์ข… ์„ฑ๋Šฅ ๊ฒฐ๊ณผ:

  • 8๋ชจ๋ธ ์•™์ƒ๋ธ”: ROUGE-L 49.69(Mid), 46.54(Final)
  • 3๋ชจ๋ธ ์•™์ƒ๋ธ”: ROUGE-L 49.29(Mid), 46.43(Final)
  • AEDA 2๋ชจ๋ธ ์•™์ƒ๋ธ”: ROUGE-L 49.52(Mid), 45.61(Final)
  • ๋‹จ์ผ ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ตœ์ ํ™”: ROUGE-L 48.04(Mid), 45.41(Final)

Presentation

  • Insert your presentaion file(pdf) link

etc

Meeting Log

  • Insert your meeting log link like Notion or Google Docs

Reference

  • Insert related reference

Ask DeepWiki

About

ai_bootcamp_13-upstageailab-nlp-summarization-Upstage-AI-Lab-5-Classroom-Repository-AI-Template created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Jupyter Notebook 87.3%
  • Python 12.7%