summaryrefslogtreecommitdiff
path: root/TEST_GUIDE.md
diff options
context:
space:
mode:
authorblackhao <13851610112@163.com>2025-06-25 23:53:15 -0700
committerblackhao <13851610112@163.com>2025-06-25 23:53:15 -0700
commit0a8f3fb353d1b95cdef5bf1f0baa666b6f590ab0 (patch)
tree1a08db7c740ebca82b4b66c876506de761f43276 /TEST_GUIDE.md
parentb2d2d05021de3aba1257fdeb69088a82c65a457f (diff)
gee init
Diffstat (limited to 'TEST_GUIDE.md')
-rw-r--r--TEST_GUIDE.md211
1 files changed, 211 insertions, 0 deletions
diff --git a/TEST_GUIDE.md b/TEST_GUIDE.md
new file mode 100644
index 0000000..8f678f3
--- /dev/null
+++ b/TEST_GUIDE.md
@@ -0,0 +1,211 @@
+# One-shot GEE 测试流程指南
+
+## 环境准备 ✓
+
+### 1. 创建conda环境
+```bash
+conda create -n one-shot-gee python=3.10 -y
+conda activate one-shot-gee
+```
+
+### 2. 安装依赖
+```bash
+# 基础依赖已安装
+pip install pandas numpy matplotlib seaborn transformers accelerate
+```
+
+## 测试阶段
+
+### 阶段1: 组件功能测试 ✓
+
+运行基础组件测试:
+```bash
+conda activate one-shot-gee
+python test_gee_components.py
+```
+
+**测试结果:**
+- ✅ GEE数据处理器测试通过
+ - 性别检测功能正常
+ - 测试数据生成正常
+- ✅ GEE损失函数测试通过
+ - Token熵计算正常
+ - 组熵计算正常
+ - L2和L1损失函数正常
+- ⚠️ GEE评估器测试跳过(需要实际模型)
+- ✅ 组件集成测试通过
+
+### 阶段2: 训练功能测试
+
+#### 2.1 快速训练测试(使用合成数据)
+
+```bash
+conda activate one-shot-gee
+
+# 测试训练脚本(使用合成数据,无需真实模型)
+python train_gee.py \
+ --use_test_data \
+ --effective_batch 8 \
+ --micro_batch_size 2 \
+ --max_steps 3 \
+ --lambda_weight 3.0 \
+ --log_steps 1 \
+ --run_name quick_test \
+ --model_name test_model \
+ --model_path dummy_path
+```
+
+#### 2.2 真实数据测试(需要实际模型)
+
+如果您有Qwen2.5-Math-7B模型:
+
+1. **修改模型路径**:
+```bash
+vim scripts/train_one_shot_gee.sh
+# 修改MODEL_PATH为您的实际模型路径
+```
+
+2. **运行完整训练**:
+```bash
+bash scripts/train_one_shot_gee.sh
+```
+
+### 阶段3: 评估功能测试
+
+#### 3.1 无模型评估测试
+```bash
+# 测试评估器的数据生成功能
+python -c "
+import sys
+sys.path.append('.')
+from evaluation.gee_evaluator import GEEEvaluator
+
+# 只测试数据生成,不加载模型
+class MockEvaluator:
+ def create_winogender_style_data(self, num_samples=10):
+ from evaluation.gee_evaluator import GEEEvaluator
+ evaluator = GEEEvaluator.__new__(GEEEvaluator)
+ return evaluator.create_winogender_style_data(num_samples)
+
+evaluator = MockEvaluator()
+test_data = evaluator.create_winogender_style_data(20)
+print(f'生成测试数据: {len(test_data)} 条')
+for i, item in enumerate(test_data[:3]):
+ print(f'样本 {i+1}: {item[\"gender\"]} - {item[\"prompt\"]}')
+"
+```
+
+#### 3.2 完整评估测试(需要训练后的模型)
+```bash
+# 确保已有训练完成的模型后运行
+bash scripts/evaluate_gee.sh
+```
+
+## 效果验证指标
+
+### 核心指标
+
+1. **熵差距减少** (`entropy_gap`)
+ - 目标:相比基线模型减少70-80%
+ - 计算:`|H_female - H_male|`
+
+2. **训练稳定性**
+ - 损失函数收敛
+ - 梯度不爆炸/消失
+
+3. **性能保持**
+ - 数学推理能力不显著退化
+ - 生成质量保持
+
+### 监控指标
+
+训练过程中关注的指标:
+```
+Step X | loss=6.4005 | entropy_gap=0.0161 | H_male=6.3921 | H_female=6.4082
+```
+
+- `loss`: 总损失(熵最小化损失 + GEE惩罚损失)
+- `entropy_gap`: 男女组间熵差距(越小越好)
+- `H_male/H_female`: 各组平均熵
+
+## 问题排查
+
+### 常见错误及解决方案
+
+1. **模块导入错误**
+ ```bash
+ # 确保在正确的conda环境中
+ conda activate one-shot-gee
+ # 确保在项目根目录
+ cd /path/to/one-shot-em
+ ```
+
+2. **CUDA相关错误**
+ ```bash
+ # 如果没有GPU,确保使用CPU版本的PyTorch
+ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
+ ```
+
+3. **数据路径错误**
+ ```bash
+ # 检查数据文件是否存在
+ ls -la dataset/1shot_rlvr/pi1_r1280.parquet
+ ```
+
+4. **模型路径错误**
+ ```bash
+ # 修改脚本中的模型路径
+ vim scripts/train_one_shot_gee.sh
+ ```
+
+## 下一步操作
+
+### 已完成 ✅
+- [x] 创建conda环境
+- [x] 安装基础依赖
+- [x] 组件功能测试
+- [x] 核心功能验证
+
+### 待完成 📋
+- [ ] 获取或下载Qwen2.5-Math-7B模型
+- [ ] 运行真实数据训练测试
+- [ ] 完整的偏见评估测试
+- [ ] 性能基准测试
+
+### 推荐测试顺序
+
+1. **立即可做**:
+ ```bash
+ # 测试训练脚本逻辑(使用合成数据)
+ conda activate one-shot-gee
+ python train_gee.py --use_test_data --max_steps 3
+ ```
+
+2. **获得模型后**:
+ ```bash
+ # 小规模真实训练
+ bash scripts/train_one_shot_gee.sh
+ ```
+
+3. **训练完成后**:
+ ```bash
+ # 评估偏见减少效果
+ bash scripts/evaluate_gee.sh
+ ```
+
+## 成功标准
+
+✅ **基础功能正常**
+- 所有组件测试通过
+- 损失函数计算正确
+- 训练脚本可以运行
+
+🎯 **训练效果良好**
+- entropy_gap在训练过程中逐步减少
+- 总损失稳定收敛
+- 模型生成质量保持
+
+📊 **评估结果理想**
+- 相比基线模型,熵差距减少70%+
+- 数学推理性能退化<1%
+- 生成文本质量无明显下降 \ No newline at end of file