大型prob的Python n_作业

大型prob的Python n_作业,python,scikit-learn,multiprocessing,Python,Scikit Learn,Multiprocessing,当我在cross\u val\u score()中使用参数n\u jobs时 当我的数据规模较小时,它工作得很好,但当我扩大数据规模时,多处理似乎不起作用 这怎么可能 附言:我使用IPythonn\u jobs来完成工作并提供帮助 鉴于您的“小规模”多处理经验令人满意,n_作业没有理由停止在更大规模上加速实际处理 机器学习处理管道在许多情况下表现出多项式复杂性,O(nf)其中N是观测数据集(X)中的示例数,f在各种论文中被引用,用于各种学习算法,不少于2+ 随着数据集大小的增长,计算时间将以多项

当我在
cross\u val\u score()中使用参数
n\u jobs

当我的数据规模较小时,它工作得很好,但当我扩大数据规模时,
多处理
似乎不起作用

这怎么可能

附言:我使用IPython

n\u jobs
来完成工作并提供帮助 鉴于您的“小规模”
多处理
经验令人满意,
n_作业
没有理由停止在更大规模上加速实际处理

机器学习处理管道在许多情况下表现出多项式复杂性,O(nf)其中N是观测数据集(X)中的示例数,f在各种论文中被引用,用于各种学习算法,不少于2+

随着数据集大小的增长,计算时间将以多项式形式扩展。 然而,即使是
n_工作
也可以(在大多数乐观的情况下)减少增长,但减少的幅度不超过
1/{2,3,4,…,8,…,}

(但由于以下原因,该恒定系数进一步显著降低)(参考下图),这取决于在此类
n_作业上可以并行运行的工作量有多少
v/s无论要启动和运行多少个作业,仍有多少工作是串行执行的。调整O/s进程优先级会有所帮助,但大型
n
-s仍然会大量增加,因此在这里应用的时间越多越好)

另外一些不利影响来自于分配复制数据结构的需要,因此[PSPACE]增加了本已痛苦的[PTIME]头痛

即使是最有前途的ML学习者,其复杂性的[时间]维度也会增长O(N log(N))


因此,
n\u工作
总是很有帮助, 如果不使用
n_作业
,您将不得不等待更长的时间,只需尝试对
n_作业=1
n_作业=-1
运行相同的问题即可

无论如何,请继续关注。AI/ML域充满了[*时间,*空间],其中
*
不仅是多项式,正如您迄今为止所经历的那样,而且是指数的许多倍,所以准备好与龙搏斗:o)


后记: 好消息是,对于先进的AI/ML处理,现代技术可以提供基础设施,这些基础设施具有合理数量的TB RAM,用于战斗[PSPACE]/[EXPSPACE]前线,同时有效地利用数千个真实CPU,因此,如果研究需要加上资金允许,你可以创造多达数千个工作岗位

是的,成千上万的人——因此,与不利用此类基础设施相比,人们可以更快地收到
scikit
结果(云不是这里的答案…(如果您需要这样的高性能基础设施来解决您的大规模问题,请不要犹豫给我留言,好吗?)

(如果过程图的阿姆达尔定律视图可能的加速比对缩放有意义)


图片很好,
但是可以看到“闻到烟味”的绝对数字
[hr]v/s[min]:

最后但并非最不重要的一点是,我从标准的
python
运行所有AI/ML引擎,从未在生产中从iPython运行过。使用
n_jobs=-1
和其他加速技巧,全局模型搜索和超参数优化管道仍然会跨越许多天,以稳健地将t转化为最佳泛化模型的全局最小值。

感谢您的回复。感谢您的回复。但我真正的问题是,当数据规模太大时,n_jobs会停止工作。它创建子进程,但它们不工作,不占用CPU资源。也许它检测到我的内存不足并停止了?[步骤0:]在iPython之外运行相同的场景(IDE-GUI/核心引擎)通信监视器过去常常挂断,这就是为什么我停止在大规模作业中使用iPython)[步骤1:]为假设粗略(相反)配置内存分配(O/s profiler或PSUTIL)-指示您是否介意重新浏览您的帖子,查看您的问题的答案,并单击[接受]选择最佳答案?这是StackOverflow的工作方式,也是会员奖励知识赞助者的方式,也有助于指导更多的读者。
>>> procPAR_SEQ_percent = 1.00
                         #100 % PAR:

                       n_jobs:    Speedup x|       [hr] =          [s] =        [min]
