🧪 MiniMind 实验管理系统
系统概述: 标准化的实验管理框架,确保 MiniMind 预训练实验的可重现性、可追踪性和高质量协作。
📋 目录
🚀 快速开始
1. 实验创建流程
# 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 中填写:
## 📋 实验基本信息
### 🧑🔬 **[人类填写]** 实验目标
**实验目的**:
[具体描述要解决的问题,如:"验证增大知识库规模对生成质量的影响"]
**研究假设**:
[明确的可验证假设,如:"knowledge_num从1M增加到2M会提升文本连贯性"]
**预期结果**:
[量化的期望指标,如:"Loss降低至0.5以下,生成文本连贯性评分>7.0"]
**实验重点**:
[关键验证点,如:"重点观察内存使用情况和训练稳定性"]
实验后期 (审核职责)
- ✅ 结果审核: 验证AI分析的准确性和合理性
- ✅ 假设验证: 确认实验是否回答了预设问题
- ✅ 质量把关: 确保实验记录完整、结论可信
- ✅ 提交决策: 决定是否将实验提交到git仓库
AI助手职责 🤖
实验构建期
- 参数配置: 根据实验目标自动填写所有
[AI构建]标记的参数 - 环境检查: 验证GPU、数据文件、Python环境等
- 脚本生成: 创建可执行的实验脚本
- 预检验证: 确保配置的合理性和可执行性
实验执行期
- 实时监控: 记录训练进度、资源使用情况
- 异常处理: 捕获和记录错误信息
- 状态更新: 实时更新实验记录中的执行状态
实验完成期
- 结果分析: 自动分析训练曲线、性能指标
- 质量评估: 生成文本样例和质量评分
- 问题诊断: 识别异常情况并提供改进建议
- 记录完善: 填写所有
[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小时以上
质量标准
✅ 合格实验标准
- 实验目标明确具体
- 参数配置完整无误
- 训练过程稳定收敛
- 结果记录详细准确
- 问题分析深入合理
- 改进建议具体可行
🚫 不合格实验情况
- ❌ 目标模糊或无法验证
- ❌ 训练中断或严重错误
- ❌ 数据异常或无法解释
- ❌ 记录不完整或有明显错误
- ❌ 缺乏有效的改进建议
审核流程
- AI自检: 完成实验记录后进行自我检查
- 人类初审: 研究者检查实验的完整性和准确性
- 问题反馈: 如有问题,AI修正后重新提交审核
- 最终确认: 确认无误后标记"✅ 已审核"
- 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] 相关错误
解决:
# 检查未替换的占位符
grep -n "\[.*\]" run_file/experiment_X.Y.Z.sh
2. GPU内存不足
现象: CUDA out of memory 解决:
- 减小
batch_size - 增加
accumulation_steps - 调整
max_seq_len
3. 数据文件路径错误
现象: FileNotFoundError 解决:
# 检查数据文件是否存在
ls -la /home/pci/ycz/Code/Minimind/dataset/stable/
4. SwanLab连接失败
现象: SwanLab API错误 解决:
- 检查API密钥配置
- 确认网络连接正常
- 验证项目名称正确
调试技巧
开启详细日志
# 在脚本中添加调试选项
export NCCL_DEBUG=INFO
export PYTHONFAULTHANDLER=1
export CUDA_LAUNCH_BLOCKING=1
快速验证
# 测试环境配置
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('模型加载成功')"
📚 最佳实践
实验设计原则
- 单一变量: 每次实验只改变一个关键参数
- 对照基线: 始终与 model_original 进行对比
- 渐进优化: 从小规模到大规模逐步验证
- 记录详尽: 记录所有可能影响结果的因素
协作效率提升
- 明确目标: 人类提供清晰的实验目标和假设
- 及时反馈: 对AI的分析及时给出反馈和指导
- 知识积累: 将有效的配置和发现整理成知识库
- 版本管理: 重要实验及时提交到git保存
实验优化策略
- 资源利用: 合理配置批次大小和GPU使用
- 时间管理: 根据实验重要性分配计算资源
- 结果复用: 保存有价值的模型检查点和配置
- 持续改进: 基于实验结果不断优化流程
🔗 相关链接
💡 提示: 使用此实验管理系统前,请先仔细阅读 CLAUDE.md 了解项目整体架构和配置要求。
最后更新: 2024-XX-XX
维护者: MiniMind 项目组