我使用Julia的GLM
包实现了带交互项的回归模型:
Reg = lm(@formula(dep_var ~ var1&var2&var3), data, true)
。
拟合这个公式需要大量的RAM(>80 GB),但是我注意到计算是在一个核心上进行的,尽管我的操作系统(x86_64-pc-linux-gnu)有 8 个 CPU 核心。
是否可能使用多进程/并行化方法实现线性回归?
我认为这也可能改善模型运行时间。
我使用Julia的GLM
包实现了带交互项的回归模型:
Reg = lm(@formula(dep_var ~ var1&var2&var3), data, true)
。
拟合这个公式需要大量的RAM(>80 GB),但是我注意到计算是在一个核心上进行的,尽管我的操作系统(x86_64-pc-linux-gnu)有 8 个 CPU 核心。
是否可能使用多进程/并行化方法实现线性回归?
我认为这也可能改善模型运行时间。
拟合回归模型基本上是进行大量矩阵运算。默认情况下,Julia使用BLAS,您可以尝试将其配置为多线程的最简单方法是在多线程环境下运行Julia并设置BLAS.set_num_threads()
配置。
在启动Julia之前,请运行:
set JULIA_NUM_THREADS=4
或者在Linux上
export JULIA_NUM_THREADS=4
一旦启动Julia,请运行该命令。
BLAS.set_num_threads(4)
BLAS.set_num_threads(4)
对我没有起作用 - 仍然只使用一个 CPU 核心,并且 Zabbix 监控显示内存使用量增加。此外,模型运行时间增加了约一分钟。 - red_quark
5000 x 5000
的矩阵,看看你的机器是否只使用了一个核心。 - Colin T Bowers