From 0a8f3fb353d1b95cdef5bf1f0baa666b6f590ab0 Mon Sep 17 00:00:00 2001 From: blackhao <13851610112@163.com> Date: Wed, 25 Jun 2025 23:53:15 -0700 Subject: gee init --- TEST_GUIDE.md | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 TEST_GUIDE.md (limited to 'TEST_GUIDE.md') 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 -- cgit v1.2.3