Docker图像与singularity中导入的同一图像之间的不同行为

Docker图像与singularity中导入的同一图像之间的不同行为,r,docker,stan,reproducible-research,singularity-container,R,Docker,Stan,Reproducible Research,Singularity Container,我最近开始使用Docker来确保我研究的计算再现性。由于我所在机构的HPC服务仅支持singularity,因此当我使用HPC执行部分分析时,我希望在singularity中导入Docker图像。然而,当我这样做时,我发现基于原始Docker图像的结果与基于singularity中导入的Docker图像的结果不同 下面是我直接基于Docker图像构建的简单贝叶斯回归模型。这是在本地运行的,也在AWS的一个实例上运行,结果是相同的输出(如预期的那样) docker pull akiramuraka

我最近开始使用Docker来确保我研究的计算再现性。由于我所在机构的HPC服务仅支持singularity,因此当我使用HPC执行部分分析时,我希望在singularity中导入Docker图像。然而,当我这样做时,我发现基于原始Docker图像的结果与基于singularity中导入的Docker图像的结果不同

下面是我直接基于Docker图像构建的简单贝叶斯回归模型。这是在本地运行的,也在AWS的一个实例上运行,结果是相同的输出(如预期的那样)

docker pull akiramurakami/gram mor:v1.0
docker run-it akiramurakami/gram-mor:v1.0 bash

Rscript-e'库(“brms”);图书馆(“tidyverse”);结实。种子(1);我只能猜测,但是。。。它有很多依赖性,它们很可能会根据操作环境(包括CPU/内核及其多线程容量)更改一些性能假设。那么,我的本地计算机(OS X)和AWS(RHEL)的实例之间的结果是否也会有所不同呢?我在这两个环境中使用相同的Docker图像得到了相同的结果,这让我怀疑观察到的差异是由于Docker和singularity之间的差异造成的。我对集装箱运输还不熟悉,所以可能是错的。我不知道,但你们并没有讨论过两者的不同资源。例如,有多少CPU和线程?多少公羊?我不能马上列出它们,但我知道一些启发式方法(特别是在优化中,但也有其他方法)会根据不同的资源做出不同的启发式决策。例如,如果你有无数个线程,那么启发式可能会建议对某个线程进行蛮力尝试,而对于1-2个线程,可能会使用一些更保守的方法。此外,我对
奇点
一无所知,所以我只是抛开猜测,对不起,我没有更深刻的见解。我可以复制你的问题,但我不知道为什么会发生。设置种子可以使单个结果在其容器类型中重复,但两者之间仍然存在微小差异。我的猜测是,stan的采样处理方式有点不同(singularity在第一次采样后的采样运行通常比docker的要快)。我建议在斯坦问题上提出这个问题,看看他们是否有更多的见解。