我正在尝试使用caret
在具有8个CPU核心的Ubuntu机器上使用glmnet
实现来交叉验证弹性网络模型。 32 GB的RAM。当我顺序训练时,我在一个核心上最大化CPU使用率,但平均使用50%的内存。
当我使用doMC(cores = xxx)
时,我是否需要担心只注册xxx = floor(100 / y)内核,其中y是使用单个内核时模型的内存使用量(%) ),为了不用完内存?
caret
是否具有允许其计算出最大值的任何启发式方法。要使用的核心数量?
我是否可以使用任何一套启发式方法来动态调整核心数量,以便在不同大小的数据和模型复杂性中最佳地使用我的计算资源?
FWIW,试图使用8个核心使我的机器没有响应。显然,caret
不会检查产生xxx
进程是否可能存在问题。然后,我如何动态选择核心数?
答案 0 :(得分:2)
显然,插入符号不会检查产生xxx进程是否可能存在问题。
真;它无法预测您计算机的未来性能。
您应该了解在顺序运行时用于建模的内存量。您可以开始训练并使用top
或其他方法来估计使用的ram数量然后终止该过程。如果按顺序依次使用 X GB的RAM,则在 M 内核上运行将需要 X(M + 1) GB的RAM。