pro-nlp-generationfornlp-nlp-02 created by GitHub Classroom
Jupyter Notebook
2
221 commits
updated Jan 9, 2026
| 팀원 | 역할/태스크 주제 | 상세 수행 태스크 및 관련 기술 |
|---|---|---|
| 강민우 | Baseline 코드 작성, Knowledge Distillation 데이터 제작 및 실험 | - Unsloth와 BnB를 통한 Training 코드 작성 - LLM을 통해 Distillation을 위한 데이터 생성 - Distillation 데이터 SFT 진행 |
| 김차미 | Baseline 코드 작성, RAFT | - Baseline Refactoring - Prompt Engineering - RAFT 데이터 생성 및 학습 진행 |
| 박서연 | RAG, 데이터 정제, Test time scaling | - RAG 데이터 세팅, RAG context 수집 - LLM을 이용한 데이터 정제 - Test time scaling 진행 |
| 방재연 (팀장) | DPO 실험 진행, 데이터 EDA, vLLM, 외부데이터 수집 및 실험, | - trl DPO trainer 활용 실험 세팅 - train data 내 어휘 다양성 분석, 토픽 모델링 진행 - 외부 데이터 수집 및 실험 |
| 이호준 | RAG 데이터, RAG 리트리버 및 서버 구현, Knowledge Distillation 데이터 제작 및 실험 | - RAG 데이터를 수집 및 전처리 - RAG를 위한 retrieve,rerank 기능 구현 및 RAG 서버 구현 - LLM을 통해 Distillation을 위한 데이터 생성 - Distillation 데이터 SFT 진행 |
| 조민서 | 데이터 EDA, 외부데이터 수집 및 실험, 데이터 정제, DPO | - Baseline 데이터 EDA 및 외부데이터 수집 - Rule based 데이터 전처리 및 LLM을 이용한 데이터 정제 - DPO 데이터 셋 구축 |
목표: 작은 모델을 가지고 다양한 방법론을 적용하여 성능을 높이자!
![]()
Test Time Scaling
모델이 알고 있는 문제와 모르는 문제를 분리해서 풀면 성능이 오를 것이다.
모델이 무엇을 알고 있고, 무엇을 모르고 있는지를 알 수 있을까?
여러 번 inference를 진행했을 때 모델이 항상 같은 답변을 내놓지 않는다면 모델이 헷갈리고 있음을 알 수 있음
→ Test 단계의 sampling을 통해 모델이 알고 있는 지식, 헷갈리는 지식을 나눌 수 있을 것!
최종 모델
Distillation 모델 @ Huggingface: r-jelly/Qwen3-30B-A3B-Distill-Qwen3-4B-thinking-2507-Adapter
RAFT 모델 @ Huggingface: ccharmii/qwen3-4b-thinking-RAFT-adapter
결과
| 단계 | 적용 방법론 | Public Macro F1 |
|---|---|---|
| 학습 없는 Inference | x | 0.6027 |
| Test-time Scaling | Distillation + Sampling + Judge + Selective RAFT | ⭐ 0.6701 |
# git repository clone
git clone https://github.com/boostcampaitech8/pro-nlp-generationfornlp-nlp-02.git
# 가상환경 + 의존성 설치
uv venv
source .venv/bin/activate
uv sync
# config 디렉토리 내 각 train yaml 파일 참고
python train.py --config config/train.yaml
# config 디렉토리 내 yaml 파일 참고
python -m src.vllm_inference.run_vllm_inference --config config/vllm_inference.yaml
├── config/ # 실행 argument config yaml
│ ├── DPO_train.yaml
│ ├── eval.yaml
│ ├── inference.yaml
│ ├── retriever_server.yaml
│ ├── retriever_test.yaml
│ ├── train_raft.yaml
│ ├── train.yaml
│ ├── vllm_eval.yaml
│ ├── vllm_inference_raft.yaml
│ └── vllm_inference.yaml
│
├── notebooks/ # 데이터 및 프롬프트 실험 관련 ipynb 파일
│ ├── background_RAG.py
│ ├── check_train_test_duplicates.ipynb
│ ├── compare_inf_csv.ipynb
│ ├── data_refinement.ipynb
│ ├── dpo_generate_wrong_cot.ipynb
│ ├── dpo_llm_as_a_judge_v2.ipynb
│ ├── dpo_llm_as_a_judge.ipynb
│ ├── EDA_prompt_tok_length.ipynb
│ ├── EDA.ipynb
│ ├── generate_cot_data_v2.ipynb
│ ├── new_train_eda_w_preprocess.ipynb
│ ├── RAFT_CoT_final.ipynb
│ ├── RAFT_CoT.ipynb
│ ├── rag_chunking.ipynb
│ ├── RAG_paragraph.ipynb
│ ├── RAG_prompt_tuning.ipynb
│ ├── rag_quality_test.ipynb
│ ├── reasoning_ensemble.ipynb
│ ├── retriever_test.ipynb
│ ├── split_train_data.ipynb
│ └── wiki_load.ipynb
│
├── src/ # 학습 및 inference 관련 소스 코드
│ ├── __init__.py
│ ├── data/ # datasets 클래스
│ │ ├── __init__.py
│ │ ├── load_data.py
│ │ ├── postprocessor/ # 후처리 로직, base 기반으로 방법론에 따라 확장
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── generative.py
│ │ │ └── raft.py
│ │ └── preprocessor/ # 전처리 로직, base 기반으로 방법론에 따라 확장
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── dpo.py
│ │ ├── generative.py
│ │ └── raft.py
│ │
│ ├── model/ # 모델 로딩 및 양자화 클래스
│ │ ├── __init__.py
│ │ └── loader.py
│ │
│ ├── prompts/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── distill.py
│ │ ├── dpo.py
│ │ ├── raft.py
│ │ └── stubborn.py
│ │
│ ├── retriever/ # RAG 및 Retrival 관련 클래스
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── retriever_client.py
│ │ ├── retriever.py
│ │ ├── server/
│ │ │ ├── __init__.py
│ │ │ ├── README.md
│ │ │ ├── retriever_routes.py
│ │ │ ├── retriever_schema.py
│ │ │ ├── retriever_server.py
│ │ │ └── retriever_service.py
│ │ └── strategies/
│ │ ├── __init__.py
│ │ ├── base_strategy.py
│ │ ├── bm25_strategy.py
│ │ ├── dense_strategy.py
│ │ ├── rerank_strategy.py
│ │ └── sparse_strategy.py
│ │
│ ├── trainer/ # trainer 클래스 구현, base 기반으로 방법론에 따라 확장
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── dpo.py
│ │ └── generative.py
│ │
│ ├── utils/
│ │ ├── arguments.py
│ │ ├── metrics.py
│ │ ├── save_results.py
│ │ ├── tokenizer.py
│ │ └── wandb_logger.py
│ │
│ └── vllm_inference/ # vllm 추론 실행 코드
│ ├── __init__.py
│ ├── run_vllm_inference.py
│ └── vllm_utils.py
├── dpo_train.py
├── generative_inference.py
├── inference.py
├── pyproject.toml
├── README.md
├── train.py
└── uv.lock
pro-nlp-generationfornlp-nlp-02 created by GitHub Classroom
Jupyter Notebook
2
221 commits
updated Jan 9, 2026
| 팀원 | 역할/태스크 주제 | 상세 수행 태스크 및 관련 기술 |
|---|---|---|
| 강민우 | Baseline 코드 작성, Knowledge Distillation 데이터 제작 및 실험 | - Unsloth와 BnB를 통한 Training 코드 작성 - LLM을 통해 Distillation을 위한 데이터 생성 - Distillation 데이터 SFT 진행 |
| 김차미 | Baseline 코드 작성, RAFT | - Baseline Refactoring - Prompt Engineering - RAFT 데이터 생성 및 학습 진행 |
| 박서연 | RAG, 데이터 정제, Test time scaling | - RAG 데이터 세팅, RAG context 수집 - LLM을 이용한 데이터 정제 - Test time scaling 진행 |
| 방재연 (팀장) | DPO 실험 진행, 데이터 EDA, vLLM, 외부데이터 수집 및 실험, | - trl DPO trainer 활용 실험 세팅 - train data 내 어휘 다양성 분석, 토픽 모델링 진행 - 외부 데이터 수집 및 실험 |
| 이호준 | RAG 데이터, RAG 리트리버 및 서버 구현, Knowledge Distillation 데이터 제작 및 실험 | - RAG 데이터를 수집 및 전처리 - RAG를 위한 retrieve,rerank 기능 구현 및 RAG 서버 구현 - LLM을 통해 Distillation을 위한 데이터 생성 - Distillation 데이터 SFT 진행 |
| 조민서 | 데이터 EDA, 외부데이터 수집 및 실험, 데이터 정제, DPO | - Baseline 데이터 EDA 및 외부데이터 수집 - Rule based 데이터 전처리 및 LLM을 이용한 데이터 정제 - DPO 데이터 셋 구축 |
목표: 작은 모델을 가지고 다양한 방법론을 적용하여 성능을 높이자!
![]()
Test Time Scaling
모델이 알고 있는 문제와 모르는 문제를 분리해서 풀면 성능이 오를 것이다.
모델이 무엇을 알고 있고, 무엇을 모르고 있는지를 알 수 있을까?
여러 번 inference를 진행했을 때 모델이 항상 같은 답변을 내놓지 않는다면 모델이 헷갈리고 있음을 알 수 있음
→ Test 단계의 sampling을 통해 모델이 알고 있는 지식, 헷갈리는 지식을 나눌 수 있을 것!
최종 모델
Distillation 모델 @ Huggingface: r-jelly/Qwen3-30B-A3B-Distill-Qwen3-4B-thinking-2507-Adapter
RAFT 모델 @ Huggingface: ccharmii/qwen3-4b-thinking-RAFT-adapter
결과
| 단계 | 적용 방법론 | Public Macro F1 |
|---|---|---|
| 학습 없는 Inference | x | 0.6027 |
| Test-time Scaling | Distillation + Sampling + Judge + Selective RAFT | ⭐ 0.6701 |
# git repository clone
git clone https://github.com/boostcampaitech8/pro-nlp-generationfornlp-nlp-02.git
# 가상환경 + 의존성 설치
uv venv
source .venv/bin/activate
uv sync
# config 디렉토리 내 각 train yaml 파일 참고
python train.py --config config/train.yaml
# config 디렉토리 내 yaml 파일 참고
python -m src.vllm_inference.run_vllm_inference --config config/vllm_inference.yaml
├── config/ # 실행 argument config yaml
│ ├── DPO_train.yaml
│ ├── eval.yaml
│ ├── inference.yaml
│ ├── retriever_server.yaml
│ ├── retriever_test.yaml
│ ├── train_raft.yaml
│ ├── train.yaml
│ ├── vllm_eval.yaml
│ ├── vllm_inference_raft.yaml
│ └── vllm_inference.yaml
│
├── notebooks/ # 데이터 및 프롬프트 실험 관련 ipynb 파일
│ ├── background_RAG.py
│ ├── check_train_test_duplicates.ipynb
│ ├── compare_inf_csv.ipynb
│ ├── data_refinement.ipynb
│ ├── dpo_generate_wrong_cot.ipynb
│ ├── dpo_llm_as_a_judge_v2.ipynb
│ ├── dpo_llm_as_a_judge.ipynb
│ ├── EDA_prompt_tok_length.ipynb
│ ├── EDA.ipynb
│ ├── generate_cot_data_v2.ipynb
│ ├── new_train_eda_w_preprocess.ipynb
│ ├── RAFT_CoT_final.ipynb
│ ├── RAFT_CoT.ipynb
│ ├── rag_chunking.ipynb
│ ├── RAG_paragraph.ipynb
│ ├── RAG_prompt_tuning.ipynb
│ ├── rag_quality_test.ipynb
│ ├── reasoning_ensemble.ipynb
│ ├── retriever_test.ipynb
│ ├── split_train_data.ipynb
│ └── wiki_load.ipynb
│
├── src/ # 학습 및 inference 관련 소스 코드
│ ├── __init__.py
│ ├── data/ # datasets 클래스
│ │ ├── __init__.py
│ │ ├── load_data.py
│ │ ├── postprocessor/ # 후처리 로직, base 기반으로 방법론에 따라 확장
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── generative.py
│ │ │ └── raft.py
│ │ └── preprocessor/ # 전처리 로직, base 기반으로 방법론에 따라 확장
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── dpo.py
│ │ ├── generative.py
│ │ └── raft.py
│ │
│ ├── model/ # 모델 로딩 및 양자화 클래스
│ │ ├── __init__.py
│ │ └── loader.py
│ │
│ ├── prompts/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── distill.py
│ │ ├── dpo.py
│ │ ├── raft.py
│ │ └── stubborn.py
│ │
│ ├── retriever/ # RAG 및 Retrival 관련 클래스
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── retriever_client.py
│ │ ├── retriever.py
│ │ ├── server/
│ │ │ ├── __init__.py
│ │ │ ├── README.md
│ │ │ ├── retriever_routes.py
│ │ │ ├── retriever_schema.py
│ │ │ ├── retriever_server.py
│ │ │ └── retriever_service.py
│ │ └── strategies/
│ │ ├── __init__.py
│ │ ├── base_strategy.py
│ │ ├── bm25_strategy.py
│ │ ├── dense_strategy.py
│ │ ├── rerank_strategy.py
│ │ └── sparse_strategy.py
│ │
│ ├── trainer/ # trainer 클래스 구현, base 기반으로 방법론에 따라 확장
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── dpo.py
│ │ └── generative.py
│ │
│ ├── utils/
│ │ ├── arguments.py
│ │ ├── metrics.py
│ │ ├── save_results.py
│ │ ├── tokenizer.py
│ │ └── wandb_logger.py
│ │
│ └── vllm_inference/ # vllm 추론 실행 코드
│ ├── __init__.py
│ ├── run_vllm_inference.py
│ └── vllm_utils.py
├── dpo_train.py
├── generative_inference.py
├── inference.py
├── pyproject.toml
├── README.md
├── train.py
└── uv.lock