如何解决Docker映像和以奇异性导入的同一映像之间的不同行为
我最近开始使用Docker来确保研究的计算可重复性。由于我所在机构的HPC服务仅支持奇异性,因此当我使用HPC执行部分分析时,我想以奇异性导入Docker映像。但是,当我这样做时,我发现基于原始Docker映像的结果不同于基于以奇异性导入的Docker映像的结果。
这是我直接基于Docker映像构建简单的贝叶斯回归模型的工作。它在本地运行,也在AWS的实例上运行,从而产生相同的输出(如预期)。
docker pull akiramurakami/gramm-mor:v1.0
docker run -it akiramurakami/gramm-mor:v1.0 bash
Rscript -e 'library("brms"); library("tidyverse"); set.seed(1); d <- tibble(x = rnorm(100),y = 2 * x - 1 + rnorm(100)); m <- brm(y ~ x,data = d,seed = 1); summary(m)'
下面是输出的一部分。
Population-Level Effects:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept -1.04 0.10 -1.23 -0.85 1.00 3812 2469
x 2.00 0.11 1.79 2.21 1.00 4625 3037
这是我使用奇点在HPC上所做的事情。
singularity pull docker://akiramurakami/gramm-mor:v1.0
singularity exec gramm-mor_v1.0.sif Rscript -e 'library("brms"); library("tidyverse"); set.seed(1); d <- tibble(x = rnorm(100),seed = 1); summary(m)'
结果不同(请参见Bulk_ESS
和Tail_ESS
列)。
Population-Level Effects:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept -1.04 0.10 -1.23 -0.84 1.00 3798 2826
x 2.00 0.11 1.78 2.22 1.00 4275 2913
这是为什么,并且有一种方法可以导入和使用奇异的Docker映像,使其产生的结果与基于原始Docker映像的结果相同?
下面是使用的Dockerfile。
FROM rocker/r-ver:3.6.3
LABEL "maintainer"="xxx"
RUN apt-get update -qq && apt-get -y --no-install-recommends install \
file \
git \
libapparmor1 \
libclang-dev \
libcurl4-openssl-dev \
libedit2 \
libssl-dev \
lsb-release \
multiarch-support \
psmisc \
procps \
python-setuptools \
sudo \
wget \
libxml2-dev \
libcairo2-dev \
libsqlite-dev \
libmariadbd-dev \
libmariadbclient-dev \
libpq-dev \
libssh2-1-dev \
unixodbc-dev \
libsasl2-dev \
clang
# https://github.com/stan-dev/rstan/wiki/Installing-RStan-on-Linux
RUN Rscript -e 'dotR <- file.path(Sys.getenv("HOME"),".R"); \
if (!file.exists(dotR)) dir.create(dotR); \
M <- file.path(dotR,"Makevars"); \
if (!file.exists(M)) file.create(M); \
cat("\nCXX14FLAGS=-O3 -march=native -mtune=native -fPIC","CXX14=clang++",file = M,sep = "\n",append = TRUE)'
RUN Rscript -e 'options(repos = list(CRAN = "http://mran.revolutionanalytics.com/snapshot/2020-07-01")); \
install.packages(c("brms","data.table","devtools","snowballC","tidyverse","dplyr"))'
2020年8月29日更新
我已经问过the same question at the Stan Forums,并收到了一些有用的评论(尽管仍然不清楚所涉及差异的确切原因)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。