neural-mesh-v2 / Update /Phase3_IPO_Extraction.md
hjkim00's picture
Restore all essential files - code, configs, and MBPP/HumanEval data
24c2665 verified
# Phase 3: IPO Triple μΆ”μΆœ μ‹œμŠ€ν…œ μ™„λ£Œ
## βœ… κ΅¬ν˜„λœ μ»΄ν¬λ„ŒνŠΈ
### 1. IPOTripleExtractor
- **파일**: `absolute_zero_reasoner/testtime/ipo_extractor.py`
- **κΈ°λŠ₯**:
- AZR Python Executor 기반 μ•ˆμ „ν•œ μ½”λ“œ μ‹€ν–‰
- ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ—μ„œ μž…λ ₯-좜λ ₯ 쌍 μΆ”μΆœ
- μ†”λ£¨μ…˜ μ‹€ν–‰μœΌλ‘œ IPO νŠΈλ¦¬ν”Œ 생성
- ν•©μ„± μž…λ ₯으둜 μΆ”κ°€ νŠΈλ¦¬ν”Œ 생성
- νŠΈλ¦¬ν”Œ 검증 및 일관성 확인
- **기반**: `python_executor.py`, `azr_ray_trainer.py` 둜직
### 2. TestTimeTaskGenerator
- **파일**: `absolute_zero_reasoner/testtime/task_generator.py`
- **κΈ°λŠ₯**:
- Induction: μž…λ ₯-좜λ ₯μ—μ„œ ν•¨μˆ˜ μΆ”λ‘ 
- Deduction: ν•¨μˆ˜+μž…λ ₯μ—μ„œ 좜λ ₯ μΆ”λ‘ 
- Abduction: ν•¨μˆ˜+좜λ ₯μ—μ„œ μž…λ ₯ μΆ”λ‘ 
- AZR 기반 ν…œν”Œλ¦Ώ μ‹œμŠ€ν…œ
- ν•™μŠ΅μš© 데이터셋 생성
- **기반**: `prompts.py`, `constructor.py` ν…œν”Œλ¦Ώ
## πŸ§ͺ ν…ŒμŠ€νŠΈ κ²°κ³Ό
### IPO μΆ”μΆœ μ‹œμŠ€ν…œ ν…ŒμŠ€νŠΈ (βœ… 3/3 톡과)
```
IPO Extractor: βœ… PASS
Task Generator: βœ… PASS
Integrated Pipeline: βœ… PASS
```
### κ²€μ¦λœ κΈ°λŠ₯
- βœ… **IPO μΆ”μΆœ**: 5/6 μœ νš¨ν•œ νŠΈλ¦¬ν”Œ 생성
- βœ… **νƒœμŠ€ν¬ 생성**: 4개 νƒœμŠ€ν¬ (I:1, D:1, A:2)
- βœ… **톡합 νŒŒμ΄ν”„λΌμΈ**: Mbpp/2 문제 전체 처리
- βœ… **AZR Python Executor**: μ•ˆμ „ν•œ μ½”λ“œ μ‹€ν–‰ 확인
## πŸ“Š μ„±λŠ₯ μ§€ν‘œ
### IPO μΆ”μΆœ μ„±λŠ₯
- **ν…ŒμŠ€νŠΈ 문제**: `add_two(x)` κ°„λ‹¨ν•œ ν•¨μˆ˜
- **μΆ”μΆœλœ νŠΈλ¦¬ν”Œ**: 5개 (μœ νš¨μ„± 83%)
- **μ‹€ν–‰ μ‹œκ°„**: ~0.5초
### νƒœμŠ€ν¬ 생성 μ„±λŠ₯
- **MBPP 문제**: `similar_elements` ν•¨μˆ˜
- **μƒμ„±λœ νƒœμŠ€ν¬**: 4개 (κ· λ“± λΆ„λ°°)
- **νƒœμŠ€ν¬ 뢄포**: Induction(25%), Deduction(25%), Abduction(50%)
### 톡합 νŒŒμ΄ν”„λΌμΈ
```
1. 문제 λ‘œλ”© βœ… β†’ 2. IPO μΆ”μΆœ βœ… β†’ 3. νƒœμŠ€ν¬ 생성 βœ…
```
## πŸ” 핡심 기술 검증
### 1. AZR Python Executor 연동
- **ProcessPool 기반**: μ•ˆμ „ν•œ μƒŒλ“œλ°•μŠ€ μ‹€ν–‰
- **νƒ€μž„μ•„μ›ƒ 관리**: 5초 μ œν•œμœΌλ‘œ TestTime μ΅œμ ν™”
- **μ—λŸ¬ 처리**: ꡬ문/μ‹€ν–‰ 였λ₯˜ 뢄리 처리
### 2. IPO νŠΈλ¦¬ν”Œ ꡬ쑰
```json
{
"id": "Mbpp/2_triple_0",
"input": "(3, 4, 5, 6), (5, 7, 4, 10)",
"program": "def similar_elements(test_tup1, test_tup2):\n return tuple(set(test_tup1) & set(test_tup2))",
"expected_output": "(4, 5)",
"actual_output": "(4, 5)",
"function_name": "similar_elements",
"is_correct": true,
"extraction_method": "test_case"
}
```
### 3. 3μ’… νƒœμŠ€ν¬ ν…œν”Œλ¦Ώ
- **Induction**: "μž…λ ₯-좜λ ₯μ—μ„œ ν•¨μˆ˜λ₯Ό μΆ”λ‘ ν•˜μ„Έμš”"
- **Deduction**: "ν•¨μˆ˜μ™€ μž…λ ₯으둜 좜λ ₯을 μ˜ˆμΈ‘ν•˜μ„Έμš”"
- **Abduction**: "ν•¨μˆ˜μ™€ 좜λ ₯으둜 μž…λ ₯을 μ°ΎμœΌμ„Έμš”"
## πŸ“ μ—…λ°μ΄νŠΈλœ ꡬ쑰
```
TestTime-RLVR-v2/absolute_zero_reasoner/testtime/
β”œβ”€β”€ __init__.py # βœ… IPO, Task μΆ”κ°€
β”œβ”€β”€ config.py # βœ… μ™„λ£Œ
β”œβ”€β”€ benchmark_loader.py # βœ… μ™„λ£Œ
β”œβ”€β”€ solution_generator.py # βœ… μ™„λ£Œ
β”œβ”€β”€ ipo_extractor.py # πŸ†• IPO μΆ”μΆœ μ‹œμŠ€ν…œ
β”œβ”€β”€ task_generator.py # πŸ†• 3μ’… νƒœμŠ€ν¬ 생성
└── logger.py # βœ… μ™„λ£Œ
```
## πŸ“ λ‘œκΉ… μ‹œμŠ€ν…œ ν™œμš©
### μš”κ΅¬μ‚¬ν•­ μ€€μˆ˜ 확인
- βœ… **μš”κ΅¬μ‚¬ν•­ 2**: IPO μΆ”μΆœ + νƒœμŠ€ν¬ 생성 둜그 기둝
- βœ… **κ΅¬μ‘°ν™”λœ 둜그**: JSON ν˜•νƒœλ‘œ `/tmp/azr/logs/` μ €μž₯
- βœ… **μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§**: μΆ”μΆœ/생성 κ³Όμ • 단계별 좔적
### 둜그 μΉ΄ν…Œκ³ λ¦¬
```
logs/
β”œβ”€β”€ ipo_extraction/ # IPO μΆ”μΆœ 상세 둜그
β”œβ”€β”€ task_generation/ # νƒœμŠ€ν¬ 생성 둜그
β”œβ”€β”€ problems/ # λ¬Έμ œλ³„ 처리 둜그
└── training/ # ν–₯ν›„ ν•™μŠ΅ 둜그용
```
## 🎯 λ‹€μŒ 단계 (Phase 4)
Phase 4μ—μ„œ κ΅¬ν˜„ν•  **RLVR ν•™μŠ΅ μ‹œμŠ€ν…œ**:
1. **TestTimeRewardManager** - AZR reward_managers.py 기반
2. **TestTimeRLVRTrainer** - AZR PPO/REINFORCE++ ν™œμš©
3. **μ„±λŠ₯ 평가 μ‹œμŠ€ν…œ** - 반볡 ν•™μŠ΅ 효과 μΈ‘μ •
### AZR μ»΄ν¬λ„ŒνŠΈ ν™œμš© κ³„νš
- `rewards/reward_managers.py` - r_solve ν•¨μˆ˜ ν™œμš©
- `trainer/ppo/reason_rl_ray_trainer.py` - PPO ν•™μŠ΅ 둜직
- veRL ν”„λ ˆμž„μ›Œν¬ 톡합
---
**생성 μΌμ‹œ**: 2025-07-16
**μƒνƒœ**: βœ… μ™„λ£Œ
**ν…ŒμŠ€νŠΈ**: βœ… 톡과 (3/3)
**핡심 μ„±κ³Ό**: AZR Python Executor 성곡적 연동, μ™„μ „ν•œ IPO νŒŒμ΄ν”„λΌμΈ ꡬ좕