news 2026/7/6 5:05:32

训练复现实验:随机种子固定只是第一步

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
训练复现实验:随机种子固定只是第一步

训练复现实验:随机种子固定只是第一步

一、复现不是跑出差不多

机器学习实验经常说“结果可复现”,但很多时候只是固定了随机种子。真正复现需要代码、数据、环境、参数、硬件、依赖版本和评测脚本都可追踪。否则今天的结果,过两周可能没人能解释。

随机种子固定只是第一步,不是复现实验的全部。

二、先保存实验元数据

flowchart TD A[实验运行] --> B[代码版本] A --> C[数据版本] A --> D[参数配置] A --> E[环境依赖] A --> F[指标结果]

每次实验都应该记录这些信息。缺任何一项,复现都会变成猜。

experiment_metadata: git_commit: required dataset_version: required config_hash: required docker_image: required seed: required

配置也要 hash。否则参数文件被改了,实验记录却看不出来。

三、随机性来源很多

import random import numpy as np import torch random.seed(42) np.random.seed(42) torch.manual_seed(42) torch.cuda.manual_seed_all(42)

除了 Python、NumPy、PyTorch,还要考虑 DataLoader worker、CUDA 算子、分布式训练顺序。某些操作天然非确定,强行 deterministic 可能降低性能。

复现实验要说明使用了哪些确定性设置,以及是否允许小范围波动。

四、数据版本要锁住

数据集如果每天更新,固定代码也复现不了。训练集、验证集、测试集都要有版本。预处理脚本也要版本化,因为同一份原始数据经过不同清洗规则会变成不同训练数据。

dataset_manifest: raw_data_hash: sha256:xxx preprocess_commit: abc123 split_seed: 42 train_size: 100000

最好保存 split 文件,而不是只保存 split seed。因为数据顺序变化后,同一个 seed 也可能切出不同集合。

最后,复现要定期演练。随机挑一个历史实验,从记录里重新跑一遍,确认能得到接近结果。只有演练过,才能知道记录是否足够。

复现还要定义容忍范围。深度学习实验可能因为硬件、并行顺序和非确定算子产生轻微波动。报告里应写明主要指标允许的误差范围,而不是要求逐位相同。

reproduction_tolerance: accuracy_delta: 0.003 loss_delta: 0.01 speed_delta_percent: 5

环境镜像也要保存。只保存 requirements 不够,因为系统库、CUDA、驱动和编译选项都会影响结果。Docker 镜像 digest 或 Conda lock 文件比自由文本说明可靠。

还要记录失败复现。复现失败并不是无效信息,它能暴露记录缺口、依赖漂移或代码不可重复。失败记录应该进入实验系统,而不是被悄悄删掉。

最后,复现任务最好由非原作者执行。原作者脑子里有隐含上下文,外部复现更能检验记录是否完整。

模型产物也要有固定存储位置。checkpoint、tokenizer、配置快照、评测输出和训练日志如果散落在不同机器上,复现时很容易只找到一部分。产物路径应写进实验记录,并且带上不可变版本号。

artifact_bundle: checkpoint: required tokenizer: required config_snapshot: required eval_outputs: required immutable_uri: true

复现状态可以分级标记。例如exact表示指标在容忍范围内且日志一致,close表示主指标接近但速度或次要指标有差异,failed表示无法得到可比较结果。状态明确后,团队才知道哪些实验可以引用,哪些只能作为线索。

五、总结

训练复现实验要记录代码、数据、配置、环境、随机性来源和评测脚本,并定期演练历史实验。

随机种子固定只是第一步。复现能力来自完整证据链。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 5:05:09

别再让 AI 瞎猜了!我用这套“拉片流”逼 Codex 剪出高质感视频

上周帮一个做知识 IP 的朋友看他用 Codex 自动生成的口播视频。他说他给 AI 选了“爆款模仿”模板,结果出来的成片,怎么说呢?背景音乐大得像在迪厅,花字红绿相间,还正好挡在下巴上,说话中间的停顿被剪得一干…

作者头像 李华
网站建设 2026/7/6 5:05:04

终极指南:foo2zjs如何解决Linux下多品牌打印机兼容性难题

终极指南:foo2zjs如何解决Linux下多品牌打印机兼容性难题 【免费下载链接】foo2zjs A linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/ 项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs 还在为Linux系统中打印机驱动兼容…

作者头像 李华
网站建设 2026/7/6 5:01:17

Altair声明式可视化:用数据语义驱动交互图表

1. 为什么我坚持用 Altair 做数据可视化——一个从业十年的数据工程师的真心话在数据科学这条路上摸爬滚打十多年,我经手过上千个分析项目,从银行风控模型到电商用户行为挖掘,再到工业设备预测性维护。见过太多人把时间耗在“怎么让图看起来不…

作者头像 李华
网站建设 2026/7/6 4:59:21

GetQzonehistory:三步实现QQ空间历史说说完整导出的Python工具

GetQzonehistory:三步实现QQ空间历史说说完整导出的Python工具 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字记忆日益重要的今天,QQ空间承载了无数人的青…

作者头像 李华
网站建设 2026/7/6 4:57:45

真人实测:这五个配音网站让我彻底告别“机器腔”,从免费白嫖到百万字生产力,组合方案直接抄

先交代背景:我做视频三年,配音这块踩过无数坑。机器人声僵硬、付费太贵、额度不够用,各种问题都遇到过。最近花了两周时间,把圈子里讨论度最高的五个文字转语音网站挨个深度测了一遍。不扯官方宣传语,全是我坐在电脑前…

作者头像 李华
网站建设 2026/7/6 4:56:03

RAG 引用校验:答案写得顺,不代表证据站得住

RAG 引用校验:答案写得顺,不代表证据站得住 一、RAG 的可信度来自引用 RAG 系统常见问题不是答案错,而是答案看起来很有道理但其实没有证据支持。模型可能从多个 chunk 拼出一段流畅的结论,也可能把相似但过期的旧信息当作当前事…

作者头像 李华