-----------------------------:-------------|------------=--------------=-------------
                            1:   1.000000 x| 3.000 [hr] = 10800.00 [s] = 180.00 [min]
                            2:   1.999985 x| 1.500 [hr] =  5400.04 [s] =  90.00 [min]
                            4:   3.999941 x| 0.750 [hr] =  2700.04 [s] =  45.00 [min]
                            8:   7.999763 x| 0.375 [hr] =  1350.04 [s] =  22.50 [min]
                           16:  15.999052 x| 0.188 [hr] =   675.04 [s] =  11.25 [min]
                           32:  31.996208 x| 0.094 [hr] =   337.54 [s] =   5.63 [min]
                           64:  63.984833 x| 0.047 [hr] =   168.79 [s] =   2.81 [min]
                          128: 127.939347 x| 0.023 [hr] =    84.42 [s] =   1.41 [min]
                          256: 255.757504 x| 0.012 [hr] =    42.23 [s] =   0.70 [min]
                          512: 511.030934 x| 0.006 [hr] =    21.13 [s] =   0.35 [min]
                         1024: 996.309963 x| 0.003 [hr] =    10.84 [s] =   0.18 [min]
                         2048: 996.309963 x| 0.003 [hr] =    10.84 [s] =   0.18 [min]
                         4096: 996.309963 x| 0.003 [hr] =    10.84 [s] =   0.18 [min]
                         8192: 996.309963 x| 0.003 [hr] =    10.84 [s] =   0.18 [min]

>>> procPAR_SEQ_percent = 0.99
                          # 99 % PAR:


                       n_jobs:   Speedup x|       [hr] =          [s] =        [min]
-----------------------------:------------|------------=--------------=-------------
                            1:  1.000000 x| 3.000 [hr] = 10800.00 [s] = 180.00 [min]
                            2:  1.980183 x| 1.530 [hr] =  5507.50 [s] =  91.79 [min]
                            4:  3.883439 x| 0.795 [hr] =  2861.23 [s] =  47.69 [min]
                            8:  7.476428 x| 0.427 [hr] =  1538.09 [s] =  25.63 [min]
                           16: 13.912327 x| 0.243 [hr] =   876.53 [s] =  14.61 [min]
                           32: 24.425271 x| 0.152 [hr] =   545.74 [s] =   9.10 [min]
                           64: 39.258095 x| 0.106 [hr] =   380.35 [s] =   6.34 [min]
                          128: 56.375891 x| 0.083 [hr] =   297.66 [s] =   4.96 [min]
                          256: 72.093421 x| 0.071 [hr] =   256.31 [s] =   4.27 [min]
                          512: 83.771055 x| 0.065 [hr] =   235.63 [s] =   3.93 [min]
                         1024: 90.961156 x| 0.063 [hr] =   225.54 [s] =   3.76 [min]
                         2048: 90.961156 x| 0.063 [hr] =   225.54 [s] =   3.76 [min]
                         4096: 90.961156 x| 0.063 [hr] =   225.54 [s] =   3.76 [min]
                         8192: 90.961156 x| 0.063 [hr] =   225.54 [s] =   3.76 [min]

 >>> procPAR_SEQ_percent = 0.98
                           # 98 % PAR:


                       n_jobs:   Speedup x|       [hr] =          [s] =        [min]
-----------------------------:------------|------------=--------------=-------------
                            1:  1.000000 x| 3.000 [hr] = 10800.00 [s] = 180.00 [min]
                            2:  1.960770 x| 1.559 [hr] =  5613.88 [s] =  93.56 [min]
                            4:  3.773532 x| 0.839 [hr] =  3020.80 [s] =  50.35 [min]
                            8:  7.017361 x| 0.479 [hr] =  1724.26 [s] =  28.74 [min]
                           16: 12.307131 x| 0.299 [hr] =  1075.99 [s] =  17.93 [min]
                           32: 19.751641 x| 0.209 [hr] =   751.85 [s] =  12.53 [min]
                           64: 28.315614 x| 0.164 [hr] =   589.79 [s] =   9.83 [min]
                          128: 36.153350 x| 0.141 [hr] =   508.75 [s] =   8.48 [min]
                          256: 41.960691 x| 0.130 [hr] =   468.24 [s] =   7.80 [min]
                          512: 45.625087 x| 0.124 [hr] =   447.98 [s] =   7.47 [min]
                         1024: 47.656029 x| 0.122 [hr] =   438.09 [s] =   7.30 [min]
                         2048: 47.656029 x| 0.122 [hr] =   438.09 [s] =   7.30 [min]
                         4096: 47.656029 x| 0.122 [hr] =   438.09 [s] =   7.30 [min]
                         8192: 47.656029 x| 0.122 [hr] =   438.09 [s] =   7.30 [min]