AI 数据实验怎么记录运行环境?保存依赖版本、输入文件和脚本哈希

AI 数据实验得到一个结果后,要能确认使用的是哪份输入、哪段代码和哪些依赖。下面保存一个本地运行记录:依赖版本、Python 版本、输入文件哈希和脚本哈希。它帮助你识别环境变化,但不保证模型结果必然完全可重复。

AI 数据实验得到一个结果后,要能确认使用的是哪份输入、哪段代码和哪些依赖。下面保存一个本地运行记录:依赖版本、Python 版本、输入文件哈希和脚本哈希。它帮助你识别环境变化,但不保证模型结果必然完全可重复。

环境与运行方法

本文代码在 Windows、Python 3.11 的本地独立环境执行通过。以下数据全部为人为构造的教学样本,不是客户数据,也不是业务效果测试。

AI 数据实验怎么记录运行环境?保存依赖版本、输入文件和脚本哈希

新建一个空目录,在终端执行安装命令,把后面的完整代码保存为 demo.py,再执行 python demo.py。文件输出均保存在运行目录,请先在空目录练习。

python -m pip install numpy==2.4.6 pandas==3.0.6 scikit-learn==1.9.1

把数据、脚本和依赖放在同一份记录里

示例在当前练习目录创建一份两行数据,再计算 SHA-256。每次重跑相同字节的文件,哈希应一致;只改一字节也会改变内容指纹。记录 Python 版本、系统和 numpy、pandas、scikit-learn 的已安装版本,用于核对基础环境。

这张清单只记录所列包,不等于完整依赖锁文件。正式实验还应保存模型文件版本、随机种子、完整依赖和运行参数,若使用 GPU 则记录驱动及相关运行库。可用相同环境描述重建后再检查预测输出。

先验证指纹,再讨论结果复现

读取文件用 bytes 模式,不把编码转换或换行标准化隐藏在哈希函数中。输入文件和脚本路径分别记录,避免把一份输入的指纹误当成整个实验的指纹。

代码会给原字节附加一个换行并计算另一个哈希,只在内存中比较,不改输入文件。第二次运行脚本时可把新旧 JSON 中的输入和脚本哈希逐项比对;如果任一不同,应先解释变更,不把结果差异归因于模型本身。

可复制的完整代码

import hashlib, json, platform
from pathlib import Path
from importlib.metadata import version
data = Path("environment_toy.csv")
data.write_text("id,value\n1,10\n2,20\n", encoding="utf8")
def digest(path):
    return hashlib.sha256(path.read_bytes()).hexdigest()
record = {"python": platform.python_version(), "system": platform.system(),
          "packages": {name: version(name) for name in ["numpy", "pandas", "scikit-learn"]},
          "input": {"path": str(data), "sha256": digest(data)},
          "script": {"path": Path(__file__).name, "sha256": digest(Path(__file__))}}
assert digest(data) == record["input"]["sha256"]
modified = hashlib.sha256(data.read_bytes() + b"\n").hexdigest()
assert modified != record["input"]["sha256"]
Path("run_environment.json").write_text(json.dumps(record, ensure_ascii=False, indent=2), encoding="utf8")
print("packages", record["packages"])
print("same_bytes_same_hash", True)
print("changed_bytes_different_hash", True)
print("saved run_environment.json")

运行结果与核对方法

下面是本文教学代码在上述本地环境中的实际输出。浮点数末位可能随依赖版本变化。

packages {'numpy': '2.4.6', 'pandas': '3.0.6', 'scikit-learn': '1.9.1'}
same_bytes_same_hash True
changed_bytes_different_hash True
saved run_environment.json

打开 run_environment.json,核对 packages、input.sha256 和 script.sha256 都有值。保存这份记录后再次运行并比较两项指纹;输入和脚本都相同时,再比较依赖版本与模型输出,定位变化发生在哪个环节。

使用边界与常见问题

示例只为本地教学数据保存环境记录,没有训练业务模型,也未锁定所有间接依赖或 GPU 环境。相同文件指纹不能证明算法确定性;仍要控制随机性并验证实际输出。

只保存 pip freeze 就够吗?

依赖清单没有数据、模型与脚本的内容指纹,也没有随机种子和运行参数。它可作为环境记录的一部分,不能替代完整的实验材料。

官方资料

接口与参数依据以下官方资料核对(2026年10月1日)。示例验证只覆盖本文输入和步骤。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30261.html

赞 (0)
AI小管家的头像AI小管家
发给 AI 的表格怎么脱敏?在本地删除标识列并遮盖联系方式
上一篇 1天前
Milvus Lite 怎么接入智能体?先用 Python 跑通本地向量检索
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部