问题描述
我正在运行一个线性混合效应模型,该模型的数据集包含约500K个观测值。 我有一个连续的响应(即Y),24个类别变量(即X1,...,X24), 8个连续变量(即Z1,...,Z8)和一个ID变量(即1160级ID),用于指定随机效果。 线性混合模型公式为Y〜X1 + ... + X24 + Z1 + ... + Z8 +(0 + X1 | ID)+ ... +(0 + X24 | ID)
在Windows中,为了适合Julia 0.3中的模型,我使用以下命令使用MixedModels包(版本0.3.22):
- 试穿步骤:
fit1 = lmm(my_formula,my_DATA)
,并且 - 适合的步骤:
fit(fit1)
。
预装配步骤需要〜38秒,装配步骤需要〜14秒;总共52秒
同样,在Windows中,使用MixedModels(版本2.2.0)在Julia 1.2中拟合了该模型:
- 试穿步骤:
fit2 = LinearMixedModel(@formula(my_formula),my_DATA)
,并且 - 适合的步骤:
fit!(fit2)
。
在这种情况下,预拟合步骤大约需要20秒,而拟合步骤大约需要301秒(共321秒)
在同一服务器上设置Linux Docker并将Julia 1.2与MixedModels(版本2.2.0)一起使用时:
- 试穿步骤:
fit3 = LinearMixedModel(@formula(my_formula),my_DATA)
,并且 - 适合的步骤:
fit!(fit3)
。
预拟合步骤需要约21秒,而拟合步骤需要约108秒(总计129秒)。 在这种情况下,如果我考虑将线程数设置为1,则预适配步骤大约需要25秒,而适配步骤大约需要55秒(总共80秒)。
请参见以下摘要结果。请注意,已经研究了更多配置。 关于列,该模型适合Windows或Dockerized Linux(Windows / Linux列)。 我已经检查了在模型拟合之前将线程数设置为1还是允许其采用默认值(列:BLAS.set_num_threads(1))。
+---------------+---------------+-------------------------+--------------+----------+------------+
| Windows/Linux | Julia version | BLAS.set_num_threads(1) | Pre-fit time | Fit time | Total time |
| | (MixedModels) | | | | |
+---------------+---------------+-------------------------+--------------+----------+------------+
| | 0.3.12(0.3.22)| No | 38 sec | 14 sec | 52 sec |
| +---------------+-------------------------+--------------+----------+------------+
| Windows | 1.2 (2.2.0) | No | 20 sec | 301 sec | 321 sec |
+---------------+---------------+-------------------------+--------------+----------+------------+
| | 1.2 (2.2.0) | No | 21 sec | 108 sec | 129 sec |
| +---------------+-------------------------+--------------+----------+------------+
| | 1.2 (2.2.0) | Yes | 25 sec | 55 sec | 80 sec |
| Linux Docker +---------------+-------------------------+--------------+----------+------------+
| | 1.4 (2.2.0) | No | 25 sec | 108 sec | 133 sec |
| +---------------+-------------------------+--------------+----------+------------+
| | 1.4 (2.2.0) | Yes | 24 sec | 57 sec | 81 sec |
+---------------+---------------+-------------------------+--------------+----------+------------+
考虑到我多次运行模型,最终朱莉娅0.3.12与其余方法之间存在数小时的差异。 即使通过使用Julia 1.2在Linux中运行模型并将线程数设置为1,该过程也要花费50%的时间。 有谁知道这种差异源自何处?是否有一种方法可以加快Julia 1.2的拟合过程,或使其与Julia 0.3.12具有可比性?
这是Windows 2012服务器,带有CPU:Intel Xeon @ 3.5GHz E5-2637 v3(4核; 8个线程)和64 GB RAM。 Windows和Linux运行都在同一服务器上执行。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)