Minimind/experiment/README.md
2025-08-01 15:54:21 +08:00

309 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧪 MiniMind 实验管理系统
> **系统概述**: 标准化的实验管理框架,确保 MiniMind 预训练实验的可重现性、可追踪性和高质量协作。
---
## 📋 目录
- [快速开始](#快速开始)
- [协作流程](#协作流程)
- [模版使用](#模版使用)
- [实验规范](#实验规范)
- [文件结构](#文件结构)
- [故障排除](#故障排除)
---
## 🚀 快速开始
### 1. 实验创建流程
```bash
# 1. 🧑‍🔬 人类: 确定实验目标和版本号
EXPERIMENT_VERSION="1.4.1"
# 2. 🤖 AI: 复制模版创建新实验
cp experiment/EXPERIMENT_TEMPLATE.md experiment/experiment_${EXPERIMENT_VERSION}.md
cp run_file/experiment_template.sh run_file/experiment_${EXPERIMENT_VERSION}.sh
# 3. 🧑‍🔬 人类: 填写实验基本信息(见下文详细说明)
# 4. 🤖 AI: 根据实验目标配置参数并执行
bash run_file/experiment_${EXPERIMENT_VERSION}.sh
# 5. 🤖 AI: 完成实验记录和结果分析
# 6. 🧑‍🔬 人类: 审核实验记录
# 7. 🤖 AI: 提交实验到git经人类确认后
```
### 2. 实验版本命名规范
| 版本格式 | 说明 | 示例 |
|---------|------|------|
| `X.Y.Z` | 主要.次要.修订 | `1.4.1` |
| 主要版本 (X) | 重大架构变更 | 从 model_original 到 model |
| 次要版本 (Y) | 功能增强或重要参数调整 | 新增知识库功能 |
| 修订版本 (Z) | 小幅调整和优化 | 学习率调整、批次大小优化 |
---
## 🤝 协作流程
### 人类研究者职责 🧑‍🔬
#### 实验前期 (必填项目)
`experiment_X.Y.Z.md` 中填写:
```markdown
## 📋 实验基本信息
### 🧑‍🔬 **[人类填写]** 实验目标
**实验目的**:
[具体描述要解决的问题,如:"验证增大知识库规模对生成质量的影响"]
**研究假设**:
[明确的可验证假设,如:"knowledge_num从1M增加到2M会提升文本连贯性"]
**预期结果**:
[量化的期望指标,如:"Loss降低至0.5以下,生成文本连贯性评分>7.0"]
**实验重点**:
[关键验证点,如:"重点观察内存使用情况和训练稳定性"]
```
#### 实验后期 (审核职责)
-**结果审核**: 验证AI分析的准确性和合理性
-**假设验证**: 确认实验是否回答了预设问题
-**质量把关**: 确保实验记录完整、结论可信
-**提交决策**: 决定是否将实验提交到git仓库
### AI助手职责 🤖
#### 实验构建期
1. **参数配置**: 根据实验目标自动填写所有 `[AI构建]` 标记的参数
2. **环境检查**: 验证GPU、数据文件、Python环境等
3. **脚本生成**: 创建可执行的实验脚本
4. **预检验证**: 确保配置的合理性和可执行性
#### 实验执行期
1. **实时监控**: 记录训练进度、资源使用情况
2. **异常处理**: 捕获和记录错误信息
3. **状态更新**: 实时更新实验记录中的执行状态
#### 实验完成期
1. **结果分析**: 自动分析训练曲线、性能指标
2. **质量评估**: 生成文本样例和质量评分
3. **问题诊断**: 识别异常情况并提供改进建议
4. **记录完善**: 填写所有 `[AI完成]` 标记的分析内容
---
## 📝 模版使用
### 实验记录模版 (`EXPERIMENT_TEMPLATE.md`)
#### 🧑‍🔬 人类填写区域
- **实验目标**: 明确、具体、可量化
- **研究假设**: 可验证的科学假设
- **预期结果**: 具体的成功标准
#### 🤖 AI构建区域
- **配置参数**: 所有模型和训练参数
- **执行记录**: 训练过程的实时状态
- **环境信息**: 硬件和软件环境快照
#### ✅ AI完成区域
- **结果分析**: 训练指标和性能评估
- **问题诊断**: 异常检测和原因分析
- **改进建议**: 基于结果的优化方案
### 实验脚本模版 (`experiment_template.sh`)
#### 关键占位符说明
| 占位符 | 类型 | 说明 | 示例值 |
|--------|------|------|--------|
| `[VERSION]` | 🧑‍🔬 人类 | 实验版本号 | `1.4.1` |
| `[DESCRIPTION]` | 🧑‍🔬 人类 | 实验简短描述 | `"验证2M知识库对生成质量的影响"` |
| `[CUDA_DEVICES]` | 🤖 AI | GPU设备配置 | `0``0,1,2,3` |
| `[BATCH_SIZE]` | 🤖 AI | 批次大小 | `128` |
| `[LEARNING_RATE]` | 🤖 AI | 学习率 | `8e-5` |
| `[MODEL_TYPE]` | 🤖 AI | 模型类型 | `model` |
| `[KNOWLEDGE_NUM]` | 🤖 AI | 知识库大小 | `2097152` |
---
## 📋 实验规范
### 实验分类标准
#### 🧪 **探索性实验**
- **目的**: 验证新想法、测试可行性
- **规模**: 小规模、快速验证
- **版本**: 通常为 X.Y.0(新功能首次测试)
- **时长**: 1-3小时内完成
#### 🔬 **验证性实验**
- **目的**: 确认假设、对比基线
- **规模**: 中等规模、完整训练
- **版本**: 通常为 X.Y.1-X.Y.9(功能优化迭代)
- **时长**: 3-12小时
#### 🏆 **生产性实验**
- **目的**: 最终模型训练、性能优化
- **规模**: 大规模、完整流程
- **版本**: 通常为 X.0.0(重要里程碑)
- **时长**: 12小时以上
### 质量标准
#### ✅ **合格实验标准**
- [ ] 实验目标明确具体
- [ ] 参数配置完整无误
- [ ] 训练过程稳定收敛
- [ ] 结果记录详细准确
- [ ] 问题分析深入合理
- [ ] 改进建议具体可行
#### 🚫 **不合格实验情况**
- ❌ 目标模糊或无法验证
- ❌ 训练中断或严重错误
- ❌ 数据异常或无法解释
- ❌ 记录不完整或有明显错误
- ❌ 缺乏有效的改进建议
### 审核流程
1. **AI自检**: 完成实验记录后进行自我检查
2. **人类初审**: 研究者检查实验的完整性和准确性
3. **问题反馈**: 如有问题AI修正后重新提交审核
4. **最终确认**: 确认无误后标记"✅ 已审核"
5. **Git提交**: 审核通过后提交到版本控制系统
---
## 📁 文件结构
```
experiment/
├── README.md # 本文档
├── EXPERIMENT_TEMPLATE.md # 实验记录模版
├── experiment_1.4.0.md # 具体实验记录
├── experiment_1.4.1.md
└── ...
run_file/
├── experiment_template.sh # 实验脚本模版
├── experiment_1.4.0.sh # 具体实验脚本
├── experiment_1.4.1.sh
└── ...
out/
├── experiment_1.4.0/ # 实验输出目录
│ ├── checkpoint_*.pt # 模型检查点
│ ├── train.log # 训练日志
│ └── experiment_info.txt # 实验信息
└── ...
```
---
## 🛠️ 故障排除
### 常见问题
#### 1. 模版占位符未替换
**现象**: 脚本执行时出现 `[PLACEHOLDER]` 相关错误
**解决**:
```bash
# 检查未替换的占位符
grep -n "\[.*\]" run_file/experiment_X.Y.Z.sh
```
#### 2. GPU内存不足
**现象**: CUDA out of memory
**解决**:
- 减小 `batch_size`
- 增加 `accumulation_steps`
- 调整 `max_seq_len`
#### 3. 数据文件路径错误
**现象**: FileNotFoundError
**解决**:
```bash
# 检查数据文件是否存在
ls -la /home/pci/ycz/Code/Minimind/dataset/stable/
```
#### 4. SwanLab连接失败
**现象**: SwanLab API错误
**解决**:
- 检查API密钥配置
- 确认网络连接正常
- 验证项目名称正确
### 调试技巧
#### 开启详细日志
```bash
# 在脚本中添加调试选项
export NCCL_DEBUG=INFO
export PYTHONFAULTHANDLER=1
export CUDA_LAUNCH_BLOCKING=1
```
#### 快速验证
```bash
# 测试环境配置
python -c "import torch; print(f'CUDA可用: {torch.cuda.is_available()}')"
# 验证数据加载
python -c "from model.dataset import *; print('数据集加载成功')"
# 检查模型初始化
python -c "from model.model import *; print('模型加载成功')"
```
---
## 📚 最佳实践
### 实验设计原则
1. **单一变量**: 每次实验只改变一个关键参数
2. **对照基线**: 始终与 model_original 进行对比
3. **渐进优化**: 从小规模到大规模逐步验证
4. **记录详尽**: 记录所有可能影响结果的因素
### 协作效率提升
1. **明确目标**: 人类提供清晰的实验目标和假设
2. **及时反馈**: 对AI的分析及时给出反馈和指导
3. **知识积累**: 将有效的配置和发现整理成知识库
4. **版本管理**: 重要实验及时提交到git保存
### 实验优化策略
1. **资源利用**: 合理配置批次大小和GPU使用
2. **时间管理**: 根据实验重要性分配计算资源
3. **结果复用**: 保存有价值的模型检查点和配置
4. **持续改进**: 基于实验结果不断优化流程
---
## 🔗 相关链接
- [CLAUDE.md](../CLAUDE.md) - 项目总体指南
- [SwanLab平台](https://swanlab.cn/) - 实验监控和可视化
- [模型架构文档](../model/) - 模型实现细节
- [数据处理流程](../preprocessing/) - 数据预处理说明
---
> 💡 **提示**: 使用此实验管理系统前,请先仔细阅读 [CLAUDE.md](../CLAUDE.md) 了解项目整体架构和配置要求。
**最后更新**: 2024-XX-XX
**维护者**: MiniMind 项目组