M8-025M8: ML Systems, Engineering & ResearchTraining Platforms & Experiment TrackingEasy
Mastery:
Training Platforms & Experiment Tracking: 解释实验管理需要记录哪些信息。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 代码版本、数据版本、超参、环境、随机种子、指标曲线、产物;目标是'可复现 + 可对比 + 可追溯'。
📌 Key Takeaways
- •代码版本(commit)、数据版本(快照)、超参配置
- •环境(依赖/镜像)、随机种子、硬件配置
- •指标曲线(实时)、产物(checkpoint/日志)、元数据(谁/何时/为什么)
📐 Mathematical Derivations
数学机理:<strong>实验管理需要记录的信息</strong>——(1) <strong>代码</strong>——(a) <strong>commit hash</strong>(精确的代码版本);(b) <strong>分支/标签</strong>;(c) <strong>未提交的改动</strong>(若用 <code>git diff</code> 也应记录——否则复现不出)。<strong>关键</strong>——只记分支名不够(分支会变);必须记 commit hash。(2) <strong>数据</strong>——(a) <strong>数据集版本/快照</strong>(见数据版本管理);(b) <strong>数据路径</strong>(若用快照则路径稳定);(c) <strong>预处理配置</strong>(切分/增强/过滤的配置);(d) <strong>数据统计</strong>(样本数/分布——便于对比)。(3) <strong>配置(config)</strong>——(a) <strong>超参</strong>(学习率/批大小/层数/优化器/调度);(b) <strong>训练配置</strong>(epoch/步数/精度);(c) <strong>模型配置</strong>(架构/初始化);(d) <strong>建议</strong>——用'配置文件 + 版本控制'(而非命令行参数散落)。(4) <strong>环境</strong>——(a) <strong>依赖版本</strong>(requirements/lock 文件);(b) <strong>容器镜像</strong>(Docker digest——最可靠);(c) <strong>CUDA/cuDNN/驱动版本</strong>;(d) <strong>硬件</strong>(GPU 型号/数量——影响数值与性能)。(5) <strong>随机种子</strong>——(a) <strong>所有随机源</strong>(Python/NumPy/PyTorch/数据加载/增强/dropout);(b) <strong>为什么重要</strong>——(i) 不同种子的结果<strong>方差可达 1%~2%</strong>(对比方法时必须多种子);(ii) 复现需要同种子。(6) <strong>指标(metrics)</strong>——(a) <strong>实时曲线</strong>(loss/准确率/学习率/梯度范数);(b) <strong>最终指标</strong>;(c) <strong>中间评估</strong>(验证集);(d) <strong>对比视图</strong>(多实验对比)。(7) <strong>产物(artifacts)</strong>——(a) <strong>checkpoint</strong>(模型权重);(b) <strong>日志</strong>(完整日志);(c) <strong>可视化</strong>(图表/样本);(d) <strong>模型卡</strong>(见治理题)。(8) <strong>元数据</strong>——(a) <strong>谁/何时</strong>(负责人/时间);(b) <strong>为什么</strong>(假设/目的);(c) <strong>结论</strong>(结果与解读);(d) <strong>标签</strong>(便于检索)。<strong>目标</strong>——(a) <strong>可复现</strong>(一键复现);(b) <strong>可对比</strong>(多实验对比视图);(c) <strong>可追溯</strong>(找到'为什么做这个实验')。<strong>工具</strong>——(a) <strong>MLflow</strong>(实验跟踪 + 模型注册);(b) <strong>Weights & Biases</strong>(可视化强);(c) <strong>TensorBoard</strong>(基础);(d) <strong>DVC</strong>(数据/模型版本);(e) <strong>自建</strong>(大厂常自建)。<strong>与其他问题的关系</strong>——(a) 与'模型版本与产物管理'(下一题);(b) 与'可复现性'(依赖与环境);(c) 与'实验设计与消融'(多种子)。<strong>实践建议</strong>——(a) <strong>记录 commit hash</strong>(而非分支);(b) <strong>数据快照</strong>(而非路径);(c) <strong>容器镜像 digest</strong>(最可靠的环境);(d) <strong>记录所有随机源</strong>;(e) <strong>配置文件版本化</strong>;(f) <strong>元数据(为什么)</strong>——最易被忽略但最有价值。<strong>度量</strong>——(a) 复现成功率;(b) 实验的元数据完整度;(c) 对比分析的效率。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'记录 commit hash 而非分支名'</strong>——分支会变;面试中能指出是深度理解的标志。② <strong>'容器镜像 digest'是最可靠的环境记录</strong>——比 requirements 更可靠。③ <strong>'记录所有随机源'</strong>——种子方差可达 1%~2%;故对比方法需多种子。④ <strong>'元数据(为什么做这个实验)'最易被忽略但最有价值</strong>——几个月后'为什么'比'怎么做'更重要。⑤ <strong>'数据快照而非路径'</strong>——路径内容会变。⑥ <strong>面试要点</strong>——被问'实验要记录什么',应给出'<strong>代码(commit)/数据(快照)/配置/环境(镜像 digest)/种子/指标/产物/元数据(谁/何时/为什么)</strong>'与'<strong>可复现+可对比+可追溯</strong>';能指出'记录 commit 而非分支'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕只记录分支名(分支会变)
- ✕不记录随机种子(无法复现)
🎯 Interviewer Follow-ups
- ?为什么'随机种子'也要记录?
- ?如何做到'一键复现'?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.