想象你是一位厨师,发明了一道革命性的新菜谱,这道菜能帮助科学家理解宇宙。你将菜谱记录在一本非常具体、复杂的笔记本中,只有你当前的厨房员工(特定软件版本)才能读懂。
现在,想象在 10 年或 20 年后,厨房发生了变化。员工离开了,软件更新了,那本特定的笔记本变成了无法解读的乱码。如果其他人想烹饪这道菜以验证你的结果,他们却无法做到。他们失去了菜谱。
这就是高能物理(HEP)领域的科学家在**机器学习(ML)**方面面临的问题。他们使用复杂的“菜谱”(算法)来分析粒子对撞机的数据。长期以来,这些菜谱只是内部工具。但现在,这些菜谱本身就是结果。如果这些菜谱在未来无法被读取,科学就无法得到验证。
于是,petrifyML应运而生。
什么是 petrifyML?
将petrifyML想象成一台神奇的翻译器和时间胶囊机器。它的工作是将那些复杂、脆弱且特定于软件的菜谱转化为两样东西:
- 一种通用语言(ONNX):这就像将你的菜谱翻译成一种格式,让世界上过去、现在和未来的所有厨房都同意理解它。它是机器学习世界的"PDF"。
- 纯文本(原生代码):它还可以将菜谱重写为简单、人类可读的指令(C++ 或 Python 代码),无需任何特殊软件即可运行。这就像将菜谱写在一张纸上,即使没有电脑,任何人都能读懂。
它是如何工作的?
该论文指出,科学家目前使用不同的“厨房工具”(如 TMVA、scikit-learn、lwtnn 等软件包)来训练他们的模型。这些工具往往使用不同的方言,或者依赖沉重、复杂的设备,而这些设备未来可能会消失。
petrifyML充当了一座桥梁:
- 翻译器:它将用这些特定工具之一训练的模型转换为通用的ONNX格式。这确保了即使原始工具消失,模型仍然可以使用标准的现代工具来“烹饪”(运行)。
- 抄写员:对于更简单的模型(如提升决策树),它不仅仅是翻译,而是将整个逻辑重写为纯文本代码。这就像将一块复杂的机械手表拆解,并在纸上画出每一个齿轮和发条。你不再需要那块手表;你只需要图纸就能重新建造它。这保证了模型永远以完全相同的方式工作,而无需任何特定的软件更新。
为什么这很重要?
该论文强调了几个关键优势:
- 不再有“在我的机器上能运行”:通常,如果你尝试在新计算机上运行旧模型,它会因为软件版本不匹配而失效。petrifyML消除了这种依赖。
- 面向未来通过将模型转换为ONNX或纯代码,科学家确保他们的工作在几十年后仍可被重新解读。这就像将文件保存在不会腐烂的无酸纸或通用数字标准上,而不是保存在可能会损坏的软盘上。
- 高效性:该论文测试了这一工具,发现它运行速度快且占用计算机内存少。转换后的文件通常比原始文件更小,便于存储和共享。
“验证”检查
作者谨慎地指出:“仅仅给你翻译后的菜谱是不够的;我们需要确保它的味道相同。”
因此,petrifyML包含一个内置的“口味测试”。当它转换模型时,会自动生成一个脚本,运行新版本并与旧版本进行比较,以确保它们产生完全相同的结果。即使存在微小的差异,用户也能知道出了问题。
总结
petrifyML是一款旨在拯救粒子物理学“菜谱”免于被时间遗忘的工具。它将复杂、依赖软件的机器学习模型转化为通用标准格式或简单、人类可读的代码。这确保了今天取得的科学发现,无论当时的技术如何,都能被 50 年后的科学家检查、理解并信任。
技术摘要:利用 petrifyML 实现高能物理中机器学习算法的稳定保存
问题陈述
高能物理(HEP)中的机器学习(ML)已从用于校准和重建的内部工具,演变为物理数据分析的核心非参数组件。虽然这一转变增强了对新物理模型的灵敏度,但也给科学可重复性带来了重大挑战。当前的机器学习算法通常使用基于 Python 的工具(如 TMVA、scikit-learn、lwtnn)进行训练和部署,这些工具存在版本不稳定、依赖繁重(特别是 ROOT 框架)以及格式不兼容等问题。
现有的保存策略存在局限性:
- Pickle/Joblib 文件:高度依赖特定版本且随时间推移不稳定;若无完整的容器化方案,不适合长期保存。
- ONNX 格式:尽管是行业标准,但许多 HEP 专用工具(TMVA、lwtnn、MVAUtils)并不原生支持转换为 ONNX。此外,若无繁琐的容器化方案,ONNX 执行环境的长期稳定性无法得到保证。
- 原生代码:转换为人类可读的 C++ 或 Python 代码可消除依赖,但通常受限于文件大小,仅适用于小型模型。
在将 HEP 专用机器学习配置转换为稳定、无依赖或行业标准的格式的“算法保存链条”中,存在关键缺口。
方法论
作者提出了petrifyML,这是一个 Python 包和命令行工具集,旨在填补上述缺口。该工具可将来自常见 HEP 框架的机器学习配置转换为 ONNX 格式或原生 C++/Python 代码。
该包采用模块化设计,依赖项通过 pip 根据具体转换任务安装:
- 提升决策树(BDTs):
- scikit-learn:将
.pkl 或 .job 文件转换为原生 C++ 和 Python 代码。
- TMVA:将 XML 文件(此转换不直接支持 ROOT 文件)转换为原生 C++ 和 Python 代码。
- MVAUtils:将基于 ROOT 的 MVAUtils 文件(源自 xgboost 或 lgbm)转换为 ONNX。此过程利用
uproot 库解析文件,无需安装完整的 ROOT 环境。
- 神经网络(NNs):
- TMVA(多层感知机 MLPs):读取 TMVA XML 文件,在 TensorFlow/Keras 中重建架构和权重,并使用
tf2onnx 导出为 ONNX。
- lwtnn:将
lightweightneuralnetwork JSON 文件(用于 ATLAS 触发器)转换为 ONNX。目前支持部分层类型(Dense、Normalization、Softmax)和激活函数(Relu、Sigmoid、Elu、Tanh)。
关键特性与验证
- 元数据保留:petrifyML 试图保留训练设置和归一化参数,但受限于输入/输出格式的能力。
- 验证脚本:该工具可选择生成验证脚本,使用随机生成的输入(按模型的截断值统计量进行缩放)来比较转换后模型的输出与原始实现的输出。
- 版本控制:对于 ONNX 转换,用户可以指定
--opset 和 --ir-version,以确保与特定 OnnxRuntime 版本的兼容性,从而解决 ONNX 标准快速演变可能带来的问题。
- 原生代码生成:对于 BDTs,该工具生成人类可读的 C++ 或 Python 代码,无需依赖,确保小型模型“永久保持逐字性能”。
结果与基准测试
作者在包含 1,230 个模型(包括 lwtnn、MVAUtils、scikit-learn 和 TMVA 模型)的套件上,使用 Intel Core i7-14700 CPU 对 petrifyML 进行了基准测试。
转换性能:
- 内存使用:lwtnn/ONNX 转换仅需几 MB,而大型 MVAUtils xgboost 森林(125,000 棵树)的转换约需 3.5 GB。大多数转换所需的内存少于 200 MB。
- 时间:转换时间差异显著。lwtnn 转 ONNX 约需 0.04 秒,而大型 MVAUtils xgboost 森林可能需要超过 4 分钟。由于缓存了模块导入,同一环境下的连续转换速度会显著加快。
- 文件大小:转换后的文件通常紧凑。ONNX 文件比原始文件小高达 80%(高度优化的 MVAUtils 文件除外,其大小可能增加 3 倍)。TMVA BDT 的原生 C++/Python 文件行数在 5,000 到 41,000 行之间,但比原始 XML 格式更节省空间。
推理性能:
- 准确性:与原始模型相比,转换后的 ONNX 模型显示出小于 10−6 的相对输出误差。原生代码转换则完全一致。
- 内存:推理通常需要的内存少于 100 MB。原生 C++ BDT 的内存效率显著高于 Python 或原始实现。
- 速度:推理时间通常很短(<0.1 秒)。BDT 的原生 C++ 推理往往比原始模型更快,而 Python 推理则较慢。考虑到所有方法的绝对速度,相对速度差异被视为可忽略不计。
意义与主张
该论文将 petrifyML 定位为:当所有信息可用时,它并非原生导出方法的替代品,而是针对无法进行原生导出或原始训练环境已丢失的情况,提供必要的保存解决方案。
- 可重复性:通过将 HEP 机器学习算法转换为对特定工具包版本或重型 ROOT 框架依赖较少的格式(ONNX 或原生代码),该工具实现了 HEP 机器学习算法的长期保存。
- 可访问性:通过将 HEP 专用格式(如 lwtnn JSON 或 TMVA XML)转换为 ONNX,该工具使得这些模型能够在 Python 中以及在不支持原始 HEP 专用库的重新解释框架(如 Rivet、CheckMATE2)中使用。
- 实用性:作者声称,该工具成功解决了许多重新解释工具面临的"ROOT 依赖这一不可逾越的问题”,并为保存大型 BDT 森林提供了轻量级替代方案,而这些森林若以纯文本代码形式存储将不切实际。
论文结论指出,petrifyML 是迈向“莱赫什关于可重新解释机器学习的指南”的务实一步,提供了一种机制,确保基于机器学习的实验研究在长期内保持可解释性和可重复性。
每周获取最佳 high-energy experiments 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。